SO-ARM101 – Introducción del producto

SO-ARM101 Brazo robótico de código abierto – Introducción del producto
Language

SO-ARM101 es una plataforma de brazo robótico de código abierto de alto rendimiento pensada para la educación, la investigación y los aficionados. Totalmente compatible con el ecosistema LeRobot de Hugging Face, admite todo el flujo de trabajo del aprendizaje de manipulación robótica (recopilación de datos, entrenamiento de modelos e inferencia de IA) y es la opción ideal para aprender robótica y desarrollar aplicaciones de robots con IA.

📋 Características principales

  • Diseño de 6 grados de libertad con control de movimiento flexible
  • Hardware y software totalmente de código abierto, libremente personalizables y ampliables
  • Compatibilidad perfecta con el framework LeRobot; admite varios algoritmos de aprendizaje robótico (ACT, Diffusion, Pi0, SmolVLA, etc.)
  • Tutoriales y ejemplos completos incluidos, puesta en marcha rápida incluso sin experiencia
  • Admite todo el proceso: teleoperación maestro-esclavo, retroalimentación visual con varias cámaras, grabación de conjuntos de datos y entrenamiento de modelos

🔧 Especificaciones de hardware

Parámetro Detalle
Grados de libertad 6 ejes + pinza
Carga útil 500 g
Precisión de repetibilidad ±0,1 mm
Radio de trabajo 520 mm
Tipo de servo Servos de bus serie
Requisitos de alimentación Brazo maestro: 5 V 6 A, brazo esclavo: 12 V 5 A
Interfaz de comunicación USB-C

🚀 Inicio rápido

1. Preparación del entorno

SO-ARM101 admite dos plataformas: Ubuntu x86 y Jetson Orin:

Requisitos del entorno Ubuntu x86:

  • Ubuntu 22.04
  • CUDA 12+
  • Python 3.10
  • Torch 2.6+

Requisitos del entorno Jetson Orin:

  • JetPack 6.0+
  • Python 3.10
  • Torch 2.5.0a0+

2. Instalación de dependencias


# 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. Control del brazo robótico

Búsqueda del puerto


# Find USB port corresponding to the robotic arm
lerobot-find-port
            

Según las indicaciones, conecta y desconecta el cable USB del brazo para obtener el número de puerto correspondiente (normalmente /dev/ttyACM0 y /dev/ttyACM1)

Autorización del puerto


sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1
            

Calibración del brazo


# 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
            

Según las indicaciones, mueve el brazo a la posición neutra y luego completa la calibración del recorrido de cada articulación.

🎮 Ejemplos de funciones principales

1. Teleoperación maestro-esclavo


# 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. Grabación del conjunto de datos


# 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
            

Los datos grabados se guardan en el directorio ~/.cache/huggingface/lerobot.

3. Entrenamiento del modelo (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
            

Los pesos del modelo entrenado se guardan en el directorio outputs/train/act_so101_test/checkpoints.

4. Ejecución de inferencia de 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
            

📚 Recursos relacionados

  • JuxiTechnology GitHub - Obtén el código de código abierto y los materiales de hardware más recientes
  • Lark Wiki - Consulta la documentación oficial completa y los tutoriales

🛠️ Preguntas frecuentes

P: ¿La ejecución indica que la GPU no está disponible?
R: Asegúrate de instalar la versión de PyTorch que coincida con tu versión de CUDA; en plataformas Jetson hay que instalar la versión de PyTorch específica para Jetson.
P: ¿El teclado no responde durante la teleoperación?
R: Prueba a degradar la versión de pynput a 1.6.8:pip install pynput==1.6.8
P: ¿Qué hago si la calibración falla?
R: Comprueba que los permisos del puerto serie sean correctos, elimina los archivos de calibración antiguos del directorio ~/.cache/huggingface/lerobot/calibration y vuelve a intentarlo.

El brazo SO-ARM101 ofrece un soporte de ecosistema completo para el aprendizaje y el desarrollo robótico. Tanto en educación, investigación como para aficionados, cualquiera puede desarrollar rápidamente sus propias aplicaciones robóticas.

Este artículo es un resumen. Lee la documentación técnica completa en el Wiki.

Leer el artículo completo en el Wiki →

Abrir en el Wiki de Feishu