LPMS-IG1 IMU内参标定流程
1、IMU驱动安装
参考IMU官网驱动安装流程,链接:https://www.alubi.cn/support/download 下载openzen中的rosdrive,根据readme文件安装,要求g++ version 7.0和cmake version 3.10
首先建立一个工作空间openzen_ws/src
mkdir -p openzen_ws/src
进入工作空间,通过git获取安装包
cd openzen/src
git clone --recurse-submodules https://bitbucket.org/lpresearch/openzenros.git
在工作空间下编译
cd ..
catkin_make
IMU通过USB 和电脑连接,给串口权限
sudo chmod 777 /dev/ttyUSB0
在新的命令行窗口运行roscore后,在工作空间下运行驱动
source devel/setup.bash
rosrun openzen_sensor openzen_sensor_node
发布的话题节点为/imu_data,通过以下命令查看话题消息
rostopic echo /imu_data
2、标定软件安装
安装相应依赖:
sudo apt-get install libdw-dev
IMU标定工具参考港科大,包括code_utils和imu_utils两部分
由于imu_utils依赖code_utils,所以不要同时把imu_utils和code_utils一起放到src下进行编译
code_utils链接:https://github.com/gaowenliang/code_utils
imu_utils链接:https://github.com/gaowenliang/imu_utils
code_utils依赖于ceres库,先安装ceres库
2.1 ceres库安装
安装依赖项:
sudo apt-get install liblapack-dev libsuitesparse-dev libgflags-dev libgoogle-glog-dev libgtest-dev libcxsparse3
其中最后一个libcxsparse依赖包对应版本如下:
Ubuntu16.04----libcxsparse3.1.4
Ubuntu18.04----libcxsparse3
Ubuntu20.04----libcxsparse3
Ubuntu22.04----libcxsparse3
然后更新
sudo apt-get update
下载ceres,https://github.com/ceres-solver/ceres-solver,在Tags下找到1.14.0的压缩包进行下载(tar.gz和zip都可以)
解压,并cd到ceres目录下
mkdir build
cd build
cmake ..
make
sudo make install
安装完成后,ceres头文件目录为/usr/local/include/ceres、库文件为/usr/local/lib/libceres.a
2.2 编译code_utils
建立工作空间LPMS-IG1_ws
mkdir -p LPMS-IG1_ws/src
将code_utils包放入工作空间src目录下,在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"为 #include “code_utils/backward.hpp”,编译code_utils
cd LPMS-IG1_ws
catkin_make
如果opencv版本为3.x,则编译无误
若opencv版本为4.x ,会报错:
error: 'CV_LOAD_IMAGE_UNCHANGED' was not declared in this scope
error: 'CV_MINMAX' was not declared in this scope
由于opencv4.x以上版本的API名字改了,修改对应文件中(code_utils/src/mat_io_test.cpp和code_utils/src/sumpixel_test.cpp)的名字即可:
CV_LOAD_IMAGE_UNCHANGED 改为 cv::IMREAD_UNCHANGED
CV_LOAD_IMAGE_GRAYSCALE 改为 cv::IMREAD_GRAYSCALE
CV_MINMAX 改为 NORM_MINMAX
重新编译即可。
备注:查看opencv版本
python3
import cv2
cv2.__version__
2.3 编译imu_utils
将imu_utils放入工作空间src目录下,编译imu_utils
catkin_make
标定软件安装完成。
3、录包
将IMU连接到电脑上,给串口权限,运行IMU驱动
让IMU静止不动两个小时,录制IMU的bag
rosbag record -o imu.bag /imu_data
4、标定
4.1 修改launch文件中话题名称
修改LPMS-IG1_ws/src/imu_utils/launch/文件夹下的A3.launch文件中的话题名为所录制的话题、标定数据保存地址和标定时间(通常为120分钟)
4.2 运行标定工具
cd LPMS-IG1_ws
source devel/setup.bash
roslaunch imu_utils A3.launch
4.3 倍速回放bag包
rosbag play -r 200 imu.bag
在标定工具命令行中,结果显示如下:
即标定成功
如果bag包回放完毕后,终端显示 wait for imu data. 有可能是bag包录制时间小于4.1设置的标定时间,修改标定时间即可
5、标定结果
标定后参数的数据文件如下
白噪声和偏置可以打开.yaml文件查看
最后根据scripts文件下的m文件,修改路径后画出Allan方差图