一、安装 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 相机数据融合

五、标定资源

以下是我标定过程中收集的一些好的资料,这里也分享给大家:

另外 ROS 融合节点的程序我还在完善中,建议关注我的 Github 项目,后续会上传节点代码:AI-Notes: lidar_camera_fusion,如果标定遇到问题,可以公众号后台给我发消息,或者直接在博客平台留言,我看到会尽快回复的,不过公众号应该回复的快些,哈哈 :)

Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!的更多相关文章

  1. Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!

    项目要标定雷达和相机,这里记录下我标定过程,用的速腾 Robosense - 16 线雷达和 ZED 双目相机. 一.编译安装 Autoware-1.10.0 我没有安装最新版本的 Autoware, ...

  2. matlab calibration toolbox -- matlab标定工具的使用方法--去畸变和双目校正

    matlab calibration toolbox -- matlab标定工具的使用方法--去畸变和双目校正 2015-04-06 22:45 5407人阅读 评论(2) 收藏 举报  分类: 机器 ...

  3. 基于2d Tool Kit 精灵合图,动作生成工具

    http://blog.csdn.net/onerain88/article/details/18563687 2d Tool Kit 是一款出色的基于unity3d 开发2d游戏的工具,提供了丰富的 ...

  4. CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)

    一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...

  5. 相机标定(Camera calibration)

    简单介绍 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程.也就是求终于的投影矩阵 P 的过程,以下相关的部分主要參考UIUC的计算机视觉的课件(网址Spr ...

  6. DX11 Without DirectX SDK--04 使用DirectX Tool Kit帮助开发

    回到 DirectX11--使用Windows SDK来进行开发 DirectX Tool Kit下载 DirectX Tool Kit是一个包含许多类的集合,用于为公共Windows平台编写Dire ...

  7. DirectX11 With Windows SDK--04 使用DirectX Tool Kit帮助开发

    前言(2018/11/4) DXTK库现在已经不随Github项目提供,因为只用到了其中的键鼠类,已经过提取加入到后续的项目中 但是如果你需要配置DirectXTK到自己的项目当中,可以参考这篇博客进 ...

  8. Falcon Genome Assembly Tool Kit Manual

    Falcon Falcon: a set of tools for fast aligning long reads for consensus and assembly The Falcon too ...

  9. 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 ...

随机推荐

  1. @vue/cli 4.0+express 前后端分离实践

    之前总结过一篇vue-cli 2.x+express+json-server实现前后端分离的帖子,@vue/cli3.0及4.0搭建的项目与vue-cli2.x的项目结构有很大的不同.这里对@vue/ ...

  2. Spring+Struts2+Hibernate框架搭建

    SSH框架版本:Struts-2.3.30  +  Spring-4.2.2  +  Hibernate5.2.2 下图是所需要的Jar包: 下面是项目的结构图: 1.web.xml <?xml ...

  3. 3.4 Go字符型

    1. Go字符型 Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存. 普通字符串就是一串固定长度的字符连接起来的字符序列. Go 的字符串是由单个字节连接起来 ...

  4. Django之ORM配置与单表操作

    ORM数据库操作流程: 1.    配置数据库(项目同名包中settings.py和__init__.py) 2.    定义类(app包中models.py),执行建表命令(Tools---> ...

  5. Spring 依赖注入(DI)简介

    依赖注入的英文表示为dependency injection,缩写为DI. Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系. 当编写一个复杂的 Java 应用程序时, ...

  6. 配置Universal Links

    参考: https://www.cnblogs.com/GJ-ios/p/9583141.html https://blog.csdn.net/saw471/article/details/10106 ...

  7. Java并发编程入门(二)

    1.竞态条件 1.1 定义 当某个计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条件.换句话说,正确的结果要取决于运气. 最常见的竞态条件类型:先检查后执行(Check-Then-Act)操 ...

  8. MySQL创建用户,并设置指定访问数据库

    一.创建用户并授权 1. 登录mysql mysql -u root -q输入密码2. 创建数据库(已有数据库就不需要建立) create database newDB;//以创建newDB为例3. ...

  9. LTE常用标识和参数

    1 基本标识 1 .1 IMSI 1.2 IMEI 1.3 MSISDN 1.4 TMSI 1.5 MSRN 2 区域类标识 2.1 GCI 其中 LA是GSM(2g)中的位置区,对应4G中的跟踪区T ...

  10. Java中的集合(十四) Map的实现类LinkedHashMap

    Java中的集合(十四) Map的实现类LinkedHashMap 一.LinkedHashMap的简介 LinkedHashMap是Map接口的实现类,继承了HashMap,它通过重写父类相关的方法 ...