硬件准备
- MPU6050模块
- Arduino UNO开发板
- 杜邦线若干
第一部分:通过串口调试助手查看IMU输出值
第一步:接线
第二步:烧录程序
- 从网上下载已有程序
- MPU6050程序:http://diyhacking.com/projects/MPU6050.zip
- I2Cdev程序: https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/
- 进入该文件目录,下载 I2Cdev文件夹。无法直接下载指定文件夹,需要下载整个zip压缩包。
- 解压缩
- 将第一个文件解压缩得到的文件夹和第2个文件夹,复制到Arduino安装目录的libraries文件夹内,重启Arduino。
注意:在ubuntu16.04中,将上面两个文件夹复制到~/sketchbook/libraries内
- 将第一个文件解压缩得到的文件夹和第2个文件夹,复制到Arduino安装目录的libraries文件夹内,重启Arduino。
- 烧录程序
- 通过 文件 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6 打开程序,上传。
- 通过 文件 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6 打开程序,上传。
- 遇到的一些问题总结:
- 上传的时候找不到I2Cdev.h文件。因为之前下载的I2Cdev没有找对,下载下来的文件失效,我已经给了正确的下载地址。
- 无法选择串口
- win7系统下:重新安装驱动。
- 控制面板–> 设备管理器–> 端口(COM和LPT)–> Arduino UNO(COM3)–> 驱动程序–> 更新驱动程序–> 浏览我的计算机以查找驱动程序软件(R)–Arduino IDE安装路径/drives/x86(64位的操作系统选择这个文件夹)
- ubuntu16.04系统下:卸载brltty程序,重启电脑。
- 因为该程序与串口选择冲突,卸载brltty即可解决问题。通过sudo apt-get remove brltty。
- win7系统下:重新安装驱动。
- 打开串口监控,设置波特率115200, 看到 “Send any character to begin DMP programming and demo: “ 时输入任意一个字符,然后发送。就能看到yaw, pitch 和roll的值,如下图所示。
第二部分:使用ROS可视化
第一步:烧录程序
- 新建项目
在arduino中,新建一个项目,复制文件 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6的内容。
注意:是复制MOU6050_DMP6整个文件夹的内容。 - 修改程序
加注释:”#define OUTPUT_READABLE_YAWPITCHROLL”
去注释:“#define OUTPUT_TEAPOT” - 上传程序
第二步:创建ROS工作空间
- 在ROS的工作目录下,下载和编译代码
默认环境:ubuntu16.04,且已经安装了ROS-kinetic
sudo apt-get install ros-kinetic-serial
cd ~catkin_ws/src/
git clone https://github.com/fsteinhardt/mpu6050_serial_to_imu
git clone https://github.com/ccny-ros-pkg/imu_tools
cd ~catkin_ws/
catkin_make
source ~catkin_ws/devel/setup.bash
- 运行如下命令,就可以把mpu6050的值转换为ROS的/imu 消息,同时通过rviz看到mpu6050朝向的变化。
roslaunch mpu6050_serial_to_imu demo.launch
- 但是并不能够在viz看到IMU实时的变化,有哪位大声可以指点一下吗?
参考资料:
https://maker.pro/arduino/tutorial/how-to-interface-arduino-and-the-mpu-6050-sensor https://blog.csdn.net/EAIBOT/article/details/51398074