简介:介绍WHEELTEC 9轴IMU 在EHub_tx1_tx2_E100载板,TX1核心模块环境(Ubuntu18.04)下测试ROS驱动,配置驱动环境,RVIZ查看数据,本文的前提条件是你的TX1里已经安装了ROS版本:Melodic。关于测试硬件EHub_tx1_tx2_E100载板请查看:EdgeBox_EHub_tx1_tx2_E100 开发板评测_机器人虎哥的博客-CSDN博客
大家好,我是虎哥,最近都在看如何机器人导航,查阅了好几款IMU的方案,淘宝搜索采购的WHEELTEC 9轴IMU,这儿完整再现一下我的测试配置过程,分享给大家。
惯性测量模块(IMU,Inertial Measurement Unit)组成。IMU提供飞行器在空间姿态的传感器原始数据,一般由陀螺仪传感器/加速度传感器/电子罗盘提供飞行器9DOF数据。该单元能够反馈自身的运动状态(加速度)和位姿,是机器人身上最重要的传感器之一。IMU能够应用在在机器人导航,机器人控制等诸多方面,可以说IMU的好坏对于一个机器人来说有着近乎决定性的作用
IMU中使用的传感器基本上都是微机电系统(MEMS),是半导体工业中非常重要的一个分支。
IMU的选型方案非常多,从几十到几千乃至上万不等。一般IMU内部会包含陀螺仪和加速度计,陀螺仪用来反馈角速度和计算位姿,加速度计用于反馈线速度,陀螺仪和加速度各自提供三个轴向的速度数据,所以一般这种IMU被称为六轴IMU。基于不同原理去制作的陀螺仪和加速度计,能够达到的精度范围也有一定的区别。
但是对于IMU来说,总会有一个难以克服的问题,即累积误差。由于IMU通过是通过对内部的陀螺仪获取的角速度数据对时间进行积分获取角度数据的,无论一个陀螺仪的精度有多高,总是会在每个时刻产生一些误差,随着积分效应,误差逐渐累积,最后就会产生累积误差。
为了解决累积误差问题,一般厂家会在IMU内部再集成一个三轴磁力计,从而构成一个所谓的九轴IMU。磁力计的作用是对IMU计算出的位姿定期进行较准,从而解决累积误差。但是磁力计不适合在电磁环境复杂的场合下使用,如果附近有能够产生强磁场的设备,会对磁力计的数据产生非常大的影响。
具体驱动和介绍资料,请咨询购买方,或者直接找厂家要
mkdir -p ~/Workspace/sensor_ws/src
cd ~/Workspace/sensor_ws/
catkin_make
source devel/setup.bash
cd ~/Workspace/sensor_ws/src
cd ~/Workspace/sensor_ws
#单独编译
catkin_make -DCATKIN_WHITELIST_PACKAGES="fdilink_ahrs"
#全部编译
catkin_make
#全部编译
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
#以上几条指令都可以实现编译
编译完成。
编译过程如果有如下报错:
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "serial" with any
of the following names:
serialConfig.cmake
serial-config.cmake
Add the installation prefix of "serial" to CMAKE_PREFIX_PATH or set
"serial_DIR" to a directory containing one of the above files. If "serial"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
fdilink_ahrs/CMakeLists.txt:9 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/nvidia/Workspace/sensor/build/CMakeFiles/CMakeOutput.log".
See also "/home/nvidia/Workspace/sensor/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
只需要安装缺少的依赖包就好了
sudo apt-get install ros-melodic-serial
lsusb
ls /dev
配置打开USB转串口权限
cd ~/Workspace/sensor_ws/src/fdilink_ahrs
chmod 777 wheeltec_udev.sh
vim wheeltec_udev.sh
sudo ./wheeltec_udev.sh
sudo reboot
其中wheeltec_udev.sh文件内容修改如下:
执行完上面命令后,就会实现串口映射。
可以看到多了一个fdilink_ahrs虚拟设备。
cd ~/Workspace/sensor_ws
source devel/setup.bash
roslaunch fdilink_ahrs ahrs_data.launch
现在通过以下命令在ROS 上打印 IMU 值:
#新开一个终端
cd ~/Workspace/sensor_ws
source devel/setup.bash
rostopic list
/euler_angles
/gnss_data
/gps/fix
/imu
/mag_pose_2d
/magnetic
/rosout
/rosout_agg
#打印 IMU 值
rostopic echo /imu
#默认200HZ的数据输出频率
rostopic hz /imu
subscribed to [/imu]
average rate: 199.984
min: 0.005s max: 0.005s std dev: 0.00008s window: 191
average rate: 199.992
min: 0.005s max: 0.005s std dev: 0.00008s window: 391
average rate: 199.995
min: 0.005s max: 0.005s std dev: 0.00009s window: 591
^Caverage rate: 199.996
min: 0.004s max: 0.006s std dev: 0.00010s window: 633
打开终端,启动IMU节点
#如果上面的启动还是存在的,就直接跳过这步
cd ~/Workspace/sensor_ws
source devel/setup.bash
roslaunch fdilink_ahrs ahrs_data.launch
打开新终端,启动rviz
rosrun rviz rviz -f gyro_link
Rviz中点击左下角Add添加rviz_imu_plugin,可以看见有坐标系出现,如果没有需要安装 (sudo apt-get install ros-melodic-imu-tools 安装imu功能包)
这个时候你移动IMU,箭头是会正常移动的。
以上手册和驱动也可以从我自己的资源列表获取和下载。
nomachine ARM 安装包获取:nomachineV8.2.3-3ARM架构下的安装包-嵌入式文档类资源-CSDN下载
纠错,疑问,交流: [email protected]