lidar_camera_calibration项目——激光雷达和相机联合标定

本文介绍了一种激光雷达与相机外参标定方法,通过开源项目lidar_camera_calibration实现。该项目利用aruco标记辅助计算旋转平移矩阵,实现传感器融合。文章详细描述了配置、编译及运行过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为无人驾驶中常用的传感器,激光雷达和相机都有自己特有的优势,然而它们也各有缺点和不足,现在主流的感知算法都向传感器融合方法靠拢,这就涉及到不同传感器之间的标定问题,本博文主要针对一个开源项目讲解激光雷达和相机之间的外参标定,即如何通过实验的方法得到激光雷达和相机之间的旋转平移矩阵。

项目地址https://github.com/ankitdhall/lidar_camera_calibration
项目描述:该功能包用来找到激光雷达和相机之间的旋转平移变换,该包使用aruco_ros和一个稍微修改的aruco_mapping包为依赖,lidar_camera_calibration/pointcloud_fusion可以用来融合点云和两个双目相机的信息,两个双目相机都和激光雷达进行过外参标定。
在使用该包之前,需要先做好相机内参标定,因为需要一些相机内参参数的一些信息。

项目截图:

lidar_camera_calibration ROS包配置过程记录

依赖配置:

1、先将整个Github包clone下来,放在已经建好的ROS工作空间下,clone完成后生成文件夹lidar_camera_calibration;
2、将文件夹lidar_camera_calibration下的dependencies路径下的两个目录aruco_mapping和aruco_ros拷贝到ROS工作空间的src路径下;
准备编译:由于各个包之间有依赖关系,必须按以下顺序安装
3、先编译aruco_ros包

catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco_ros"

4、再编译lidar_camera_calibration包

catkin_make -DCATKIN_WHITELIST_PACKAGES="lidar_camera_calibration"

此时可能会报错,缺少velodyne_msgs包,需要安装参考以下网站:
http://wiki.ros.org/velodyne/Tutorials/Getting Started with the HDL-32E

安装过程:

项目依赖velodyne ROS包,需要下载安装:

sudo apt-get install ros-kinetic-velodyne

5、再次编译lidar_camera_calibration

catkin_make -DCATKIN_WHITELIST_PACKAGES="lidar_camera_calibration"

6、编译aruco_mapping

catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco_mapping"

运行过程

编译通过后,通过find_transform.launch文件启动所需节点和设置节点参数。
在运行launch文件之前,需要修改launch文件中的部分内容:
1、launch文件中默认将ArUco mapping节点注释掉了,可能需要启动该节点,并修改其中的重映射命令使得获取正确的相机图片话题:

 <remap from="/image_raw" to="/frontNear/left/image_raw"/>

修改相机标定文件路径参数(.ini格式文件),aruco标记的个数,标记尺寸(单位为米)
**注:**图片话题消息类型为sensor_msgs/Image类型
aruco mapping用来在图像中找到aruco marker,并发布6DOF的位姿.
http://wiki.ros.org/aruco_mapping
2. lidar_camera_calibration_rt话题是由aruco_mapping包发送出来的,包含了利用aruco marker计算出来的旋转平移矩阵数据
启动标定节点前,需要保证aruco标记能够在相机画面内可见,并且需要使这些标记的ID号从左到右按升序排列,运行过程第一次需要手动标记line-segments
标记过程:
每块板上都有四个线段,需要从左到右依次标记每个板上的直线段;此处对于每个板上的直线标记是在该线段的周围绘制一个四边形,每次点击一个点,并按下键盘确认,得到四个点之后就得到了包围一根直线的一个四边形,按这个方法把一个板上的直线从左上按顺时针依次标记。
标记完所有的直线段之后,就得到了最终的变换矩阵,中间值存储在conf/points.txt
points.txt文件

输出: 3x1的平移矩阵和3x3的旋转矩阵,设置迭代多少次,就有多少个这样的矩阵生成。通过对n次迭代生成的平移矩阵求平均,即可得到最终的平移矩阵,通过对n个旋转矩阵转换成四元数,然后求平均,即可得到最终的旋转矩阵,从而得到最终的标定矩阵。

程序解析

注: 该部分由于自己时间有限,暂时还没有完全写完,有空继续更新。
lidar_camera_calibration/conf目录包含了许多用来完成相机和雷达标定过程的配置文件

