Robot Asistente Doméstico Autónomo "O'nine" – Integración ROS, Alexa y Brazo Robótico
Componentes y materiales
| Componente | Cantidad | Función |
|---|---|---|
| Arduino UNO | 1 | Controlador brazo robótico (child) |
| Brazo robótico Arduino Braccio | 1 | Manipulación objetos |
| Odroid XU4 (o SBC ARM 2GB+ RAM) | 1 | Cerebro ROS (navegación, visión) |
| Teensy 3.2/3.5/3.6 | 2 | Base móvil (linobase) + elevador vertical (oninearm) |
| Driver paso a paso EasyDriver | td>1Elevador vertical | |
| Driver motor L298N | 1 | Motores base |
| Motores DC con encoder | 4 | Tracción mecanum |
| Ruedas Mecanum | 4 | Movimiento omnidireccional |
| IMU GY-85 | 1 | Odometría/orientación |
| Kinect v1 (Xbox 360) | 1 | Percepción 3D / SLAM |
| Estructura V-Slot (rails, placas, ruedas V) | 1 set | Chasis modular |
| Husillo acmé 0.8 m + acoplamiento 6-8 mm | 1 | Elevación vertical brazo |
| Soportes, finales de carrera, cable espiral, convertidores DC-DC, BEC 5V, batería 12V 5Ah | 1 set | Potencia y mecánica |
Software y servicios cloud
- ROS (Robot Operating System) – Kinetic/Noetic en Ubuntu 16.04/18.04.
- Amazon Alexa Skills Kit + AWS Lambda (Node.js) – Interfaz voz.
- PubNub – Broker MQTT puente Alexa ↔ Robot.
- Pushover – Notificaciones con fotos al móvil.
- MoveIt! – Planificación cinemática brazo.
- AR tags (ar_track_alvar) – Detección objetos para pick&place.
Arquitectura general
- Echo Dot escucha comando de voz.
- Custom Alexa Skill detecta Intent.
- AWS Lambda publica en PubNub (MQTT).
- O'nine (Odroid) suscrito a PubNub recibe orden.
- ROS ejecuta tarea autónoma (navegación + MoveIt + visión).
Hardware: Subsistemas
1. Base móvil (Linorobot adaptado)
4 motores DC + encoders + ruedas Mecanum + L298N + Teensy (linobase). Firmware con PID velocidad. Chasis: lata de papel A4 reciclada / caja plástica.
2. Elevador vertical (Arm Parent)
Motor paso a paso + EasyDriver + Teensy (oninearm). Control en lazo abierto (cuenta pasos = altura). Relay serie al brazo hijo.
3. Controlador brazo (Arm Child)
Arduino UNO + shield Braccio. Recibe ángulos objetivo por serie (desde oninearm) y mueve 6 servos.
4. Integración completa
Esquema de potencia: batería 12V → convertidores → 5V (SBCs, Teensys, servos) y 12V (motores DC, stepper).
Instalación software (ROS)
Requiere dos máquinas Linux (PC desarrollo + Odroid robot).
4.1 Instalación ROS automática
git clone https://github.com/linorobot/rosme
cd rosme && ./install
4.2 Paquetes ROS
PC desarrollo:
cd ~/catkin_ws/src
git clone https://github.com/linorobot/lino_pid
git clone https://github.com/linorobot/lino_msgs
git clone https://github.com/linorobot/lino_visualize
cd .. && catkin_make
Odroid (robot base):
git clone https://github.com/linorobot/lino_install
cd lino_install && ./install mecanum kinect
Ambas máquinas (paquete O'nine):
git clone https://github.com/grassjelly/onine_install
cd onine_install && ./install
Alexa Tasker (PubNub client):
cd ~/onine_ws/src
git clone https://github.com/grassjelly/onine_alexa
cd .. && catkin_make
Configuración Alexa + AWS Lambda + PubNub
- Alexa Skill: Custom Interaction Model. Intent Schema y Utterances desde
onine_alexa/lambda/assets/. Endpoint: ARN Lambda. - AWS Lambda (Node.js 4.3+): Sube
onine_alexa/lambda/appcomo ZIP (incluyenode_modulesvianpm install && ./zipme). Configura claves PubNub en el código. - PubNub: Crea App, anota Publish/Subscribe keys. Ponlas en Lambda y en
alexa_tasker.py. - Pushover: Cuenta + App → User Key + API Token. Configura en
snaptaskpara envío fotos.
Firmwares (subir en orden)
- uDev rules:
rosrun lino_udev lino_udev.py→ nombra puertos/dev/linobasey/dev/oninearm. Copia58-lino.rulesa/etc/udev/rules.d/, recarga udev. - Base (Teensy): Configura
lino_base_config.h(diámetro rueda, PPR encoder, etc.).platformio run --target upload. - Elevador (Teensy):
platformio run --target uploaden su carpeta. - Braccio (UNO):
platformio run --target upload. Desconecta UNO tras subir (comunica via oninearm).
Ajustes Linorobot para O'nine
- Añade nodo
rosserial_onineenbringup.launch(puerto/dev/oninearm, 115200 baud). - Añade
robot_state_publishercon URDF O'nine. - Cambia
base_link→base_footprinten navegación (amcl, slam, costmaps,lino_base_node.cpp). - Configura
pointcloud_to_laserscanpara Kinect (framelaser, rango 4m). - Recompila:
catkin_make. - Crear mapa:
roslaunch linorobot bringup.launch+roslaunch linorobot slam.launch→ teleop + rviz →rosrun map_server map_saver -f ~/map. - Obtener waypoints:
roslaunch linorobot navigate.launch→ rviz →rostopic echo move_base_simple/goal→ click en objetivo → editafishtask.pycon coordenadas. - Run O'nine:
- Terminal 1 (PC):
roscore - Terminal 2 (Odroid SSH):
roslaunch linorobot bringup.launch - Terminal 3 (Odroid SSH):
roslaunch linorobot navigate.launch - Terminal 4 (Odroid SSH):
roslaunch onine_apps ar_tracker.launch - Terminal 5 (PC):
roslaunch onine_moveit_config demo.launch - Terminal 6 (PC):
rosrun onine_alexa alexa_tasker.py
- Terminal 1 (PC):
- En RViz: 2D Pose Estimate → localiza robot en mapa.
- ¡Habla a Alexa! "O'nine, alimenta los peces".
- Modelo Gazebo para simulación sin hardware.
- SBC más potente (Rock64 4GB RAM) para evitar offloading a PC.
- O'nine Software: github.com/grassjelly/onine (navegación, cinemática, tareas alto nivel)
- Alexa-Robot Integration: github.com/grassjelly/onine_alexa (Lambda, PubNub client)
- Robot Base (Linorobot): github.com/linorobot/linorobot (plataforma ROS low-cost)
Detección objetos (AR Tags)
Imprime marcadores AR (2x2 cm) y pégalos en objetos. Usa ar_track_alvar. Alternativas: find_object_2d, tabletop_object_detector.
Ejecución demo completa
Trabajos futuros
Repositorios clave
Esquemáticos
Proceso de manufactura
- Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
- JQR Robot Cuadrúpedo Autónomo: Robot de Patas DIY para Navegación y Rescate Autónomos
- Simple Pi Robot: Construye un Rover Autónomo 2‑WD con Raspberry Pi
- Construye tu propia máquina de escribir deberes casera (DIY Homework Writing Machine)
- Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
- Robot Seguidor de Línea Autónomo con Arduino UNO: Guía Paso a Paso
- Construye un robot controlado por voz con Arduino Nano
- Kit de Entrenamiento Arduino Completo con Mega 2560, Sensores, Motores y PCB Personalizada
- Brazo Robótico Arduino Controlado por Gestos Manuales – Construcción Paso a Paso
- Robot de 4 Ruedas con Arduino Controlado por App Dabble
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino