Ce projet ROS est développé pour la compétition RoboCup 2024 aux Pays-Bas. Il intÚgre plusieurs modules pour la vision par ordinateur, la navigation autonome, la manipulation d'objets et l'interface homme-machine.
- Architecture Générale
- Prérequis
- Installation et Compilation
- Lancement du Projet
- Modules Disponibles
- Services ROS
- Topics ROS
- Interface Utilisateur
- Configuration
- Dépannage
Le projet est organisé en plusieurs modules spécialisés :
RoboCup_ws/
âââ src/
â âââ Bras_Automatique/ # ContrĂŽle automatisĂ© du bras
â âââ Bras_Manuel/ # ContrĂŽle manuel du bras
â âââ Camera_Economique/ # Module camĂ©ra bas coĂ»t
â âââ Deplacement_Robot/ # Navigation et dĂ©placement
â âââ Detection_Mouvement/ # DĂ©tection de mouvement
â âââ IHM_Robot/ # Interface Web de contrĂŽle
â âââ Lidar/ # SystĂšme Lidar
â âââ Pince_Bras/ # ContrĂŽle de la pince
â âââ QRCode/ # DĂ©tection des codes QR
â âââ Accelerometre/ # Capteur accĂ©lĂ©romĂštre (IMU)
âââ launch/ # Fichiers de lancement ROS
âââ msg/ # DĂ©finitions de messages ROS
âââ srv/ # DĂ©finitions de services ROS
âââ matplotlib-cpp/ # BibliothĂšque de visualisation
âââ scripts/ # Scripts utilitaires
- Ubuntu 18.04 ou 20.04 (recommandé pour ROS Noetic)
- Ubuntu 16.04 (compatible avec ROS Kinetic)
# Mise à jour des dépendances systÚme
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
git \
libopencv-dev \
python3-dev \
libpcl-dev \
python3-pip- ROS Noetic ou Kinetic (voir installation officielle : http://wiki.ros.org/ROS/Installation)
- catkin (gestionnaire de build pour ROS)
- cv_camera (capteur caméra OpenCV)
- rosserial (communication série)
- joy (support manette de jeu)
- OpenCV 3.0+
- PCL (Point Cloud Library)
- Python 3.x
- matplotlib-cpp (inclus)
cd ~/
git clone https://github.com/serrhiniabdellah/RoboCup_ws ros_workspaces/RoboCup_ws
cd ros_workspaces/RoboCup_ws# Installer les dépendances manquantes via rosdep
rosdep install --from-paths src --ignore-src -r -ysource /opt/ros/noetic/setup.bash # Pour ROS Noetic
# OU
source /opt/ros/kinetic/setup.bash # Pour ROS Kinetic
# Ajouter Ă votre ~/.bashrc pour source automatique
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrccd ~/ros_workspaces/RoboCup_ws
catkin_make
# Ou pour un nettoyage complet avant recompilation :
catkin_make clean
catkin_makesource ~/ros_workspaces/RoboCup_ws/devel/setup.bash
# Ajouter au ~/.bashrc pour source automatique
echo "source ~/ros_workspaces/RoboCup_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc# Option 1 : Bras Automatique avec Caméra
roslaunch Robocup2024_PaysBas Bras.launch
# Option 2 : Caméra Haute Résolution
roslaunch Robocup2024_PaysBas Flux_8MP.launch
# Option 3 : SystĂšme Lidar
roslaunch Robocup2024_PaysBas Lidar.launch
# Option 4 : Initialisation AccéléromÚtre
roslaunch Robocup2024_PaysBas Init_Accelero.launch
# Option 5 : Mode Sauvetage (Rescue)
roslaunch Robocup2024_PaysBas Rescue.launch# Terminal 1 : Démarrer roscore
roscore
# Terminal 2 : Lancer le nĆud camĂ©ra
roslaunch Robocup2024_PaysBas Bras.launch
# Terminal 3 : Visualiser les images (optionnel)
rosrun rqt_image_view rqt_image_view
# Terminal 4 : Visualiser les données (optionnel)
rosrun rviz rviz# Lancer tous les modules avec configuration automatique
bash scripts/launch_all.shFichiers : src/Bras_Automatique/
Permet la détection et manipulation automatique d'objets :
- Détection d'objets via HSV (teinte, saturation, valeur)
- Calcul de position en 3D
- ContrÎle automatisé du bras
- Calibration HSV configurable
Utilisation :
roslaunch Robocup2024_PaysBas Bras.launchFichiers : src/Bras_Manuel/
ContrĂŽle du bras via manette de jeu ou clavier :
- Interface ROS
- Configuration des plages moteurs
- URDF pour simulation
Lancement : Utiliser la manette via le module Deplacement_Robot
Fichiers : src/Camera_Economique/
SystÚme de vision bas coût :
- Capture vidéo en temps réel
- Support caméra USB standard
- Optimisé pour faible latence
ParamĂštres configurables :
- RĂ©solution : 320Ă240 ou 1920Ă1440
- Périphérique :
/dev/video0,/dev/video1, etc. - Fréquence d'images
Fichiers : src/Deplacement_Robot/
Gestion de la locomotion du robot :
- Classe
sabertoothpour contrĂŽle moteur - Support manette de jeu
- Republication des commandes de joystick
Topics :
/joy: Données brutes manette/cmd_vel: Commandes de vitesse
Fichiers : src/Detection_Mouvement/
Analyse vidéo pour détection de mouvement :
- Scripts Python pour flux vidéo continu
- Configuration en temps réel
- Seuils ajustables
Scripts :
Detection_Mouvement.py: Mode uniqueDetection_Mouvement_Continu.py: Flux continu
Fichiers : src/Lidar/
SystĂšme de cartographie 3D et navigation :
- Traitement des nuages de points
- Exploration autonome
- AccéléromÚtre intégré
Fichiers : src/QRCode/
Détection et décodage de codes QR :
- Localisation précise
- Extraction de données
Fichiers : src/Accelerometre/
Capteur inertiel (MPU-9250) :
- Mesure accélération 3D
- Orientation gyroscope
- Calibration disponible
Permet d'ajuster les paramÚtres HSV pour la détection d'objets
Fichier : srv/Traitement_HSV.srv
ParamĂštres :
int64 LowH # Teinte minimale (0-180)
int64 HighH # Teinte maximale (0-180)
int64 LowS # Saturation minimale (0-255)
int64 HighS # Saturation maximale (0-255)
int64 LowV # Valeur minimale (0-255)
int64 HighV # Valeur maximale (0-255)
Utilisation :
# Ajuster la détection HSV pendant l'exécution
rosservice call /Traitement_HSV 30 180 100 255 100 255
# Pour faciliter la calibration, utiliser :
opencv3_V2_nodeContrÎle du déplacement pas à pas
Fichier : srv/Pas.srv
Header header # Timestamp et frame_id
int32 rang # Rang/ID de l'objet
float32 x1, y1 # Coin supérieur gauche
float32 x2, y2 # Coin inférieur droit
float32 center_x # Centre X
float32 center_y # Centre Y
float32 width # Largeur
float32 height # Hauteur
int32 count # Nombre total d'objets
Utilisé pour l'analyse des performances des détections
/camera/image_raw: Flux vidéo caméra/camera/camera_info: Calibration caméra/joy: Données brutes manette/cmd_vel: Commandes de vitesse/tf: Transformations géométriques/scan: Données Lidar
Fichiers : src/IHM_Robot/
Interface HTML/CSS/JavaScript pour le contrĂŽle du robot :
index.html # Page d'accueil principale
âââ deplacement_robot.html # ContrĂŽle du dĂ©placement
âââ deplacement_robot.js # Logique dĂ©placement
âââ vision_camera.html # Flux camĂ©ra
âââ vision_camera.js # Logique camĂ©ra
âââ vision_lidar.html # Visualisation Lidar
âââ vision_lidar.js # Logique Lidar
âââ deplacement_bras.html # ContrĂŽle du bras
âââ deplacement_bras.js # Logique du bras
âââ style.css # Styles
# Lancer un serveur web local
cd src/IHM_Robot/
python3 -m http.server 8000
# Accéder via navigateur
# http://localhost:8000
# ou http://<IP_ROBOT>:8000Fichier : HSV_Config.txt
Contient les paramÚtres HSV prédéfinis pour différents objets :
# Format : NomObjet LowH HighH LowS HighS LowV HighV
Red 0 10 100 255 100 255
Green 40 80 100 255 100 255
Blue 100 130 100 255 100 255
Dans les fichiers .launch :
<param name="device_path" value="/dev/video0" />
<param name="image_width" value="320" />
<param name="image_height" value="240" />Fichier : src/Bras_Manuel/Ranges_moteurs
Plages de mouvement pour chaque articulation du bras
# Nettoyer et recompiler
catkin_make clean
rm -rf build devel
catkin_make
# Ou utiliser ccache pour plus rapide
catkin_make -DCMAKE_CXX_COMPILER_LAUNCHER=ccache# Vérifier les périphériques vidéo disponibles
ls -la /dev/video*
# Tester la caméra
v4l2-ctl --list-devices# Vérifier le port USB
ls -la /dev/ttyACM*
ls -la /dev/ttyUSB*
# Affecter les permissions
sudo usermod -a -G dialout $USER
# Redémarrer la session ou :
newgrp dialout# Vérifier la connectivité ROS
rosnode list
rostopic list
# DĂ©boguer les nĆuds
rostopic echo /topic_name
rosservice list# Installer les dépendances manquantes
rosdep install --from-paths src --ignore-src -r -y
# Installer des packages Python spécifiques
pip3 install numpy opencv-python# Vérifier les ressources
htop
# Regarder utilisation CPU/RAM
# Réduire la résolution caméra
# Modifier dans les fichiers .launch- ROS Documentation : http://wiki.ros.org/
- OpenCV Documentation : https://docs.opencv.org/
- PCL Documentation : https://pointclouds.org/documentation/
- RoboCup Official : https://www.robocup.org/
â ïž Assurez-vous queroscoreest lancĂ© avant les autres nĆudsâ ïž VĂ©rifiez les permissions USB pour les pĂ©riphĂ©riques sĂ©rie- âčïž Les paramĂštres HSV doivent ĂȘtre calibrĂ©s selon l'Ă©clairage ambiant
- âčïž Utilisez
rqtpour monitorer les topics et debugger en temps réel
à définir
- Dominik (dominik@todo.todo)
DerniĂšre mise Ă jour : Mars 2026