在安装imu_utils之前需要先安装ceres和eigen库、code_utils。
1、安装ceres
(1)、下载ceres源码,不建议下载最新版本,本文下载1.14.0(点击右侧的Releases查看历史版本)
https://github.com/ceres-solver/ceres-solver
(2)、解压压缩包,在终端进入该目录,然后新建build文件夹,并进入build中
tar -zxvf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0/
mkdir build
cd build/
(3)、安装ceres依赖
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
(4)、编译安装
cmake ..
make
sudo make install
2、安装eigen
本文安装eigen3.3.7
(1)、下载链接:
https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
(2)、解压压缩包,在终端进入该目录,然后新建build文件夹,并进入build中
sudo tar -xzvf eigen-3.3.7.tar.gz
cd eigen-3.3.7
mkdir build
cd build
(3)、编译安装
cmake ..
make
sudo make install
(4)、移动头文件
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
3、安装code_utils
(1)、安装依赖项
sudo apt-get install libdw-dev
(2)、进行到你的ros工作空间的src目录下
不知道如何创建ros工作空间也可以参考我的博客:
ubuntu下如何创建ros工作空间、创建ros功能包、创建ros节点_ubuntu创建工作空间_╰︶ ̄ 莫等闲۩۩۩的博客-CSDN博客https://blog.csdn.net/qq_49959714/article/details/127028396
cd ~/catkin_ws/src
(3)、将代码克隆到工作空间的src目录下
git clone https://github.com/gaowenliang/code_utils.git
(4)、返回到工作空间目录下,并执行编译
cd ..
catkin_make
此时可能会遇到一些问题:
问题1:找不到backward.hpp
解决方法: 把src/code_utils/include/backward.hpp文件复制到src/code_utils/src中
问题2: 没有opencv2/core.hpp那个文件或目录
解决办法:
打开报错文件,将#include <opencv2/core.hpp>修改为#include <opencv2/core/core.hpp>
4、安装imu_utils
cd ~/catkin_ws/src
git clone https://github.com/gaowenliang/imu_utils.git
cd ..
catkin_make
此时可能会遇到一些问题:
解决办法:
第一个错误是没有包含这个数据结构的头文件,打开该文件添加即可:
#include <fstream>
第二个是两个不同的数据类型进行了比较,改成相同就可以了:
for (unsigned int index = 0; index < gyro_ts_x.size( ); ++index )
重新编译:
catkin_make
5、IMU内参标定
(1)、驱动imu_utils
cd ~/catkin_ws
source devel/setup.bash
roslaunch imu_utils xsens.launch
(2)、播放imu数据(要注意查看自己的imu数据的话题与launch文件中的是否一致,不一致需要修改launch文件)
rosbag play imu.bag
此处可能会一直出现wait for imu data
这时需要修改xsens_driver.launch文件中的max_time_min的值,这个值改为小于自己的bag持续时间。
如果还是出现wait for imu data,等待数据播放完毕应该就可以出现imu内参数据了
imu标定内参参数将保存在imu_utils/data目录下的xsens_imu_param.yaml文件中