ROS与传感器教程-razor-imu-9dof使用(旧固件)
ros与传感器-razor-imu-9dof使用(旧固件)
说明:
- 介绍razor-imu-9dof相关信息,使用,校准等
- 点击淘宝采购对应产品
razor_imu_9dof说明
razor_imu_9dof是一个为Sparkfun Razor IMU 9DOF提供ROS驱动程序的软件包。
它还提供在Razor板上运行的Arduino固件,必须安装在Razor板上才能使系统正常工作。
提供显示IMU板的姿态(roll翻滚,pitch俯仰和yaw偏航)的节点用于测试。
库地址: https://github.com/KristofRobot/razor_imu_9dof.git
这是针对不同Sparkfun Razor IMU 9DOF(自由度)传感器板的驱动程序包。
IMU板包含3轴磁力计,陀螺仪和加速度计。
驱动程序也应该使用Sparkfun传感器,但你必须弄清楚如何将传感器棒连接到arduino并适当修改固件
Razor有一个板载Arduino,它运行与这个ROS驱动程序一起工作的Attitude Heading Reporting System(AHRS)固件。
您必须使用Arduino IDE将ROS AHRS固件加载到它上面。
(Sparkfun发布的电路板仅包含传感器值打印固件。)
AHRS固件的ROS版本在此软件包中,源自Peter Bartz的原始AHRS Razor固件。
理论:
- 在Razor内部,使用方向余弦矩阵(DCM)算法完成加速度计,磁力计和陀螺仪数据的融合。
- 该算法还负责处理传感器噪声和数值误差。
- 它基于William Premerlani撰写的这篇论文。
- 有关更详细的信息,请查看Robert Mahony撰写的这些论文。
硬件:
- Razor IMU board
- The FTDI Basic Breakout
软件:
- 安装arduino,下载Arduino IDE 最新版本
- Arduino 插件环境配置,参考
- 在linux下,安装Visual Python
sudo apt-get install python-visual
- 源码安装:
$ cd catkin_ws/src
$ git clone https://github.com/KristofRobot/razor_imu_9dof.git
$ cd ..
$ catkin_make
- apt安装:
$ sudo apt-get install ros-indigo-razor-imu-9dof
arduino IDE配置:
- 打开arduino IDE, 文件->首选项->项目文件夹位置
- 一般是~/sketchbook 或~/Arduino名称结尾,不同版本名称有差异
- 拷贝AHRS固件到IDE的库目录,假设我们路径是在
$ roscd razor_imu_9dof
$ cp -r src/Razor_AHRS ~/Arduino
- 重启arduino IDE
- 打开项目文件夹,Razor_AHRS 选择 Razor_AHRS
- 选择 “工具” -> “开发板”
- 选择 “工具” -> “端口”
- 选择 “项目” -> “上传”
配置文件:
- 配置yaml文件
$ roscd razor_imu_9dof/config
$ cp razor.yaml my_razor.yaml
坐标轴说明:
- Razor_AHRS固件使用的坐标系的定义不同于在板上打印的坐标框架以及ROS坐标框架的定义。
- 在下面的测试部分中测试Razor AHRS和ROS 话题输出时,您将会遇到这些差异。
- Razor_AHRS固件使用:
X轴指向前方(朝向带有连接器孔的短边)
Y轴指向右侧
Z轴指向下方
- 忽略电路板上的标签并在安装使用此坐标框架。
- 然而,这与ROS在REP-103中定义的右手坐标系不同,后者使用:
X轴指向前方(朝向带有连接器孔的短边)
Y轴指向左侧
Z轴朝上
- ROS坐标系相对于Razor_AHRS坐标系围绕X轴旋转180度。
- razor_imu_9dof节点将Razor_AHRS测量值转换为ROS坐标系。
- 注意:在串行监视器上查看Razor_AHRS数据和ROS /imu主题时,很容易混淆。
利用Arduino IDE测试:
- 打开IDE,选择工具->窗口监视器
- 这三个数字代表YPR(Yaw,Pitch和Roll)的度数。
利用rviz测试
- 安装imu_tools工具
sudo apt-get install ros-kinetic-imu-tools
- 执行命令,启动imu:
$ roslaunch razor_imu_9dof razor-pub-and-display.launch
- 启动rviz
rviz
- 选择对应的插件,rviz_imu_plugin
- 选择对应的话题,/imu_data
利用GUI测试
- 执行命令:
$ roslaunch razor_imu_9dof razor-pub-and-display.launch
- 显示图:
利用话题输出测试:
- 执行命令:
$ roslaunch razor_imu_9dof razor-pub.launch
执行:
$ rostopic list
$ rostopic echo /imu
传感器校准:
- 根据传感器的好坏,通过校准传感器可以大大提高Razor AHRS的精度和响应性。
- 如果没有校准,你可能会得到像这样的效果
- 但你roll翻滚时候会出现yaw偏航漂移
- 指向上,姿态实际没有指上
- 根据校准测量结果,您编译到固件中,固件会尝试补偿所有三个传感器:
- 1.错误缩放的传感器轴:例如 如果加速度计x轴测量200个单位,而加速度计y轴测量230个单位且施加相同的力。
- 每个传感器的所有三个轴应该是一致的。
- 2.零偏移:例如 如果任何陀螺仪轴在电路板不移动时报告非零值。
- 现在这些补偿随着时间的推移不具有适应性。
- 它们保持不变,它们与您硬编码到固件中的校准测量结果一样好。
磁力计相关:
- 磁力计在校准方面具有一些特殊性,因为不仅存在内部传感器的不准确性和噪声,还存在外部磁场失真。
- 良好的磁力计性能对于在所有方向上产生正确的航向至关重要
- 因此,如果您在扭曲的环境中进行校准,则始终会出现错误。
- 存在几种类型的磁场畸变。 首先是软铁和硬铁变形。
- 其次,失真源可以相对于传感器(即,与传感器一起移动和旋转)或独立于传感器(与世界相连或在世界上独立移动)。
- 要了解软铁和硬铁变形以及可能的补偿方法,请看参考1,参考2和参考3。
校准准备:
- 在校准前几分钟通电,这样传感器就可以预热了
- 打开$(find razor_imu_9dof)/src/Razor_AHRS/Razor_AHRS.ino文件
- 找到"USER SETUP AREA" / "SENSOR CALIBRATION"
- 这里是之后要修改的测量值的地方
- 选择对应的端口,开发板
- 打开串口监视器,一般会显示内容如下:
- 设置进入加速度校准模式,输入#oc
- 显示有:
accel x,y,z (min/max) = 69.95/76.29 -205.93/-198.97 -131.96/-116.09
校准加速度计
- 我们将尝试在每个轴上找到地球引力的最小和最大输出值。
- 移动电路板时,请缓慢移动电路板,以使应用的加速度尽可能小。 我们只想要纯粹的引力!
- 拿起电路板并用x轴直接指向下方(请记住:x轴=面朝向带有连接器孔的短边)。
- 当你这样做时,你可以看到x-maximum(第二个值)越来越大。
- 保持电路板非常稳定,再次发送#oc重置测量。
- 现在小心地将电路板向各个方向倾斜一点,直到值不再变大,并记下x最大值。
- 对相反的方向(x轴向上)做同样的事情以获得x最小值:进入位置,发送#oc以重置测量,找到x最小值并将其写下来。
- 对z轴(向下和向上)和y轴(向右和向左)执行相同的操作。
- 如果您认为通过摇动或移动电路板太快而搞砸了测量,您可以随时通过发送#oc来重置。
- 您现在应该拥有所有最小/最大值。 把它们写入到Razor_AHRS.ino。
- 注意:这样做时你必须非常小心! 即使用手指轻轻敲击电路板也会弄乱测量(试试!)并导致校准错误。
- 经常使用#oc并仔细检查你的最小/最大值)
校准陀螺仪
- 将Razor AHRS放在桌面上。
- 我们仍处于加速度计的校准模式。 发送#on两次,这会将校准跳过磁力计移动到陀螺仪的校准模式。
- 显示有:
gyro x,y,z (current/average) = 0.00/0.00 -0.00/-0.00 0.00/0.00
- 等待10秒钟,不要移动Razor AHRS。 它将收集并平均所有三个轴上陀螺仪的噪声。
- 可以看到如
gyro x,y,z (current/average) = -29.00/-27.98 102.00/100.51 -5.00/-5.85
- 如果您认为通过摇动或移动电路板搞乱了测量,可以通过发送#oc来重置。
- 取每对的第二个值并将它们放入Razor_AHRS.ino中。
校准磁力计
- 此过程可补偿硬铁和软铁错误。
- 仍然,在两种情况下,失真源必须在传感器坐标系中固定,即与传感器一起移动和旋转。
- 要开始校准,请将传感器放在稍后将使用的磁环境中
- 例如 在机器人的确切位置。 机器人的电机中有很强的磁铁,磁力计经常安装在机器人上方以形成物理隔离。
- 使用“测试AHRS”部分中的一个步骤显示Razor AHRS输出
- 测试传感器是否受到机器人附近的影响。
- 将Razor AHRS移动得离机器人越来越远,同时保持姿态不变,并确保所需安装位置的读数不受机器人附近的影响。
- 测试电机运行时传感器是否受影响。
- 向前和向后运行机器人电机(机器人在支架上!)。 如果输出发生变化,则需要将Razor AHRS远离机器人。
- 下载并安装Processing。 我们将使用它来编译和运行测试程序。
- 退出从传感器读取的所有应用程序(例如串行监视器,3D可视化GUI,...)
- 并运行Processing,打开位于$(find razor_imu_9dof)/magnetometer_calibration/Processing/Magnetometer_calibration
- 注意:您必须首先安装EJML库,否则草图将不会运行。
- 怎么做? 请查看Magnetometer_calibration.pde顶部的NOTE。
- 尝试以某种方式旋转传感器,以便覆盖所有方向,以便产生或多或少均匀覆盖球体的点。
- 在一个大多没有失真的环境中,这看起来像这样:
- 点击SPACE并观察处理控制台
- 您将找到一些代码行,您必须在“用户设置区域”/“传感器校准”下输入固件,然后您就完成了。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号