三、树莓派 3B 接MPU6050方法 以及ROS应用

上一篇我们已经实现了硬件层面的连接并使用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

加速度的信息与坐标系的关系也是需要考虑的问题。

继续研究。

猜你喜欢

转载自blog.csdn.net/asdli/article/details/80757263