SLAM——多传感器标定

发布于:2025-03-29 ⋅ 阅读:(18) ⋅ 点赞:(0)

系统ubuntu18.04+ROS melodic

标定参考:SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

记录手持多传感器融合设备标定全过程_acce bias-CSDN博客

相机内参标定(kalibr工具)

标定板6x6下载(需要科学上网):Downloads · ethz-asl/kalibr Wiki · GitHub

kalibr源码下载:GitHub - ethz-asl/kalibr: The Kalibr visual-inertial calibration toolbox

kalibr安装参考:

SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

内容:

# for Ubuntu18.04
# 安装依赖
sudo apt update
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
sudo pip install python-igraph --upgrade
# 创建工作空间并下载源码
mkdir -p kalibr_ws/src
cd kalibr_ws/src
git clone https://github.com/ethz-asl/kalibr.git
# 编译
cd ..
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin_make -DCMAKE_BUILD_TYPE=Release -j4

(依赖项建议一个一个下载)

问题一:对于我使用的是嵌入式设备,编译kalibr时出现编译卡顿、内存不足报错。

参考:Jeston Nano(视觉环境配置,一定要版本对应)_jestnano-CSDN博客

问题二:录制图像bag包的时候,将录制路径写入了kalibr_workspace/camera/my_image_color.bag录制bag包总是4.1KB,文件大小不对,解决办法:在主目录下录制bag,kalibr_workspace没有写入权限。

本文使用的是IMX219单目摄像头,也可以使用下面的方法进行标定

相机内参标定使用:camera_calibration/Tutorials/MonocularCalibration - ROS Wiki

启动单目相机的roslaunch ,终端输入参考(转动一定图像张数点击calibrate,save保存数据):imx219-83 ros使用_imx219驱动-CSDN博客

注意:kalibr使用的环境是python2.7

使用python3.6时在标定相机rosrun kalibr使用Tab键补全的时候没反应。

IMU内参标定(本次使用的是嵌入雷达的六轴IMU)

1.注意修改自己的串口权限sudo chmod 777 /dev/XXXX(当再次roslaunch时终端报错,大概率是权限问题)。打印串口信息ll /dev

2.另开终端roscore。rostopic list ERROR: Unable to communicate with master!(报错信息)

3.启动激光雷达的roslaunch

4.查看自己的话题是否正确发布:rostopic list

5.查看IMU输出信息:rostopic list 话题名(imu topic)

6.录制bag包。rosbag record 话题名 -O XX.bag

7.录制完毕:rosbag info XX.bag

8.开始标定:下载code_utils、imu_utils(一定要先编译code_utils,在编译imu_utils)

参考:https://zhuanlan.zhihu.com/p/618811340?utm_id=0

参考:VIO 中 IMU 的标定流程 (1/3) - imu_utils 使用备忘_imu标定方法及流程-CSDN博客

1)下载code_utils

报错1.backward.hpp

方法一:sudo apt-get install libbackward-cpp-dev

方法二手动安装。

git clone https://github.com/bombela/backward-cpp.git

cd backward-cpp
mkdir build && cd build
cmake ..
make
sudo make install

安装完将code_utils/src/sumpixel_test.cpp中#include"backward.hpp"双引号内改为绝对路径

报错二:error: redefinition of ‘backward::SignalHandling backward::sh’
 backward::SignalHandling sh;
                          ^~
In file included from /home/ncu408/imu_calib_catkin_ws/src/code_utils/src/sumpixel_test.cpp:3:0:
/home/ncu408/backward-cpp/backward.cpp:40:26: note: ‘backward::SignalHandling backward::sh’ previously declared here
 backward::SignalHandling sh;

注释掉报错一路径里面的backward::SignalHandling sh;

报错三:error: ‘vector’ in namespace ‘std’ does not name a template type
     DLT( const std::vector< Eigen::Vector3d >& pts_2, const std::vector< Eigen::Vector3d >& pts_3 );
       将相应路径中加入#include <vector>

2)下载imu_utils:直接在上述的code_utils的功能包/src/下git clone

3)roslaunch imu_utils xsens.launch (修改imu_utils/xsens.launch中imu_topic的value="/IMU_data"为自己imu的topic,参数max_time_min后面的value也要修改,比如我录制的时长是两个多小时,value=100)

3)rosbag play -r 200 ~/XXX.bag(一定要加频率200,要不然太慢了)

rolaunch出现wait for imu data只需要等待计算即可,计算完毕会出现结果(终端不一定出现done)。

多传感器融合标定参考:记录手持多传感器融合设备标定全过程_acce bias-CSDN博客

参考:SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

相加+IMU外参标定
使用kalibr:SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

如果rosrun之后不出结果,显示无conner或者是弹出的窗口中标定板没有出现相机标定的红蓝色则有可能图像质量不佳,需要重新录制bag文件。

如果在rosrun kalibr kalibr_calibrate_XX显示报错无kalibr_calibrate_XX,尝试将source ~/kalibr_ws/devel/setup.bash写入.bashrc文件。

相机+lidar外参标定:

calibration_camera_lidar:(nlopt和calibration_camera_lidar.git放在同一个功能包里面)

cmake下载:Download CMake

(不要随意更改cmake版本,要不然其他运行不了)cmake3.18.0参考:ubuntu18.04安装最新cmake3.18_ubuntu install cmake 3.18-CSDN博客

参考: SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

nlopt下载:GitHub - stevengj/nlopt: library for nonlinear optimization, wrapping many algorithms for global and local, constrained or unconstrained, optimization

工具下载:GitHub - XidianLemon/calibration_camera_lidar: 从autoware分离出来的相机雷达联合标定ros包

编译报错参考:ubuntu18.04安装calibration_toolkit标定工具箱可能遇到的编译错误_ubuntu18.04 安装calibration-CSDN博客

calibration_camera_lidar编译成功但是rosrun没有calibration_toolkit节点:

参考:(opencv版本冲突,切勿盲目切换版本信息)其中报错的CV_RGB修改为cvScalar

SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

使用autoware的calibration_toolkit联合标定双目相机和激光雷达(ZED and VLP-16)_尽量保证向外侧的平面法向量垂直于标定板平面-CSDN博客

参考:SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

使用autoware的calibration_toolkit联合标定双目相机和激光雷达(ZED and VLP-16)_尽量保证向外侧的平面法向量垂直于标定板平面-CSDN博客

使用Autoware标定工作箱calibration进行相机和三维激光雷达的联合标定_三维建模的雷达 摄像头需要联合标定吗-CSDN博客