ROS2无目标激光雷达与相机联合标定实战:从环境配置到精准校准

1. 环境准备:搭建你的标定工作台

大家好,我是老张,在机器人感知这块摸爬滚打了十来年,今天咱们来聊聊一个非常实用的话题:在ROS2环境下,不用任何棋盘格、AprilTag这些物理标定板,怎么把激光雷达和相机给“对齐”了。这也就是所谓的“无目标联合标定”。听起来有点玄乎?其实原理就是利用环境中自然存在的、稳定的几何特征,比如墙角、桌沿、规则的建筑边缘,让算法自己去寻找雷达点云和图像像素之间的对应关系,从而算出它们之间的坐标变换。这对于自动驾驶小车、移动机器人来说太重要了,毕竟你总不能指望它走到哪都带着一块大棋盘格吧。

这次我们用的核心工具是 direct_visual_lidar_calibration,一个在GitHub上开源的工具包。它的最大优点就是“无目标”,适应性非常强。在开始之前,我得先泼点冷水,这个过程对系统环境有一定要求,步骤也比较多,但别怕,跟着我一步步来,把基础打牢,后面就顺畅了。我们的战场是 Ubuntu 22.04ROS2 Humble,这是目前最稳定的组合之一。硬件方面,我这次用的是Livox Avia这款非重复扫描的固态激光雷达和一个普通的USB相机,但方法本身是通用的,理论上支持各种雷达和相机。

首先,我们把系统的基础依赖装好。打开你的终端,咱们一起操作。

sudo apt update
sudo apt install -y libomp-dev libboost-all-dev libglm-dev libglfw3-dev libpng-dev libjpeg-dev

这几行命令安装了编译和运行所需的一系列库,比如OpenMP用于并行计算,Boost提供各种C++工具,GLM和GLFW用于后续的可视化,PNG和JPEG库用于处理图像。这些都是基石,缺一不可。

接下来是重头戏,安装两个核心的数学优化库:GTSAMCeres Solver。标定本质上就是一个优化问题,我们需要找到那个让雷达点云投影到图像上最“贴合”的变换矩阵,这两个库就是干这个的专家。

安装GTSAM:

git clone https://github.com/borglab/gtsam.git
cd gtsam
git checkout 4.2a9
mkdir build && cd build
cmake .. -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \
         -DGTSAM_BUILD_TESTS=OFF \
         -DGTSAM_WITH_TBB=OFF \
         -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \
         -DGTSAM_USE_SYSTEM_EIGEN=ON
make -j$(nproc)
sudo make install

这里有个关键点,-DGTSAM_USE_SYSTEM_EIGEN=ON 这个选项对于Ubuntu 22.04及其之后的系统特别重要。它告诉CMake使用系统自带的Eigen库,而不是GTSAM自己内置的版本,能有效避免后面令人头疼的版本冲突错误。我当初没加这个,编译主项目时直接报错,折腾了半天。

安装Ceres Solver:

git clone --recurse-submodules https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
git checkout e47a42c2957951c9fafcca9995d9927e15557069
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DBUILD_BENCHMARKS=OFF -DUSE_CUDA=OFF
make -j$(nproc)
sudo make install

注意这里的 -DBUILD_BENCHMARKS=OFF。如果你直接按照默认参数编译,很可能会在链接阶段遇到找不到 libtest_util 的错误。这是因为Ceres的测试和基准模块依赖一些内部库,我们并不需要。关掉它就能顺利编译通过。这也是一个常见的坑,记得避开。

最后,我们安装一个用于结果可视化的工具 Iridescence。它能让我们直观地看到标定前后,雷达点云投影到图像上的效果对比,非常有用。

git clone https://github.com/koide3/iridescence --
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值