SO-ARM101 è una piattaforma di braccio robotico open source ad alte prestazioni pensata per istruzione, ricerca e appassionati. Pienamente compatibile con l'ecosistema LeRobot di Hugging Face, supporta l'intero flusso di lavoro dell'apprendimento di manipolazione robotica – raccolta dati, addestramento dei modelli e inferenza AI – ed è la scelta ideale per imparare la robotica e sviluppare applicazioni di robot AI.
📋 Caratteristiche principali
- Design a 6 gradi di libertà con controllo del movimento flessibile
- Hardware e software completamente open source, liberamente personalizzabili ed estendibili
- Compatibilità perfetta con il framework LeRobot; supporta diversi algoritmi di apprendimento robotico (ACT, Diffusion, Pi0, SmolVLA, ecc.)
- Tutorial ed esempi completi inclusi, avvio rapido anche senza esperienza
- Supporta l'intero flusso: teleoperazione master-slave, feedback visivo multi-camera, registrazione di dataset e addestramento dei modelli
🔧 Specifiche hardware
| Parametro | Dettaglio |
|---|---|
| Gradi di libertà | 6 assi + pinza |
| Carico | 500 g |
| Precisione di ripetibilità | ±0,1 mm |
| Raggio di lavoro | 520 mm |
| Tipo di servo | Servo a bus seriale |
| Requisiti di alimentazione | Braccio master: 5 V 6 A, braccio slave: 12 V 5 A |
| Interfaccia di comunicazione | USB-C |
🚀 Avvio rapido
1. Preparazione dell'ambiente
SO-ARM101 supporta due piattaforme: Ubuntu x86 e Jetson Orin:
Requisiti per l'ambiente Ubuntu x86:
- Ubuntu 22.04
- CUDA 12+
- Python 3.10
- Torch 2.6+
Requisiti per l'ambiente Jetson Orin:
- JetPack 6.0+
- Python 3.10
- Torch 2.5.0a0+
2. Installazione delle dipendenze
# 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. Controllo del braccio robotico
Individuazione della porta
# Find USB port corresponding to the robotic arm
lerobot-find-port
Come indicato, collega e scollega il cavo USB del braccio per ottenere il numero di porta corrispondente (di solito /dev/ttyACM0 e /dev/ttyACM1)
Autorizzazione della porta
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1
Calibrazione del braccio
# 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
Come indicato, porta il braccio in posizione neutra, quindi esegui la calibrazione della corsa di ogni giunto.
🎮 Esempi di funzioni principali
1. Teleoperazione master-slave
# 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. Registrazione del dataset
# 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
I dati registrati vengono salvati nella directory ~/.cache/huggingface/lerobot.
3. Addestramento del modello (algoritmo 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
I pesi del modello addestrato vengono salvati nella directory outputs/train/act_so101_test/checkpoints.
4. Esecuzione dell'inferenza AI
# 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
📚 Risorse correlate
- JuxiTechnology GitHub - Ottieni il codice open source e i materiali hardware più recenti
- Lark Wiki - Consulta la documentazione ufficiale completa e i tutorial
🛠️ Domande frequenti
- D: Durante l'esecuzione viene segnalato che la GPU non è disponibile?
- R: Assicurati di aver installato una versione di PyTorch compatibile con la versione di CUDA; sulle piattaforme Jetson è necessario installare la versione dedicata di PyTorch per Jetson.
- D: Durante la teleoperazione la tastiera non risponde?
- R: Prova a eseguire il downgrade di pynput alla versione 1.6.8:
pip install pynput==1.6.8 - D: Cosa fare se la calibrazione fallisce?
- R: Controlla che i permessi della porta seriale siano corretti, elimina i vecchi file di calibrazione nella directory ~/.cache/huggingface/lerobot/calibration e riprova.
Il braccio SO-ARM101 offre un supporto completo dell'ecosistema per l'apprendimento e lo sviluppo robotico. Che si tratti di istruzione, ricerca o hobbistica, chiunque può sviluppare rapidamente le proprie applicazioni robotiche.

