硬件准备
- 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 打开程序,上传。
- 遇到的一些问题总结:
- 上传的时候找不到I2Cdev.h文件。因为之前下载的I2Cdev没有找对,下载下来的文件失效,我已经给了正确的下载地址。
- 无法选择串口
- win7系统下:重新安装驱动。
- 控制面板–> 设备管理器–> 端口(COM和LPT)–> Arduino UNO(COM3)–> 驱动程序–> 更新驱动程序–> 浏览我的计算机以查找驱动程序软件(R)–Arduino IDE安装路径/drives/x86(64位的操作系统选择这个文件夹)
- ubuntu16.04系统下:卸载brltty程序,重启电脑。
- 因为该程序与串口选择冲突,卸载brltty即可解决问题。通过sudo apt-get remove brltty。
- 打开串口监控,设置波特率115200, 看到 “Send any character to begin DMP programming and demo: “ 时输入任意一个字符,然后发送。就能看到yaw, pitch 和roll的值,如下图所示。
第二部分:使用ROS可视化
第一步:创建ROS工作空间
- 默认环境:ubuntu16.04,且已经安装了ROS-kinetic
sudo apt-get install ros-kinetic-serial #安装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
第二步:修改程序
-
查看Arduino开发板插在哪个串口上
因为在ubuntu中不能通过类似于windows中的设备管理器查看,只能通过命令行查看
dmesg | grep ttyS*
显示的结果为ttyACM0
- 修改catkin_ws/src/mpu6050_serial_to_imu/launch/demo.launch文件,将串口名称与自己的Arduino插上电脑显示的串口一致。
<param name = "port" value = "/dev/ttyACM0"/>
-
源文件中的程序如上所示,与自己的串口名称一致。
第三步:烧录程序
- 打开文件:catkin_ws/src/mpu6050_serial_to_imu/arduino/MPU6050/MPU6050.ino
- 上传程序
- 运行如下命令,就可以把mpu6050的值转换为ROS的/imu 消息,同时通过rviz看到mpu6050朝向的变化。
roslaunch mpu6050_serial_to_imu demo.launch
结果:
错误总结
- 如果不能在viz看到IMU实时的变化(如下图所示),是因为自己烧录的程序不对,这个程序与用串口显示mp6050的程序不一样!!!!网上有些教程说修改在第一部分所用的程序,这个行不通。
- 如果上传程序出错,建议用win7系统下的Arduino IDE上传程序,本人在ubuntu下也无法成功删除上传程序。
参考资料:
https://maker.pro/arduino/tutorial/how-to-interface-arduino-and-the-mpu-6050-sensor
评论(0)
您还未登录,请登录后发表或查看评论