Robot Assistant Domestique Autonome : Liste Complète et Guide de Configuration
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Bras robotique Arduino Braccio | 1 |
| Odroid XU4 (carte ARM) | 1 |
| EasyDriver (driver pas à pas) | 1 |
| Moteur pas à pas | 1 |
| Driver moteur L298 | 1 |
| Moteurs DC | 4 |
| IMU GY-85 | 1 |
| Roues Mecanum | 1 set |
| Hub USB 5V | 1 |
| Capteur Microsoft Kinect | 1 |
| Rails linéaires V-Slot OpenBuilds | 2 |
| Plaques portique V-Slot | 1 |
| Kit roues V-Slot | 4 |
| Vis sans fin Acme 0,8m | 1 |
| Accouplement arbre 6-8mm | 1 |
| Support roulement 8mm | 1 |
| Fil ressort 1,2m | 1 |
| Fin de course | 1 |
| BEC 5V | 1 |
| Convertisseur DC-DC variable | 2 |
| Batterie 12V 5000mAh | 1 |
Applications et services en ligne
- Amazon Alexa Skills Kit
- AWS Lambda
- ROS (Robot Operating System)
- PubNub Publish/Subscribe API
À propos du projet
1. Introduction


Rencontrez O'nine : compagnon robotique personnel qui se déplace, manipule des objets, surveille la maison. Grâce à Alexa, il entend vos commandes et exécute des tâches programmées (nourrir les poissons, vérifier la porte, prendre une photo...).
Objectif : étendre les capacités d'Alexa via une plateforme robotique ouverte et scalable, alternative aux installations domotiques statiques pièce par pièce.
Vidéos : Time-Lapse | Version complète
2. Architecture Haute Niveau

- Echo Dot écoute la commande vocale
- Alexa Skill personnalisée détecte l'intention
- AWS Lambda reçoit la requête et publie sur broker MQTT PubNub
- O'nine reçoit les données en s'abonnant au broker
- O'nine exécute la tâche de façon autonome
3. Matériel
3.1 Base Robotique

Circuit traduisant commandes vélocité (ROS Navigation Stack) en mouvements moteurs. Firmware avec régulateur PID utilisant encodeurs moteurs.

Châssis : boîte carton A4 upcyclée (ou boîte plastique). Voir projet Linorobot pour tutoriel complet robots ROS DIY.
3.2 Ascenseur Vertical (Bras Parent)

Contrôle élévation bras via stepper. Système ouvert : hauteur = nb pas × distance/pas. Relaye commandes MoveIt vers bras robotique (enfant) via liaison série. Câble spiralé pour alimentation + signaux.
3.3 Contrôleur Bras Robotique (Enfant)

Arduino Uno + shield Braccio. Reçoit angles cibles par série, actionne servos.
3.4 Intégration complète

