Package ROS2 qui fusionne les données d'accéléromètre et de gyroscope publiées par une caméra RealSense D435i pour produire un message IMU unique.
┌─────────────────────┐
│ RealSense │
│ ┌─────────────────┐ │ ┌────────────────────┐ ┌────────────────┐ ┌─────────────────┐ ┌────────────────┐
│ │ Accéléromètre │ │ ──► │ Noeud IMU Fusion │ │ SLAM Toolbox │ │ Nav2 │ │ │
│ └─────────────────┘ │ │ │ │ │ │ │ │ Contrôleur │
│ ┌─────────────────┐ │ │ Publie sur │ ──► │ Localisation │ ──► │ Planification │ ──► │ Robot │
│ │ Gyroscope │ │ ──► │ /camera/imu │ │ & Mapping │ │ & Control │ │ │
│ └─────────────────┘ │ └────────────────────┘ └────────────────┘ └─────────────────┘ └────────────────┘
└─────────────────────┘
-
Synchronisation :
Les messages d'accéléromètre et de gyroscope sont synchronisés avec une tolérance de 0.1 seconde grâce à l'ApproximateTimeSynchronizer. -
Fusion des données :
Les mesures linéaires de l'accéléromètre et les vitesses angulaires du gyroscope sont fusionnées dans un seul message IMU.- L'horodatage est calculé comme la moyenne des timestamps des deux capteurs.
- Le
frame_idde l'accéléromètre est utilisé comme référence.
-
QoS BEST_EFFORT :
Utilisation d'un profil QoS BEST_EFFORT pour correspondre aux caractéristiques des données publiées par la caméra RealSense.
Pour lancer le noeud de fusion IMU, la commande suivante doit être éxécutée :
ros2 launch imu_fusion imu_fusion.launch.pyLe noeud s'abonne aux topics :
/camera/camera/accel/samplepour l'accéléromètre/camera/camera/gyro/samplepour le gyroscope
Il publie ensuite un message fusionné sur le topic :
/camera/imu