相机、雷达标定工具,以及雷达自动标定的思路

news2025/7/10 18:43:50

本篇我们来看一下自动驾驶传感器配置一个非常重要的模块,也就是传感器的标定。这里主要是对我之前修改的功能包的使用进行一个介绍.
对应的资源也已经上传了,0积分下载

安装

首先整个项目是使用ros1来进行启动的,但是要想正常编译,需要先安装三个对应的库.为了便于安装,我已经将安装功能封装成了对应的脚本.中间那个install_noetic.sh不是,其余两个是.
在这里插入图片描述
同时这里也提供对应库的源项目,分别是jsoncpp,pybind11,和Pangolin.接下来看一下对应的脚本怎么进行的:
在这里插入图片描述
在这里插入图片描述
由于项目源文件已经有了,所以不需要git clone了,我们在运行这两个脚本之前,需要先将源文件中的build给删除(这是上一次安装生成的文件,所以最好是删除掉防止干扰),否则安装可能会失败.
在这里插入图片描述
正常安装完三个依赖项之后,就能正常进行编译了:
在这里插入图片描述
在对应的工作空间下执行catkin_make
在这里插入图片描述

雷达标定

对于雷达与雷达的标定,我们运行:

source devel/setup.bash
roslaunch lidar2lidar run_lidar2lidar.launch

在这里插入图片描述
调整右侧的参数,直到主点云和标定点云重合在一起.
可以看一下如何去启动的luanch:
在这里插入图片描述
需要配置的三个参数就比较明显了,分别就是主雷达,需要标定的雷达,以及初始的旋转平移矩阵,这是一个json文件,并且是将旋转平移矩阵完全展开了,是一个4×4的矩阵形式.比如这里是把p64标定到qt点云中
在这里插入图片描述
当然点云的pcd需要自己去转一下,使用pcl_ros 的工具即可转换话题为一个pcd,/your_pointcloud_topic改为对应的话题,当然,采集时是需要禁止的,点云不能运动:

rosrun pcl_ros pointcloud_to_pcd input:=/your_pointcloud_topic

如果没有的话需要先安装一下

sudo apt-get install ros-$ROS_DISTRO-pcl-ros

这样就能完成两帧点云的标定了.

自动标定思路

自动标定利用的其实就是两帧点云的匹配关系,也就是我们定位中使用的ndt算法,只要给一个大致的初始点云位姿,就能比较快速的收敛,也就完成了激光雷达点云的半自动标定过程.
至于这里的ndt的标定的过程,这里就不赘述了,是不需要使用原始的ndt定位的,ndt的实现中,是有直接对于两帧点云的处理的,然后可以只对那部分进行编写,当然,为了能够快速收敛,还是需要有初始位姿的,如果初始位姿比较奇怪,人当然也是很难给出这个初始位姿的大致的值的.除了雷达之间的关系并不大,不难也比较麻烦.所以这里先只需要停留在这个思路上.

雷达与相机的标定

这个外参的标定就是需要将图片与点云进行一个对应,所以在标定之前,最好是要让图片中的特征和点云的特征明显一点
启动方式

source devel/setup.bash
roslaunch lidar2camera run_lidar2camera.launch

在这里插入图片描述

此时这里的launch就表示为
在这里插入图片描述

这里有四个东西作为输入,一个是图片png,一个是雷达点云pcd,一个是相机的内参center_camera-intrinsic.json,以及雷达和相机的外参(也是初始参数,修改的时候变的就是这个)

{
    "center_camera-intrinsic": {
        "sensor_name": "center_camera",
        "target_sensor_name": "center_camera",
        "device_type": "camera",
        "param_type": "intrinsic",
        "param": {
            "img_dist_w": 1920,
            "img_dist_h": 1080,
            "cam_K": {
                "rows": 3,
                "cols": 3,
                "type": 6,
                "continuous": true,
                "data": [
                    [
                        2109.75,
                        0,
                        949.828
                    ],
                    [
                        0,
                        2071.72,
                        576.237
                    ],
                    [
                        0,
                        0,
                        1
                    ]
                ]
            },
            "cam_dist": {
                "rows": 1,
                "cols": 4,
                "type": 6,
                "continuous": true,
                "data": [
                    [
                        -0.10814499855041504,
                        0.1386680006980896,
                        -0.0037975700106471777,
                        -0.004841269925236702
                    ]
                ]
            }
        }
    }
}
{
    "top_center_lidar-to-center_camera-extrinsic": {
        "sensor_name": "top_center_lidar",
        "target_sensor_name": "center_camera",
        "device_type": "relational",
        "param_type": "extrinsic",
        "param": {
            "time_lag": 0,
            "sensor_calib": {
                "rows": 4,
                "cols": 4,
                "type": 6,
                "continuous": true,
                "data": [
                    [
                        0.0125908,
                        -0.999895,
                        -0.00713773,
                        -0.0322306
                    ],
                    [
                        0.0119283,
                        0.00728786,
                        -0.999902,
                        -0.352079
                    ],
                    [
                        0.99985,
                        0.0125045,
                        0.0120187,
                        -0.574468
                    ],
                    [
                        0,
                        0,
                        0,
                        1
                    ]
                ]
            }
        }
    }
}

同样的也是调整可视化界面中的参数的值,让特征能够对应上即可.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2375473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vsomeip环境搭建保姆级教程

vsomeip环境搭建保姆级教程 ubuntu环境搭建 {% links %} site: VMware搭建ubuntu保姆级教程 url: https://zhuanlan.zhihu.com/p/1903219373906327339 desc: flechazo image: https://q1.qlogo.cn/g?b=qq&nk=2861099&s=5 color: “#9d5b8b” {% endlinks %} vsomei…

