SO-ARM101 – Introduction au produit

SO-ARM101 Bras robotique open source – Introduction au produit
Language

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.

Cet article est un résumé. Lisez la documentation technique complète sur le Wiki.

Lire l'article complet sur le Wiki →

Ouvrir dans le Wiki Feishu