Schéma d'interconnexion et alimentation de tous les sous-systèmes.
4. Logiciel
Nécessite deux machines Linux (Ubuntu 14.04/16.04) : poste développement (MoveIt, RViz) + carte ARM robot (navigation, drivers).
4.1 Installation ROS
git clone https://github.com/linorobot/rosme
cd rosme && ./install
Détection auto OS/architecture.
4.2 Packages ROS
Poste développement :
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
Carte robot (base) :
git clone https://github.com/linorobot/lino_install
cd lino_install && ./install mecanum kinect
Packages O'nine (sur les deux) :
git clone https://github.com/grassjelly/onine_install
cd onine_install && ./install
alexa_tasker (poste développement) :
cd ~/onine_ws/src
git clone https://github.com/grassjelly/onine_alexa
cd .. && catkin_make
5. Configuration Logicielle
5.1 Création Alexa Skill
- Compte développeur Alexa → « Start a Skill »
- Type : « Custom Interaction Model »
- Nom + Nom d'invocation (ex. « O'nine »)
- Intent Schema : schema.json
- Sample Utterances : utterances.txt
- Configuration : AWS Lambda ARN
5.2 Fonction AWS Lambda
- Compte AWS → Create Function
- Runtime : Node.js 4.3, Role : lambda_basic_execution
- Trigger : Alexa Skills Kit + Skill ID
- Code : zip généré depuis
~/onine_ws/src/onine_alexa/lambda/app(npm install && ./zipme) - Variables d'env : clés PubNub (publish/subscribe)
5.3 Compte PubNub
- Créer compte/app → noter clés publish/subscribe
- Les insérer dans code Lambda et robot
5.4 Notifications Pushover
Pour envoi photos sur téléphone. Compte + App → User Key + API Token → configurer dans script snaptask.
5.5 Installation Firmwares
Règles uDev (ports série persistants) :
rosrun lino_udev lino_udev.py
# Brancher Teensy base → "linobase"
# Brancher Teensy ascenseur → "oninearm"
sudo cp 58-lino.rules /etc/udev/rules.d/
sudo service udev reload && sudo service udev restart
ls /dev/linobase && ls /dev/oninearm
Firmwares :
# Base (Teensy)
roscd linorobot/firmware/teensy && platformio run --target upload
# Ascenseur (Teensy)
platformio run --target upload
# Bras (Arduino Uno)
platformio run --target upload
# Débrancher Uno après upload (relais via Teensy ascenseur)
5.6 Modifications Linorobot
- Ajouter nœud rosserial pour
/dev/oninearmdansbringup.launch - Changer frame laser :
base_link_to_laseroffset 0.065m - Commenter transform redondant (défini dans URDF O'nine)
- Configurer
pointcloud_to_laserscanpour Kinect - Remplacer
base_linkparbase_footprintdans fichiers nav +lino_base_node.cpp - Recompiler :
catkin_make
5.7 Détection d'objets (AR Tags)
Tags AR 2x2cm sur objets cibles. Logiciel : ar_track_alvar. Alternatives : find_object_2d, tabletop_object_detector.
6. Lancement de la démo
6.1 Création carte
# Robot: terminal 1
roslaunch linorobot bringup.launch
# Robot: terminal 2
roslaunch linorobot slam.launch
# Dev: terminal 1
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
# Dev: terminal 2
roscd lino_visualize/rviz && rviz -d slam.rviz
Piloter pour mapper → sauvegarder : rosrun map_server map_saver -f ~/linorobot_ws/src/linorobot/maps/map
6.2 Coordonnées cibles
Écho move_base_simple/goal + clic RViz → récupérer pose → éditer fishtask.py.
6.3 Exécution O'nine
# Dev: terminal 1
roscore
# Dev: terminaux 2-4 → SSH robot
# Robot: terme 1
roslaunch linorobot bringup.launch
# Robot: terme 2
roslaunch linorobot navigate.launch
# Robot: terme 3
roslaunch onine_apps ar_tracker.launch
# Dev: terme 1
roslaunch onine_moveit_config demo.launch
# Dev: terme 2
rosrun onine_alexa alexa_tasker.py
Dans RViz : « 2D Pose Estimate » → localiser robot → commander via Alexa !
7. Travaux Futurs
- Modèle simulation Gazebo (test sans hardware)
- Meilleure puissance calcul : Rock64 (4GB RAM) visé pour remplacer Odroid XU4
Codes sources
- O'nine Software : Navigation, kinématique, tâches autonomes
- Alexa-Robot Integration : Lambda NodeJS, PubNub client, tasker
- Robot Base (Linorobot) : Suite robots ROS open-source low-cost
Schémas




Processus de fabrication
- Construire un robot Raspberry Pi piloté par Bluetooth avec retour audio
- JQR Quadrupède Autonome : Robot à pattes DIY pour navigation et secours autonomes
- Simple Pi Robot – Construire un rover autonome 2 roues motrices avec Raspberry Pi
- Construire sa propre machine à écrire les devoirs à la maison (Traceur à stylo)
- Robot Évitement d'Obstacles Piloté par Servomoteur : Construction avec Arduino et HC-SR04
- Créez un robot suiveur de ligne autonome avec Arduino UNO
- Robot commandé par la voix avec Arduino Nano et Bluetooth
- Kit de Formation Arduino Complet : Mega 2560, Capteurs, Moteurs et PCB Personnalisé
- Kit de robot de navigation intérieure intelligente pour projets Arduino