SO-ARM101 — Introdução ao Produto

SO-ARM101 Braço Robótico Open Source - Introdução ao Produto
Idioma

O SO-ARM101 é uma plataforma de braço robótico open source de alto desempenho voltada para educação, pesquisa e entusiastas. Totalmente compatível com o ecossistema Hugging Face LeRobot, oferece suporte a todo o fluxo de trabalho de aprendizado de robótica, coleta de dados, treinamento de modelos e inferência de IA. É a escolha ideal para aprender tecnologia de robótica e desenvolver aplicações de robôs com IA.

📋 Principais Características

  • Design com 6 graus de liberdade, com suporte a controle de movimento flexível
  • Hardware e software totalmente open source, com personalização e expansão livres
  • Totalmente compatível com o framework LeRobot, com suporte a diversos algoritmos de aprendizado de robótica (ACT, Diffusion, Pi0, SmolVLA, etc.)
  • Tutoriais e exemplos completos inclusos, iniciantes podem começar rapidamente
  • Suporta teleoperação mestre-escravo, feedback visual com múltiplas câmeras, gravação de datasets e todo o fluxo de treinamento de modelos

🔧 Especificações de Hardware

Parâmetro Detalhes
Graus de Liberdade 6 eixos + Garra
Carga Útil 500g
Precisão de Repetibilidade de Posicionamento ±0.1mm
Raio de Trabalho 520mm
Tipo de Servo Servo de Barramento Serial
Requisitos de Energia Braço mestre: 5V6A, braço escravo: 12V5A
Método de Comunicação USB-C

🚀 Início Rápido

1. Preparação do Ambiente

O SO-ARM101 suporta duas plataformas: Ubuntu x86 e Jetson Orin:

Requisitos de ambiente para Ubuntu x86:

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

Requisitos de ambiente para Jetson Orin:

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

2. Instalar Dependências


# Instalar o Miniconda (versão para Ubuntu x86)
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

# Criar e ativar o ambiente
conda create -y -n lerobot python=3.10
conda activate lerobot

# Clonar o repositório de código
git clone https://github.com/Juxi-Technology/lerobot.git

# Instalar dependências
conda install ffmpeg -c conda-forge
cd ~/lerobot && pip install -e ".[feetech]"
            

3. Controle do Braço Robótico

Detecção de Porta


# Encontrar a porta USB correspondente ao braço robótico
lerobot-find-port
            

Siga as instruções para conectar e desconectar o cabo USB do braço robótico e obter os números de porta correspondentes (normalmente /dev/ttyACM0 e /dev/ttyACM1)

Autorização de Porta


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

Calibração do Braço Robótico


# Calibrar o braço escravo
lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_awesome_follower_arm

# Calibrar o braço mestre
lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_awesome_leader_arm
            

Siga as instruções para mover o braço robótico até a posição neutra e conclua a calibração de curso de cada junta.

🎮 Exemplos das Principais Funções

1. Teleoperação Mestre-Escravo


# Teleoperação básica (sem câmera)
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

# Teleoperação com exibição da câmera
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. Gravação de Dataset


# Gravar dataset localmente
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
            

Os dados gravados serão salvos no diretório ~/.cache/huggingface/lerobot.

3. Treinamento de Modelo (Algoritmo ACT)


# Treinar com dataset local
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
            

Os pesos do modelo treinado serão salvos no diretório outputs/train/act_so101_test/checkpoints.

4. Execução de Inferência de IA


# Controlar o braço robótico com o modelo treinado
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 - Obtenha o código open source mais recente e materiais de hardware
  • Lark Wiki - Consulte a documentação oficial completa e os tutoriais

🛠️ Perguntas Frequentes

P: Aviso de GPU indisponível ao executar?
R: Certifique-se de que o PyTorch compatível com a versão do CUDA esteja instalado. A plataforma Jetson requer a versão dedicada do PyTorch para Jetson.
P: Teclado sem resposta durante a teleoperação?
R: Tente fazer downgrade da versão do pynput para 1.6.8: pip install pynput==1.6.8
P: O que fazer se a calibração falhar?
R: Verifique se as permissões da porta serial estão corretas, exclua os arquivos de calibração antigos do diretório ~/.cache/huggingface/lerobot/calibration e tente novamente.

O braço robótico SO-ARM101 oferece suporte completo de ecossistema para aprendizado e desenvolvimento em robótica. Seja para educação, pesquisa ou entusiastas individuais, você pode começar rapidamente e desenvolver suas próprias aplicações de robôs.

Este artigo é um resumo. Leia a documentação técnica completa no Wiki.

Ler Artigo Completo no Wiki →

Abrir no JuxiTech Wiki