SO-ARM101 – Introduzione al prodotto

SO-ARM101 Braccio robotico open source – Introduzione al prodotto
Language

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.

Questo articolo è un riassunto. Leggi la documentazione tecnica completa sul Wiki.

Leggi l'articolo completo sul Wiki →

Apri nel Wiki Feishu