**注意:**其中的cloud_intensity_threshold用来滤除反射强度低于该值的点云,如果发现标定板上点云太少,可能需要修改该值试一下;
use_camera_info_topic用来表示是否使用相机消息的话题来获得相机的标定参数,否则从该config文件中读取标定参数,默认从文件读取;
相机投影矩阵对应的是CameraInfo中的矩阵K,表示的是将相机坐标系下的三维点,对应到像素坐标系下的位置。

标定计算过程由Find_RT.h文件完成;

<think>好的,我现在需要帮助用户找到在Ubuntu 20.04上进行激光雷达相机标定的教程。用户提到之前尝试安装Autoware时遇到较多问题,所以转向了lidar_camera_calibration这个仓库。我需要结合用户提供的引用信息来整理答案。 首先,用户提供的引用[1]是一个GitHub仓库,由ankitdhall维护,可能包含标定工具的使用方法。引用[2]提到VLP-16激光雷达适合使用ILCC、LiDAR camera calibrationAutoware的标定工具。不过用户可能因为Autoware安装问题,更倾向于其他方法。 接下来,我需要确认lidar_camera_calibration这个仓库是否支持Ubuntu 20.04。通常,GitHub仓库的文档会说明兼容的系统版本,如果用户已经成功使用过,可能说明可行。另外,用户提到的替代方案如ILCCAutoware的工具是否需要特定版本的Ubuntu?比如Autoware可能更适配Ubuntu 18.04,但用户可能在20.04上遇到兼容性问题,所以才会寻找其他方法。 然后,我需要分步骤整理教程的大纲。首先安装依赖项,比如ROS Noetic,因为Ubuntu 20.04对应的ROS版本是Noetic。然后克隆仓库,安装必要的库如PCLOpenCV。编译过程中可能遇到的问题需要提醒用户,比如依赖缺失或版本冲突。接着是数据采集的步骤,需要同时获取激光雷达相机的数据,确保时间同步空间对齐。运行标定工具后,验证结果是否正确,可能需要用到标定板。 相关工具方面,除了lidar_camera_calibration,还可以提到Autoware的标定工具,尽管安装有困难,但或许有变通方法。ILCC也是一个选项,但需要确认是否支持VLP-16Ubuntu 20.04。此外,ROS中的内置工具如cam_lidar_calibration可能值得推荐。 用户可能遇到的问题包括依赖安装错误、编译失败、数据同步问题,以及标定结果不准确。需要给出解决建议,比如检查ROS环境、安装推荐的版本、使用时间同步设备等。 最后,生成的相关问题要覆盖安装问题、标定方法比较、时间同步解决方案以及标定结果评估方法,这样用户可以有更多参考信息。</think>以下是在Ubuntu 20.04上进行激光雷达相机联合标定LiDAR-Camera Calibration)的分步指南: ### 1. 推荐工具选择 根据硬件型号选择工具: - **VLP-16激光雷达**推荐采用ILCC、ANKITDHALL的标定工具或Autoware标定工具[^2] - **Livox/Hesai雷达**建议优先使用厂商提供的SDK ### 2. 安装基础依赖 ```bash # 安装ROS Noetic(Ubuntu 20.04官方支持) sudo apt install ros-noetic-desktop-full # 安装PCL点云库 sudo apt install libpcl-dev pcl-tools # 安装OpenCV sudo apt install libopencv-dev python3-opencv ``` ### 3. 安装lidar_camera_calibration ```bash git clone https://github.com/ankitdhall/lidar_camera_calibration.git cd lidar_camera_calibration catkin_make # 若失败需检查依赖项版本 source devel/setup.bash ``` ### 4. 数据采集规范 - 使用棋盘格标定板(推荐尺寸$0.5m \times 0.5m$) - 同步要求: $$ \Delta t < \frac{1}{2f_{sensor}} $$ 其中$f_{sensor}$为传感器采样频率 - 建议采集10-15组不同角度数据 ### 5. 标定执行流程 ```python # 启动标定节点 roslaunch lidar_camera_calibration find_transform.launch # 参数配置建议 camera_info_topic: "/camera_info" image_topic: "/image_raw" pointcloud_topic: "/velodyne_points" ``` ### 6. 验证标定结果 通过重投影误差评估: $$ e_{reproj} = \frac{1}{N}\sum_{i=1}^{N}||p_i - \hat{p}_i||_2 $$ 其中$p_i$为观测值,$\hat{p}_i$为投影值,建议$e_{reproj} < 3$像素 ###
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值