Intégration BlueOS ================== BlueOS Overview --------------- BlueOS est le système d'exploitation embarqué de Blue Robotics pour le BlueROV2. Il tourne sous Raspberry Pi OS + Docker. Les extensions BlueOS sont des conteneurs Docker exposés via une API REST et une UI web intégrée. Extension SLAM -------------- L'extension SLAM est définie dans ``/Dockerfile`` à la racine du projet. Format manifest BlueOS ~~~~~~~~~~~~~~~~~~~~~~~ Chaque extension doit inclure des labels Docker spécifiques : .. code-block:: dockerfile LABEL version="0.1.0" LABEL permissions='{"NetworkMode": "host", "Devices": ["/dev/video0", "/dev/video1"]}' LABEL authors='[{"name": "Baptiste Moulin", "email": "baptiste@example.com"}]' LABEL company='{"about": "", "name": "Baptiste Moulin", "email": ""}' LABEL type="device-integration" LABEL tags='["slam", "stereo", "vision"]' LABEL readme='https://raw.githubusercontent.com/.../README.md' LABEL links='{"website": "", "support": ""}' Accès caméras USB ~~~~~~~~~~~~~~~~~ BlueOS utilise ``udev`` pour les caméras. S'assurer que : .. code-block:: bash # Sur le Pi, vérifier les devices ls /dev/video* # → /dev/video0 /dev/video1 # Dans BlueOS Docker, les devices sont passés via permissions JSON # "Devices": ["/dev/video0", "/dev/video1"] Port réseau ~~~~~~~~~~~ L'interface Flask tourne sur le port **5000**. BlueOS expose les extensions via son proxy Nginx. Accès depuis l'interface BlueOS : ``http:///extensions/slam-stereo``. Installation via BlueOS UI -------------------------- 1. Ouvrir BlueOS : ``http://`` 2. Menu → Extensions → Installer 3. Entrer l'image Docker : ``ghcr.io/baptiste-moulin/slam-stereo-blueos:latest`` 4. Valider les permissions 5. Lancer l'extension Installation manuelle (SSH) ---------------------------- .. code-block:: bash ssh pi@ # Build l'image localement cd /home/pi/slam_stereo docker build -t slam-stereo-blueos . # Lancer le conteneur docker run -d \ --network host \ --device /dev/video0 \ --device /dev/video1 \ -p 5000:5000 \ --name slam-stereo \ slam-stereo-blueos Logs ---- .. code-block:: bash docker logs -f slam-stereo MAVLink Integration (optionnel) --------------------------------- Pour envoyer la pose estimée au pilote automatique (ArduSub/ArduPilot) : - Protocole MAVLink ``VISION_POSITION_ESTIMATE`` (ID 102) - Bibliothèque Python : ``pymavlink`` - Connexion via ``udpin:0.0.0.0:14550`` (BlueOS MAVLink router) .. code-block:: python # Exemple envoi pose (à implémenter dans src/slam/mavlink_bridge.py) from pymavlink import mavutil mav = mavutil.mavlink_connection('udpout:127.0.0.1:14550') mav.mav.vision_position_estimate_send( usec, x, y, z, roll, pitch, yaw )