MPU6050数据输出_串口与ROS

硬件准备

  • 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内
  • 烧录程序
    • 通过 文件 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6 打开程序,上传。
      MPU6050数据输出_串口与ROS_第1张图片
  • 遇到的一些问题总结:
    • 上传的时候找不到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
    MPU6050数据输出_串口与ROS_第2张图片

  • 修改catkin_ws/src/mpu6050_serial_to_imu/launch/demo.launch文件,将串口名称与自己的Arduino插上电脑显示的串口一致。

    
    

    源文件中的程序如上所示,与自己的串口名称一致。

第三步:烧录程序

  • 打开文件:catkin_ws/src/mpu6050_serial_to_imu/arduino/MPU6050/MPU6050.ino
  • 上传程序
  • 运行如下命令,就可以把mpu6050的值转换为ROS的/imu 消息,同时通过rviz看到mpu6050朝向的变化。
 roslaunch mpu6050_serial_to_imu demo.launch 
  • 结果:
    MPU6050数据输出_串口与ROS_第3张图片

错误总结

  1. 如果不能在viz看到IMU实时的变化(如下图所示),是因为自己烧录的程序不对,这个程序与用串口显示mp6050的程序不一样!!!!网上有些教程说修改在第一部分所用的程序,这个行不通。
  2. 如果上传程序出错,建议用win7系统下的Arduino IDE上传程序,本人在ubuntu下也无法成功删除上传程序。
    MPU6050数据输出_串口与ROS_第4张图片

参考资料:

https://maker.pro/arduino/tutorial/how-to-interface-arduino-and-the-mpu-6050-sensor https://blog.csdn.net/EAIBOT/article/details/51398074

你可能感兴趣的:(SLAM,ROS,imu,ROS)