文章目录
- 概述
- 一、定义介绍
- 二、操作教程
- (一)、下载并编译imu_tools功能包
- 1.创建工作空间并初始化
- 2.下载imu_tools并编译
- (二)、修改配置
- 1.修改imu_tools源码
- 2.修改launch文件
- 3.启动解算
概述
本文详细介绍了如何使用ROS自带的工具解算6轴IMU,获取其位姿。
一、定义介绍
Intel的Realsense中自带了IMU,官方也提供了ROS包使用,但官方提供的ROS包只能发布六轴信息,而我们常用的位姿信息却没有进行解算。因此,本节教大家如何使用ROS自带的“imu_tools”功能包来解算位姿。本节不涉及IMU解算原理,仅提供使用教程。以下是“imu_tools”功能包的Github官网:https://github.com/CCNYRoboticsLab/imu_tools/tree/melodic
二、操作教程
(一)、下载并编译imu_tools功能包
1.创建工作空间并初始化
自己创建一个工作空间,并初始化,可以使用如下命令
catkin_init_workspace
工作空间可以如下图
2.下载imu_tools并编译
①在src目录下使用如下命令从git上下载该功能包
git clone -b <YOUR_ROSDISTO> https://github.com/CCNYRoboticsLab/imu_tools.git
<YOUR_ROSDISTO> 替换为你的ros版本,例如我的ros是melodic版本,则使用如下命令:
git clone -b melodic https://github.com/CCNYRoboticsLab/imu_tools.git
②使用如下命令安装依赖
rosdep install imu_tools
此时很多人会报错,给出一个简单的解决方案,去工作空间目录下catkin_make一下,然后再回到src使用上面的命令
③编译imu_tools
catkin_make
此时很有可能报错,因为缺少一些库,比如报错
Could not find a package configuration file provided by "tf" with any of
the following names:
tfConfig.cmake
tf-config.cmake
那就直接装一下,虽然不知道缺什么包,反正看到tf,那就补全一下看看,我反正就是直接加星号,全装。以后要是缺个什么rvizxxx,那就rviz补全看看,认识就装那个,不认识就加星号全装。
sudo apt-get install ros-melodic-tf*
至此,编译便已经完成了。
(二)、修改配置
1.修改imu_tools源码
找到src/imu_tools/imu_complementary_filter/src/complementary_filter_ros.cpp,有如下代码:
// Register IMU raw data subscriber.
imu_subscriber_.reset(new ImuSubscriber(nh_, ros::names::resolve("imu") + "/data_raw", queue_size));
修改为
imu_subscriber_.reset(new ImuSubscriber(nh_, "/camera/imu", queue_size));
这个话题是订阅的imu话题,需要与你发布6轴信息的话题对应。
同样在src/imu_tools/imu_complementary_filter/src/complementary_filter_ros.cpp下,下面这个话题是该包发布解算后信息的话题,如果需要也可自行修改
// Register publishers:
imu_publisher_ = nh_.advertise<sensor_msgs::Imu>(
ros::names::resolve("imu") + "/data", queue_size);
2.修改launch文件
找到src/imu_tools/imu_complementary_filter/launch/complementary_filter.launch,修改为如下,其实就是把原来的里面nodelet节点给注释掉了,然后又加了两个参数。
<!-- ComplementaryFilter launch file -->
<launch>
#### Nodelet manager ######################################################
<!-- <node pkg="nodelet" type="nodelet" name="imu_manager"
args="manager" output="screen" />
#### IMU Driver ###########################################################
<node pkg="nodelet" type="nodelet" name="PhidgetsImuNodelet"
args="load phidgets_imu/PhidgetsImuNodelet imu_manager"
output="screen">
# supported data rates: 4 8 16 24 32 40 ... 1000 (in ms)
<param name="period" value="4"/>
</node> -->
#### Complementary filter
<node pkg="imu_complementary_filter" type="complementary_filter_node"
name="complementary_filter_gain_node" output="screen">
<param name="do_bias_estimation" value="true"/>
<param name="do_adaptive_gain" value="true"/>
<param name="use_mag" value="false"/>
<param name="gain_acc" value="0.01"/>
<param name="gain_mag" value="0.01"/>
<param name="publish_debug_topics" value="false"/>
<param name="publish_tf" value="true"/>
</node>
</launch>
3.启动解算
①首先启动你的imu,查看发布话题正常
②然后启动complementary_filter.launch,记得source
roslaunch imu_complementary_filter complementary_filter.launch
如图,有orientation了
来自:九七的ROS
作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!