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.

