Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!
一、安装 Autoware & ZED 内参标定 & 外参标定准备
之前的这篇文章:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定! 记录了我用 Autoware 标定相机和雷达的过程,虽然用的不是 Calibration Tool Kit 工具,但是博客里面的以下章节也适用本次的 Calibration Tool Kit :
- 一、编译安装 Autoware-1.10.0
- 二、标定 ZED 相机内参
- 3.1 联合标定准备
如果你是第一次看这篇 Calibration Tool Kit 联合标定的博客,建议先按照之前的博客安装 Autoware、标定 ZED 内参和做好外参标定的准备(标定板,录制标定包等),最好用上篇博客的方法标定一次。
这篇博客我就直接开始介绍使用 Calibration Tool Kit 标定雷达和相机外参的过程!
二、Calibration Tool Kit 联合标定雷达和 ZED 相机
2.1 启动 Autoware
先启动 Autoware-1.10.0,启动过程中可能需要输入 root 密码:
# 1. 进入 autoware 的 ros 目录下
cd autoware-1.10.0/ros
# 2. source 环境,zsh 或 bash
source devel/setup.zsh[.bash]
# 3. 启动主界面
./run
切换到 Sensing 选项卡:

2.2 回放雷达相机 Bag
这里回放时需要更改雷达的话题为 /points_raw,因为这个工具订阅的雷达主题是固定的:
rosbag play --pause xxx.bag /rslidar_points:=/points_raw
我用的 Robosense 雷达,发布的话题是 rslidar_points,这个回放默认暂停,防止跑掉数据,按空格继续或暂停。
2.3 启动 Calibration Tool Kit
点击 Calibration Tool Kit 启动标定工具:

选择图像输入话题,我只用的 ZED 的左图像话题,如果没有相机话题,确保前面你已经回放了 bag,选择好了点击 OK 确定:

选择标定类型为相机到 velodyne 雷达的标定(对 Robosense 雷达也适用,只不过需要更改点云的发布话题),点击 OK 确定:

进入标定主界面 MainWindow:

配置标定板棋盘格参数:
- Pattern Size(m):标定板中每个格子的边长,单位 m,我的标定板每个格子长 0.025 m
- Pattern Number:标定板长X宽的单元格数量 - 1,我的标定板是长有 12 个格子,宽有 9 个,所以填 11x8,减一是因为标定检测的是内部角点
设置好了后,重启 Calibration Tool Kit,点击左上角 Load 导入第一步标定的相机内参 YAML 文件,但是这个工具只能导入 YML 格式的文件:

因此需要把前面的内参标定文件拷贝一份,修改格式为 yml 即可,YAML 和 YML 其实是一样的:

修改好了之后,再点击 Load 加载 yml 格式的内参文件即可:

选择不加载相机和雷达的标定数据,因为我是直接回放 Bag 标定:


到这里都设置好了,下面开始外参标定过程!
2.4 标定过程
打开回放 bag 终端,按空格继续回放数据,主界面会显示相机图像:

但是右边的点云窗口没有显示数据,需要我们调整视角才可以,视角的调整方法如下(文末有个 pdf 专门介绍):

简单解释下,建议直接操作,很容易:
- 移动点云:上下左右方向键、PgUp、PgDn
- 旋转点云:a、d、w、s、q、e
- 切换模式:数字 1 和数字 2
- 视角缩放:减号缩小、加号放大
- 点云大小:o 键使用小点云、p 使用大点云
- 改变点云窗口背景颜色:b
我使用的使用直接按数字 2 切换模式就能看到点云了,其实这些模式我也不是很懂。。。:

如果需要更换背景,按 b 键改变为大致灰色即可:

我这里就不改背景了,黑色也挺好看出点云的,然后使用上面的视角操作方法,把点云中的标定板放大到中心位置:

之后点击右上角的 Grab 捕获当前帧的图像和点云,使用 - 和 + 缩放视角:

如果你点击 grab 没反应很正常,可能是棋盘格离得太远或者模糊了,你多试几个位置应该就能捕获到,我回放一个 Bag 也就捕获了 9 张左右。
然后把鼠标放到右下角捕获的点云窗口,选择一个棋盘格的中心位置区域,关于这个区域的选择,我是参考这个标定工具的文档例子(文末有链接)选择的,大概就是标定板的中心位置选择一个圆形的区域,尽量保证向外侧的平面法向量垂直于标定板平面:

鼠标左键点击选择,右键点击取消,我的选择如下,可以参考:

然后重复以上步骤,不断回放暂停,Grab 捕获单帧图像和点云(多选一些),选择点云区域,直到回放结束,接着就可以点击右上角的「Calibrate」按钮计算外参矩阵(左上角显示),然后再点击「Project」查看标定效果:

切换左下方的单帧图片和点云窗口,捕获的每一帧图像和点云都可以看到对齐效果,另外左边也能看到标定的误差,当然是越小越好,我目前的标定效果一般般,后续打算再标几次。
标定好之后,点击左上角「save」保存外参矩阵即可,文件名建议带上时间戳方便识别:

最后的外参数文件如下,这个文件包含了相机内参和相机到雷达的外参:

