上一篇我们已经实现了硬件层面的连接并使用python脚本验证确实是通的。
那么这一次没什么说的,上ROS。
本人使用树莓派3B参考这个教程有效:
https://github.com/chrisspen/ros_mpu6050_node
一、安装I2Cdevlib:
没办法,我这边使用两个ROS包均不好使且没搞懂该改哪里,懒人只能找个省事的办法。
树莓派中装上I2C驱动:
sudo mkdir -p /usr/share/arduino/libraries cd /usr/share/arduino/libraries sudo git clone https://github.com/chrisspen/i2cdevlib.git
原作者说明:这个I2Cdevlib有bug且不再维护了,因此要用他这个fork。
二、安装Bcm2835:
放心,跟上一篇不冲突!直接安装就行。
cd /tmp wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.50.tar.gz tar zxvf bcm2835-1.50.tar.gz cd bcm2835-1.50 ./configure make make check sudo make install
三、ROS实现
然后把这位作者的ROS工程下载到你的工作空间的catkin_ws/src目录里面(常规操作)
git clone https://github.com/chrisspen/ros_mpu6050_node.git
然后切换到工作空间主目录catkin_ws,运行以下指令,只编译了这个包。
catkin_make --pkg ros_mpu6050_node
四、测试
先source再roslaunch
source /catkin_ws(你的工作空间)/devel/setup.bash
然后:
roslaunch ros_mpu6050_node mpu6050.launch
正常的话,应该最后会提示“DMP ready!”成功,我遇到过不成功还要再launch一遍的,挺奇怪。此launch自带清零效果。
五、观察或使用
rostopic echo /imu/data
可以看出,发布的topic是/imu/data,类型是 sensor_msgs::Imu 那么你的ros工程订阅这个topic就好了。
目前默认是10Hz,可以按照自己的需求修改launch,我还没测试是否也要改源文件才行。
这个launch文件也可以很轻松的跟你已有工程结合。
六、进一步的思考
便宜的东西自然不能追求质量,那么这个MPU6050的稳定性和准确度想要保证,可能要滤波了。这是下一步的工作。
而且MPU6050也有参数设置,可以参考这个手册:https://www.olimex.com/Products/Modules/Sensors/MOD-MPU6050/resources/RM-MPU-60xxA_rev_4.pdf
加速度的信息与坐标系的关系也是需要考虑的问题。
继续研究。