
BrazoRobot
Brazo robótico de 5 ejes más pinza que primero aprende a moverse en un simulador físico y luego repite el movimiento en la mesa. Cinemática en Python, gemelo en MuJoCo, un ESP8266 de puente hacia los servos y una web con visor 3D del brazo real.
¿Qué es?
Un brazo robótico de 5 grados de libertad más pinza, de aluminio, montado sobre un kit Lynxmotion y movido por seis servos. Lo que lo hace mío no es el brazo, sino todo lo que va alrededor: la cinemática en Python, un gemelo del brazo en el simulador físico MuJoCo, un pequeño puente electrónico que traduce lo que calcula el portátil a movimiento real, y una web con un visor 3D donde se ve el brazo tal cual es, con sus piezas reales.
¿Por qué lo hice?
Quería aprender robótica primero en simulación y luego en la mesa. La idea es que el mismo código que mueve el brazo simulado mueva también el real, y medir cuánto se parecen. Por eso el cerebro está en el portátil y el microcontrolador solo obedece: recibe la posición de cada servo y la aplica.
Cómo funciona
Simulación
- Cinemática inversa: le dices dónde quieres la punta de la pinza y el brazo calcula cómo colocar cada articulación.
- Trayectorias suaves: los movimientos aceleran y frenan de forma progresiva, sin tirones.
- Mapa del alcance: hasta dónde llega el brazo y dónde deja de llegar.
- Demo de pick-and-place: el brazo simulado coge una goma de borrar y la deja en otro sitio, girando la muñeca antes de cerrar la pinza para agarrarla por el lado corto.
Del portátil al brazo
Un ESP8266 conectado por USB recibe las órdenes del portátil y las pasa a los servos a través de una controladora PWM. Cada servo tiene su propio rango, y todo movimiento lleva una rampa para arrancar y parar suave. Existe una versión simulada del puente para probar el software sin tener el brazo enchufado.
Web de control
Una herramienta web, ejecutada en el propio portátil, para calibrar los servos, grabar secuencias moviendo el brazo a mano, ajustar la geometría con una regla y conmutar entre el brazo simulado y el real sin reiniciar nada.
Visor 3D
El modelo del visor sale del CAD real de las piezas del brazo, exportado desde FreeCAD. Las medidas del CAD son las que usa la cinemática, así que lo que se ve en pantalla coincide con lo que hay en la mesa.
Roadmap
| Fase | Contenido | Estado |
|---|---|---|
| Simulación | Modelo en MuJoCo, cinemática, trayectorias y mapa del alcance | Hecho |
| Electrónica | ESP8266, controladora de servos y alimentación moviendo un servo desde el portátil | Hecho |
| Puente serie | El portátil manda posiciones y el brazo las ejecuta con rampa suave | Hecho |
| Codo nuevo | Sustituir el servo del codo, que se quemó | Hecho |
| Seta de emergencia | Añadir una parada que corte la alimentación | Pendiente |
| Calibración | Medir el recorrido real de los seis servos | Hecho |
| Secuencias en el brazo real | Reproducir en el brazo real las secuencias planificadas en la web | Hecho |
| Geometría | Ajustar las medidas del brazo real con una regla | En curso |
| Sim-to-real | La misma trayectoria en simulación y en real, midiendo la diferencia | Pendiente |
| Web del proyecto | Visor 3D, progreso, documentación y archivos | Hecho |
| Aprendizaje por refuerzo | Entrenar una política en el simulador para mover el brazo | Pendiente |
Stack
- Cinemática y simulación: Python, NumPy y MuJoCo
- Electrónica: ESP8266 con firmware Arduino y controladora de servos PCA9685
- Web: React, Vite y three.js, desplegada en Vercel
- CAD: FreeCAD
Enlaces
- Web del proyecto: https://brazorobot.vercel.app
- Reel en Instagram: https://www.instagram.com/reel/DeFycK5MWLJ/