以上就是我的雷达相机联合标定过程!希望能帮助正在标定雷达和相机的同学 _!
三、标定结果测试
可以直接用之前博客 Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定! 中的「四、标定结果测试」一节介绍的步骤来测试融合效果:

前几天我把 ROS 的点云和图像的融合节点也调试好了,所以直接在程序里面加载了外参矩阵,然后做了个初步的融合,效果如下:

我也录了个融合视频,可以看看:B 站:Robosense-16 雷达与 ZED 相机数据融合。
五、标定资源
以下是我标定过程中收集的一些好的资料,这里也分享给大家:
- 标定工具的使用文档在这里:CalibrationToolkit_Manual.pdf
- 这里还有个视频,有条件的同学可以看看:Yutobe:Autoware 标定相机和雷达
另外 ROS 融合节点的程序我还在完善中,建议关注我的 Github 项目,后续会上传节点代码:AI-Notes: lidar_camera_fusion,如果标定遇到问题,可以公众号后台给我发消息,或者直接在博客平台留言,我看到会尽快回复的,不过公众号应该回复的快些,哈哈 :)

Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!的更多相关文章
- Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!
项目要标定雷达和相机,这里记录下我标定过程,用的速腾 Robosense - 16 线雷达和 ZED 双目相机. 一.编译安装 Autoware-1.10.0 我没有安装最新版本的 Autoware, ...
- matlab calibration toolbox -- matlab标定工具的使用方法--去畸变和双目校正
matlab calibration toolbox -- matlab标定工具的使用方法--去畸变和双目校正 2015-04-06 22:45 5407人阅读 评论(2) 收藏 举报 分类: 机器 ...
- 基于2d Tool Kit 精灵合图,动作生成工具
http://blog.csdn.net/onerain88/article/details/18563687 2d Tool Kit 是一款出色的基于unity3d 开发2d游戏的工具,提供了丰富的 ...
- CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)
一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...
- 相机标定(Camera calibration)
简单介绍 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程.也就是求终于的投影矩阵 P 的过程,以下相关的部分主要參考UIUC的计算机视觉的课件(网址Spr ...
- DX11 Without DirectX SDK--04 使用DirectX Tool Kit帮助开发
回到 DirectX11--使用Windows SDK来进行开发 DirectX Tool Kit下载 DirectX Tool Kit是一个包含许多类的集合,用于为公共Windows平台编写Dire ...
- DirectX11 With Windows SDK--04 使用DirectX Tool Kit帮助开发
前言(2018/11/4) DXTK库现在已经不随Github项目提供,因为只用到了其中的键鼠类,已经过提取加入到后续的项目中 但是如果你需要配置DirectXTK到自己的项目当中,可以参考这篇博客进 ...
- Falcon Genome Assembly Tool Kit Manual
Falcon Falcon: a set of tools for fast aligning long reads for consensus and assembly The Falcon too ...
- Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 18821766710 attilax main num.docx Atiitt put post 工具 开发工具dev tool test.docx Atiitt 腾讯图像分类相册管家.docx
Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 1882 ...
随机推荐
- Spark Streaming 整合 Flume
Spark Streaming 整合 Flume 一.简介二.推送式方法 2.1 配置日志收集Flume 2.2 项目依赖 2.3 Spark Strea ...
- python 机器学习(一)机器学习概述与特征工程
一.机器学习概述 1.1.什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测 1.2.为什么需要机器学习? 解放生产力,智能客服,可以不知疲倦的24小时作业 ...
- MCP3421使用详解
0 摘要 因某项目需要,需要采集微弱的电压信号,且对电压精度要求较高,于是选中MCP3421这款18 bit 高精度IIC AD转换芯片.本文将结合MCP3421的手册,对该芯片的使用进行详细解释,并 ...
- Django之views.py视图函数学习
视图函数: 视图函数时存在django项目中的应用程的一个名为views.py的文件模块: 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 一 ...
- Django ORM性能优化之count和len方法的选择(非常详细推荐干货)
接下来我将从源码层面分情况和应用分析我们在计算queryset数据集时是用orm的count函数计算长度还是用len函数计算数据集长度. 首先,我们知道ORM查询queryset数据集是惰性查询的,只 ...
- 三、HTML元素
嵌套的HTML元素 <!--以下实例包含了三个HTML元素,分别是<html>.<body>.<p>--> <!DOCTYPE html> ...
- Argo 项目加入 CNCF 孵化器 | 云原生生态周报 Vol. 45
作者 | 陈洁.高相林.陈有坤.敖小剑 业界要闻 Argo 项目加入 CNCF 孵化器 Argo 项目是一组 Kubernetes 原生工具,用于运行和管理 Kubernetes 上的作业和应用程序. ...
- Unity实现写入json文件
using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using ...
- Python面向对象的特征跟私有属性
面向对象的三大特征 继成.封装.多态: 继承:一个类可以继承一个或多个类,被继承的类叫做父类,继承的类叫做子类 封装:将数据和方法放在了一个类中就构成了封装 多态:指的一类事物有多重形态,一个抽象类 ...
- [工具推荐]003.Tortoisegit使用教程
Git简介: Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 ...