我的MCP相关配置记录

1.VSCode的Cline中的MCP {"mcpServers": {"github.com/modelcontextprotocol/servers/tree/main/src/github": {"autoApprove": [],"disabled": false,"timeout": 60,"command": "cmd","args&quo…

我们来学nacos -- 集群nacos2.5.1mysql8.4

2.5.1集群搭建 架构下载解压到3个文件夹初始化数据库&数据迁移检查端口可用配置cluster.confapplication.properties 使用mysql8.4的jar启动db.num is null报错datasource错误成功 nginx反向代理集群查看 架构 其中包含3个nacos节点,然后一个负载均衡器代理3个…

Rollup入门与进阶:为现代Web应用构建超小的打包文件

我们常常面临Webpack复杂配置或是Babel转译后的冗余代码,结果导致最终的包体积居高不下加载速度也变得异常缓慢,而在众多打包工具中Rollup作为一个轻量且高效的选择,正悄然改变着这一切,本文将带你深入了解这个令人惊艳的打包工具…

专题四:综合练习( 找出所有子集的异或总和再求和)

以leetcode1863题为例 题目分析: 找到每个子集,然后子集中的元素异或之后全部相加 算法原理分析: 画决策树:第一层为这个子集有一个元素 第二层这个子集有两个元素 从上往下罗列,把所有子集都罗列出来&#xf…

STM32 修炼手册

第一章 计算机体系结构(了解) 后续在板子上开发的时候,需要考虑是否有操作系统 方式一:有操作系统,通过c库通过os api操作硬件方式二:无操作系统, 通过c库通过固件库操作硬件 第二章 STM32开发板概述 板子/开发板&…

缓存(2):数据一致性

概述 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大弱一致性:这种一致性级别约束了系统在写入成功…

ppy/osu构建

下载 .NET (Linux、macOS 和 Windows) | .NET dotnet还行 构建:f5 运行:dotnet run --project osu.Desktop -c Debug

基于几何布朗运动的股价预测模型构建与分析

基于几何布朗运动的股价预测模型构建与分析 摘要 本文建立基于几何布朗运动的股价预测模型,结合极大似然估计与蒙特卡洛模拟,推导股价条件概率密度函数并构建动态预测区间。实证分析显示模型在标普500指数预测中取得89%的覆盖概率,波动率估…

python如何提取Chrome中的保存的网站登录用户名密码?

很多浏览器都贴心地提供了保存用户密码功能,用户一旦开启,就不需要每次都输入用户名、密码,非常方便。作为python脚本,能否拿到用户提前保存在浏览器中的用户名密码,用以自动登录呢?必须有,小爬…

Redis实现分布式获取全局唯一自增ID的案例。

【1】简易自增版本(从 1 开始 1,2,3,...) 项目结构 下面是一个基于 RedisTemplate 实现的分布式全局唯一自增 ID 生成器的案例。适用于 Java Spring Boot 环境,利用 Redis 的原子操作 INCR 指令。 ✅ 原理说明 Redis 提供的 INCR 命令是原子性的&…

人脸识别备案:筑牢人脸信息 “安全墙”

人脸识别备案制度主要依据《人脸识别技术应用安全管理办法》建立,人脸识别技术广泛应用于安防、金融、门禁、交通等领域,带来便利高效的同时,人脸信息安全问题也引发担忧。为规范技术应用、保护个人信息权益,人脸识别备案制度应运…

基于RT-Thread的STM32F4开发第三讲——DAC

文章目录 前言一、DAC是什么?二、RT-Thread工程创建三、DAC函数编写1.DAC.c2.DAC.h3.main.c 四、结果测试五、工程分享 前言 本章利用RT-Thread最新的驱动5.1.0开发DAC模块,使用的开发板是正点原子的STM32F4探索者。很多配置和上文重复,本文…

网络状态可以通过hutool.HttpStatus获取

网络状态可以通过hutool.HttpStatus获取 全部都是静态int类型

Gemini 2.5 推动视频理解进入新时代

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

谈谈各种IO模型

目前的IO模型有5种:BIO(阻塞IO)、NIO(非阻塞IO)、IO多路复用、信号驱动IO、异步IO(AIO) 了解这些模型之前,我们需要先知道IO模型中的几个概念:阻塞&非阻塞、同步&am…

Linux系统管理与编程20:Apache

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 做好网络和yum配置,用前面dns规划的www的IP进行。 #!/bin/bash #----------------------------------------------------------- # File Name: myWeb.sh # Version: 1.0 # …

BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(下)

文章目录 引言一、课程表1.1 题目链接:https://leetcode.cn/problems/course-schedule/description/1.2 题目分析:1.3 思路讲解:1.4 代码实现: 二、课程表||2.1 题目链接:https://leetcode.cn/problems/course-schedul…

【入门】纸盒的最大体积是多少?

描述 在一张尺寸为 n * n 厘米的正方形硬纸板的四个角上,分别裁剪掉一个 m * m 厘米的小正方形,就可以做成一个无盖纸盒,请问这个无盖纸盒的最大体积是多少? 立方体的体积 v 底面积 * 高) 比如: n 5 &am…

QT5.14安装以及新建基础项目

进入qt中文网站:Qt | 软件开发全周期的各阶段工具 额,考虑新手可能还是找不到,我就分享一下我下载的的吧 通过网盘分享的文件:qt-opensource-windows-x86-5.14.2.exe 链接:https://pan.baidu.com/s/1yQTRp-b_ISje5B3UWb7Apw?pw…