Demostración de agarre visual con reBot Arm B601-DM

Percepción de profundidad · Detección de objetos · Calibración mano-ojo · Agarre autónomo · Totalmente de código abierto
YOLO es una familia ampliamente utilizada de modelos de detección de objetos en tiempo real que puede localizar y clasificar objetivos en una sola pasada hacia adelante. Este tutorial usa YOLO junto con la cámara de profundidad Orbbec Gemini 2 para construir una demostración funcional de agarre visual de escritorio para el reBot Arm B601-DM, que cubre la configuración del entorno, la integración de la cámara, la calibración mano-ojo y la validación del agarre.
Características del proyecto
-
Estimación directa de la pose de agarre desde YOLO + OBB
El flujo de trabajo usa directamente las cajas de detección o los rectángulos de área mínima OBB y toma el eje corto como la dirección de apertura de la pinza, evitando el procesamiento complejo de nubes de puntos 3D. -
Integración ligera del brazo robótico y la pinza
El script principal de agarre reutiliza la interfazRebotArme integra IK, control de trayectoria y la máquina de estados de la pinza. -
Código abierto y extensible
Todo el código fuente es abierto y los usuarios pueden personalizar los algoritmos de control y los efectos según sus propias necesidades.
Especificaciones
El hardware para este tutorial es proporcionado por Seeed Studio
| Parámetro | Especificación |
|---|---|
| Modelo de brazo robótico | reBot Arm B601-DM |
| Grados de libertad | 6-DOF + pinza |
| Modelo de cámara | Orbbec Gemini 2 |
| Método de detección | YOLO + rectángulo de área mínima OBB |
| Método de comunicación | Bus CAN mediante adaptador USB2CAN; conexión de cámara USB 3.0 |
| Tensión de funcionamiento | 24V CC |
| Plataforma host | PC con Ubuntu 22.04+ |
| Versión recomendada de Python | Python 3.10 |
Lista de materiales (BOM)
| Componente | Cantidad | Incluido |
|---|---|---|
| Brazo robótico reBot Arm B601-DM | 1 | ✅ |
| Pinza | 1 | ✅ |
| Puente serie USB2CAN | 1 | ✅ |
| Adaptador de corriente (24V) | 1 | ✅ |
| Cable USB-C / comunicación | 1 | ✅ |
| Cámara de profundidad Orbbec Gemini 2 | 1 | ✅ |
| Conector de cámara Gemini 2 / soporte de montaje | 1 | ✅ |
Cableado
- Conecta la Gemini 2 al host mediante USB 3.0.
- Conecta el adaptador USB2CAN al bus CAN del brazo.
- Asegúrate de que la fuente de alimentación de 24V, la cámara y el brazo robótico estén conectados de forma segura.
- Establece los permisos:
sudo chmod a+rw /dev/bus/usb/*/*
sudo chmod 666 /dev/ttyUSB0
Requisitos del entorno
| Elemento | Requisito |
|---|---|
| Sistema operativo | Ubuntu 22.04+ |
| Python | 3.10 |
| Entorno recomendado | conda |
| Carpeta de trabajo recomendada | rebot_grasp |
| Entorno conda recomendado | rebotarm |
Pasos de instalación
Paso 0. Completa primero la preparación básica del brazo robótico
Antes de comenzar este tutorial, termina el contenido de reBot Arm B601-DM Quick Start, incluyendo el montaje del brazo robótico, la inicialización del punto cero, la configuración de los ID de los motores y las comprobaciones básicas de conectividad.
Paso 1. Clonar el repositorio
git clone https://github.com/Seeed-Projects/reBot-DevArm-Grasp.git rebot_grasp
cd rebot_grasp
Paso 2. Crear el entorno de Python
conda create -n rebotarm python=3.10 -y
conda activate rebotarm
Paso 3. Instalar las dependencias del proyecto
pip install -r requirements.txt
Paso 4. Instalar el SDK del brazo robótico
git clone https://github.com/vectorBH6/reBotArm_control_py.git sdk/reBotArm_control_py
cd sdk/reBotArm_control_py
pip install -e .
cd ../..
Paso 5. Instalar el SDK Orbbec Gemini 2
Este proyecto depende de pyorbbecsdk. El repositorio no incluye sdk/pyorbbecsdk por defecto, por lo que debes clonar tú mismo el repositorio oficial dentro de sdk/ o instalarlo de otra manera.
sudo apt-get update
sudo apt-get install -y cmake build-essential libusb-1.0-0-dev
cd sdk
git clone https://github.com/orbbec/pyorbbecsdk.git
cd pyorbbecsdk
pip install -e .
También puedes usar el mirror de Gitee:
cd sdk
git clone https://gitee.com/orbbecdeveloper/pyorbbecsdk.git
cd pyorbbecsdk
pip install -e .
Para el primer uso, se recomienda instalar las reglas udev:
sudo bash scripts/install_udev_rules.sh
sudo udevadm control --reload-rules
sudo udevadm trigger
Paso 6. Verificar las dependencias
python -c "import pyorbbecsdk; print('pyorbbecsdk OK')"
python -c "import motorbridge; print('motorbridge OK')"
Para el primer uso de la cámara Orbbec, se recomienda ejecutar scripts/install_udev_rules.sh dentro de tu directorio pyorbbecsdk instalado; de lo contrario, es posible que la cámara no se abra correctamente.
Calibración mano-ojo
Antes de ejecutar el flujo completo de agarre, completa primero la calibración mano-ojo Eye-in-Hand.
python scripts/collect_handeye_eih.py
Antes de ejecutarlo, asegúrate de que el siguiente parámetro de tamaño de ArUco en config/default.yaml coincida con el marcador impreso real:
calibration:
aruco:
marker_length_m: 0.1
En el modo automático, el brazo recorre 50 poses preestablecidas y registra una muestra siempre que el marcador ArUco se detecta de forma estable. Incluso si interrumpes el proceso con c o q, el script sigue intentando calcular el resultado de calibración a partir de las muestras recopiladas.
Si quieres mover el brazo robótico manualmente durante la recopilación, usa el modo manual:
python scripts/collect_handeye_eih.py --manual
En el modo manual, el brazo entra en modo de compensación de gravedad. Mueve el efector final a un ángulo de visión adecuado, pulsa Enter para capturar y pulsa c o q para finalizar y calcular el resultado.
El resultado de la calibración se guarda en:
config/calibration/orbbec_gemini2/hand_eye.npz
Recuento de muestras recomendado:
- Mínimo: 5 muestras
- Recomendado: al menos 15 muestras
Ejecución y depuración
1. Verificar solo la detección de objetos
python scripts/object_detection.py
Si necesitas cambiar el modelo de detección o las clases, modifica config/default.yaml:
yolo:
model_name: "yoloe-26l-seg.pt"
device: "cpu"
use_world: true
custom_classes:
- "yellow banana"
- "water bottle"
- "cup"
Este paso es útil para confirmar:
- Que la cámara se abre correctamente
- Que el modelo YOLO se carga correctamente
- Que la detección de objetos con YOLO funciona como se espera
2. Verificar solo la estimación de agarre
python scripts/ordinary_grasp_pipeline.py
Si necesitas ajustar la frecuencia de inferencia de agarre o la distancia de retirada previa al agarre, modifica:
grasp_pipeline:
infer_every_live: 3
grasp:
depth_quantile: 0.6
pregrasp_offset_m: 0.080
Este script no se conecta al brazo robótico. Solo se usa para verificar:
- Si el OBB o el rectángulo de área mínima es razonable
- Si el punto de agarre se encuentra cerca del área central del objetivo
- Si la dirección del eje corto coincide con la dirección de apertura esperada de la pinza
Controles clave:
- Botón izquierdo del ratón: inspeccionar la profundidad en el píxel seleccionado
G: imprimir la pose de agarre óptima actualQ/Esc: salir
3. Ejecutar el programa principal de agarre
python scripts/main.py
Si solo quieres validar la pose objetivo sin mover el brazo robótico:
python scripts/main.py --dry-run
Se recomienda verificar primero la pose y el espacio de trabajo alcanzable con --dry-run antes de ejecutar un agarre real.
Si reBotArm_control_py no está en la ubicación predeterminada, especifícalo en config/default.yaml:
robot:
repo_root: null
Mantenerlo como null suele ser suficiente porque el programa intentará detectar automáticamente primero sdk/reBotArm_control_py.
Flujo principal del programa:
- Inicializar el brazo robótico y la pinza
- Mover a la pose de preparado. Si quieres cambiar la pose inicial de preparado, modifica
config/default.yaml:
robot:
ready_pose:
x: 0.3
y: 0.0
z: 0.3
roll: 0.0
pitch: 1.0
duration: 3.0
- Detectar en tiempo real los objetivos sobre la mesa
- Estimar la pose de agarre a partir del eje corto
- Pulsar
Gpara capturar el fotograma actual y ejecutar el agarre
Teclas en tiempo de ejecución:
G: agarrar el mejor objetivo actualR: reanudar la vista previa en vivoQ/Esc: salir
Preguntas frecuentes (FAQ)
1. ModuleNotFoundError: No module named 'motorbridge'
Esto normalmente significa que las dependencias del SDK del brazo robótico no están instaladas en el entorno actual de Python. Por favor, comprueba:
conda activate rebotarm
pip install -r requirements.txt
cd sdk/reBotArm_control_py && pip install -e .
2. Al pulsar G no se ejecuta el agarre
Causas comunes:
hand_eye.npzno existe- El modo de calibración mano-ojo no es
eye_in_hand - La pose objetivo no es alcanzable por IK
Se recomienda ejecutar:
python scripts/main.py --dry-run
3. La profundidad de agarre es inestable
Puedes intentar ajustar:
grasp_pipeline.grasp.depth_quantile- La altura de instalación de la cámara con respecto al área de trabajo
- Las propiedades reflectantes de la superficie objetivo
Contacto
- Soporte técnico: Submit an Issue
- Página del proyecto: GitHub
- Foro: Seeed Studio Forum
Referencias
- Guía rápida de inicio de reBot Arm B601-DM
- Primeros pasos con Pinocchio y MeshCat para reBot Arm B601-DM
- Primeros pasos con reBot Arm B601-DM basado en LeRobot y reBot 102 Leader
- Página de producto de Orbbec Gemini 2
- Orbbec SDK v2
- Guía de la API de Orbbec SDK v2
- Repositorio de pyorbbecsdk
- Documentación de pyorbbecsdk
- Orbbec ROS2 Wrapper