SO-ARM101 est une plateforme de bras robotique open source haute performance destinée à l'éducation, à la recherche et aux passionnés. Parfaitement compatible avec l'écosystème LeRobot de Hugging Face, elle prend en charge l'ensemble du processus d'apprentissage de manipulation robotique – collecte de données, entraînement de modèles et inférence IA – et constitue le choix idéal pour apprendre la robotique et développer des applications de robots IA.
📋 Caractéristiques principales
- Conception à 6 degrés de liberté avec contrôle de mouvement flexible
- Matériel et logiciel entièrement open source, librement personnalisables et extensibles
- Compatibilité parfaite avec le framework LeRobot, prise en charge de plusieurs algorithmes d'apprentissage robotique (ACT, Diffusion, Pi0, SmolVLA, etc.)
- Tutoriels et exemples complets fournis, prise en main rapide même pour les débutants
- Prend en charge tout le processus : téléopération maître-esclave, retour visuel multi-caméras, enregistrement de jeux de données et entraînement de modèles
🔧 Spécifications matérielles
| Paramètre | Détail |
|---|---|
| Degrés de liberté | 6 axes + pince |
| Charge utile | 500 g |
| Précision de repositionnement | ±0,1 mm |
| Rayon de travail | 520 mm |
| Type de servo | Servos à bus série |
| Alimentation requise | Bras maître : 5 V 6 A, bras esclave : 12 V 5 A |
| Interface de communication | USB-C |
🚀 Démarrage rapide
1. Préparation de l'environnement
SO-ARM101 prend en charge deux plateformes : Ubuntu x86 et Jetson Orin :
Configuration requise pour Ubuntu x86 :
- Ubuntu 22.04
- CUDA 12+
- Python 3.10
- Torch 2.6+
Configuration requise pour Jetson Orin :
- JetPack 6.0+
- Python 3.10
- Torch 2.5.0a0+
2. Installation des dépendances
# Install Miniconda (Ubuntu x86 version)
mkdir -p ~/miniconda3
cd miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all
# Create and activate environment
conda create -y -n lerobot python=3.10
conda activate lerobot
# Clone code repository
git clone https://github.com/Juxi-Technology/lerobot.git
# Install dependencies
conda install ffmpeg -c conda-forge
cd ~/lerobot && pip install -e ".[feetech]"
3. Contrôle du bras robotique
Recherche du port
# Find USB port corresponding to the robotic arm
lerobot-find-port
Branchez et débranchez le câble USB du bras comme demandé pour obtenir le numéro de port correspondant (généralement /dev/ttyACM0 et /dev/ttyACM1)
Autorisation du port
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1
Calibration du bras
# Calibrate slave arm
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm
# Calibrate master arm
lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm
Déplacez le bras en position neutre comme demandé, puis effectuez l'étalonnage de course de chaque articulation.
🎮 Exemples de fonctions principales
1. Téléopération maître-esclave
# Basic teleoperation (without camera)
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm
# Teleoperation with camera display
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}}" \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm \
--display_data=true
2. Enregistrement du jeu de données
# Record dataset locally
lerobot-record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}}" \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm \
--display_data=true \
--dataset.repo_id=juxi/so101_test \
--dataset.num_episodes=5 \
--dataset.single_task="Put the blue cube on the black box" \
--dataset.push_to_hub=false \
--dataset.episode_time_s=30 \
--dataset.reset_time_s=30
Les données enregistrées sont stockées dans le répertoire ~/.cache/huggingface/lerobot.
3. Entraînement du modèle (algorithme ACT)
# Train with local dataset
lerobot-train \
--dataset.repo_id=juxi/so101_test \
--policy.type=act \
--output_dir=outputs/train/act_so101_test \
--job_name=act_so101_test \
--policy.device=cuda \
--wandb.enable=false \
--policy.push_to_hub=false \
--steps=300000
Les poids du modèle entraîné sont stockés dans le répertoire outputs/train/act_so101_test/checkpoints.
4. Exécution de l'inférence IA
# Control robotic arm with trained model
lerobot-record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30,fourcc: \"MJPG\"}}" \
--robot.id=my_awesome_follower_arm \
--display_data=false \
--dataset.repo_id=juxi/eval_test \
--dataset.single_task="Put the blue cube on the black box" \
--policy.path=outputs/train/act_so101_test/checkpoints/last/pretrained_model
📚 Ressources associées
- JuxiTechnology GitHub - Obtenez le code open source et la documentation matérielle les plus récents
- Lark Wiki - Consultez la documentation officielle complète et les tutoriels
🛠️ Questions fréquentes
- Q : L'exécution signale que le GPU n'est pas disponible ?
- R : Assurez-vous d'avoir installé une version de PyTorch correspondant à votre version de CUDA ; sur les plateformes Jetson, installez la version spécifique de PyTorch pour Jetson.
- Q : Le clavier ne répond pas pendant la téléopération ?
- R : Essayez de rétrograder la version de pynput vers 1.6.8 :
pip install pynput==1.6.8 - Q : Que faire si l'étalonnage échoue ?
- R : Vérifiez que les autorisations du port série sont correctes, supprimez les anciens fichiers d'étalonnage du répertoire ~/.cache/huggingface/lerobot/calibration, puis réessayez.
Le bras SO-ARM101 offre un support d'écosystème complet pour l'apprentissage et le développement robotique. Que ce soit pour l'éducation, la recherche ou les passionnés, chacun peut rapidement développer ses propres applications robotiques.

