一.IMU接口类型
市面上比较常见的IMU器件,其接口是串口,但为方便与主机连接,一般提供出来的实际接口为USB接口,在linux系统下表现为/dev/ttyUSBx设备文件。
二.IMU ROS驱动获取
IMU器件与GPS不同,其raw数据并没有统一的标准,不像GPS遵守NMEA0184,所以不同IMU器件,其驱动是不同的。但是不要担心,有不少厂商直接提供了ROS驱动,可以到ros wiki查找或者厂家官网查找;如果没有提供,也可以通过对SDK进行ROS封装,得到ROS驱动。
三.microstrain_3dmgx2_imu文件结构
microstrain_3dmgx2_imu
是microstrain公司为其3dmgx2型号的IMU提供的ros驱动包,使用C++实现。3dmgx2可以测量三轴加速度,三轴角速度以及朝向。此包提供一个节点:/microstrain_3dmgx2_node
,用于接收,解析发布imu数据。执行以下指令:
cd ~/workspace/ros_program_melodic/git pullcd catkin_make/src/drivers/imu/microstrain_3dmgx2_imu/tree -L 3
执行结果如图
sdmgx2.cc
和 2dmgx2.h
为imu的sdk, imu_ros_interface.cpp
和 imu_ros_interface.h
是对 imu sdk
的ros封装, imu_ros_node.cpp
是主函数,这三个文件构成了ros驱动。get_id.cpp
为测试程序,可以不用管。microstrain_3dmgx2.launch
为启动节点的launch文件。srv目录下的AddOffset.srv文件,为节点实现服务的数据类型。对于其他只提供sdk的传感器,也可以参考这种目录设计ros驱动。
四. microstrain_3dmgx2_node节点
microstrain_3dmgx2_node
节点从串口读入数据,根据3DM-GX2协议解析,并填充 sensor_msgs/Imu
结构,发布ros话题:/diagnostics
,