【学习笔记】手把手教你使用Autoware标定SICK-2D激光雷达和相机

本文主要是介绍【学习笔记】手把手教你使用Autoware标定SICK-2D激光雷达和相机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019/06/21更新说明:很多小伙伴反应从github上下载的Autoware没有Calibration Toolkit,是作者在github 的新源码和我用的版本不一样了。该教程仅针对2018年11月7日的发布版本


网上Autoware的教程不多,而且都是关于多线的威力登雷达和相机的联合标定。自己摸索使用Autoware标定SICK TIM561单线激光雷达和相机的方法,写一个详细的教程,希望可以抛砖引玉。想要转载的小伙伴,请带个原文地址,撰写不易,Thanks♪(・ω・)ノ~


第一章 Calibration Toolkit简介

Calibration Toolkit工具是城市自主无人驾驶开源软件Autoware的其中一个工具,该工具专注于相机与2D/3D激光雷达的联合标定,可以在标定相机的同时自主计算出从相机坐标系至激光雷达坐标系的变换矩阵,具有操作简单、标定准确度较高的优势。

本文档仅针对Calibration Toolkit中相机与2D激光雷达的联合标定步骤进行说明。

第二章 工具详细使用说明

2.1 前期准备

2.1.1  激光雷达的选型与配置

撰写该文档时使用的激光雷达型号为 SICK tim561 单线激光雷达,如图 1 所示。

                                                                              图  1 SICK tim561 单线激光雷达

将激光雷达与计算机相连,该款雷达首先需使用官方提供的 SOPAS  Engineering  Tool 在Windows 操作系统下配置 IP 地址,本文将激光雷达 IP 地址设置为 192.168.10.153,该 IP 地址仅用于举例说明。

完成激光雷达 IP 地址配置后,切换至 Ubuntu 操作系统,将 SICK 激光雷达的 ROS 驱动程序sick_scan-master 拷贝至 ROS 工作空间(通常为 catkin_ws 文件夹)下的 src 文件夹下,catkin_ws文件夹结构如图 2 所示。

                                                                           图  2 catkin_ws 文件夹结构

此时,进入catkin_ws/src/sick_sacn-master/sick_sacn-master/launch文件夹,找到sick_tim_5xx.launch文件,将该文件内<arg name="hostname" default="192.168.8.100" />参数中的192.168.100修改为设置的激光雷达IP地址,随后保存并关闭文件,本文为192.168.10.153。

返回至catkin_ws文件夹,在文件夹空白处按住Sifht按键后点击鼠标右键选择“在此启动终端”,在终端输入catkin_make进行编译,等到编译完成即可,至此激光雷达配置完毕。

2.1.2  Ubuntu 设置静态 IP

完成上述激光雷达配置后,还需配置 Ubuntu 的静态 IP 地址与激光雷达 IP 地址处于同一网段。Ubuntu 系统设置静态 IP 的步骤为:

使用组合按键 Ctrl+Alt+T 打开终端,在终端输入 ifconfig 查看网卡及 IP 地址,如图 3 所示,其中红色框中显示的为网卡的名称。

                                                                                图  3 ifconfig

再次在该终端输入命令sudo gedit /etc/network/interfaces,此时在interfaces文件中修改auto及iface后的网卡名称与终端中ifconfig显示的网卡名称相同(图4中红色方框所示),设置address中IP地址与激光雷达IP地址处于同一网段,gateway中复制address的IP地址并将最后一位修改为1即可。本文设置address为192.168.10.13,与激光雷达同属192.168.10.X网段,gateway为192.168.10.1。

修改完成后保存并关闭interfaces文件,在终端输入命令sudo /etc/init.d/networking restart重启网络,终端显示ok后,再次输入ifconfig确认IP地址是否已设置生效,IP地址生效后如图5所示。

                                                                                             图  4 interfaces

                                                                                    图  5  静态 IP 设置完成  

此时,测试计算机与激光雷达是否可以通信,在终端输入ping加激光雷达的IP地址,如ping 192.168.10.153,若上述配置过程无误,终端将显示图6所示内容。

                                                                                         图  6 ping 激光雷达

2.1.3  制作标定板

在标定相机时,通常使用黑白棋盘格图像(不含红色、绿色标记),如图7所示。

                                                                                             图  7  标定用棋盘格 

棋盘格规格使用A4纸大小,角点(图7中红色、绿色圆圈标记)数分别为8个及6个,单个棋盘格为0.024mm*0.024mm的正方形。请将打印出的高清A4大小棋盘格粘贴在平整、坚硬的平面上。

2.1.4  数据采集

Calibration toolkit采用读取rosbag中topic的方式进行标定,因此需要将激光雷达数据及相机数据采集为rosbag的格式。

打开一个新的终端,输入roscore启动rosmaster,如图8所示。

                                                                                                         图  8 roscore 

保持运行roscore的终端不要关闭,再打开一个新的终端进入ROS工作空间,输入source ./devel/setup.bash命令,随后输入roslaunch sick_scan sick_tim_5xx.launch命令启动激光雷达,若激光雷达启动成功如图9所示。

                                                                                                图  9  激光雷达启动 

保持运行激光雷达的终端不要关闭,再打开一个新的终端进入ROS工作空间,输入source ./devel/setup.bash命令,随后输入roslaunch usb_cam usb_cam_test.launch命令启动USB摄像头,若USB摄像头启动成功如图10所示。

                                                                                              图  10 USB 摄像头启动 

此时打开一个新的终端,输入命令rostopic list,可以查看当前运行的ROS节点发布的话题,如图11所示。其中运行激光雷达的节点发布的话题为/scan,运行USB摄像头的节点发布的话题为/usb_cam/image_raw。

此时在该终端输入rosrun rviz rviz,启动rviz三维可视化平台,rviz界面如图12所示。其中1区域中显示预在rviz中显示的话题等信息,2区域将显示激光雷达信息。在rviz中,单击左下角Add按钮,将弹出添加话题对话框,单击By topic选项卡,分别选择添加/scan下的laserscan话题及/usb_cam/image_raw下的image话题,如图13所示。添加完毕后,将1区域的Global Opations中的fixed frame修改为laser。修改完成后,rviz中显示相机图像及激光点云,如图14所示。

                                                                                                 图  11 rostopic list 

                                                                                                       图  12 rviz 界面 

                                                                                                      图  13 添加话题 

                                                                                                图  14 rviz 显示图像及点云 

现在我们可以使用ROS提供的rosbag record功能录制rosbag。打开一个新的终端,在终端中进入想要保存rosbag的文件夹,输入命令rosbag recored /scan /usb_cam/image_raw开始录制激光雷达点云及相机画面。录制完成后在当前终端使用按键组合Ctrl+C结束录制,如图15所示。

                                                                                              图  15 rosbag 结束录制 

值得注意的是,录制标定用的rosbag时,应当保证棋盘格以多种位姿(左旋、右旋、俯仰)尽量出现在相机视野的各个方位中,同时保证激光可以一直落在棋盘格上。录制结束后可以在保存rosbag的文件夹下使用rosbag info xx.bag(xx.bag为刚才录制的bag名,如图15中2019-03-06-10-36-09.bag)查看录制的bag详细信息,其中包括bag的大小、时长、包含topic的名称以及各个topic的数量。

至此,关闭以上所有终端,标定的前期准备工作结束。

2.2 相机与雷达联合标定

打开一个新的终端,输入roscore命令启动rosmaster。

打开一个新的终端,进入保存rosbag的文件夹,输入命令rosbag play xx.bag播放刚才录制的rosbag,开始播放后立即按空格键暂停播放,如图16所示。

打开一个新的终端,进入Autoware安装的文件夹下的ros文件夹,输入sudo source ./devel/setup.bash命令,再在该终端输入rosrun calibration_camera_lidar calibration_toolkit启动calibration toolkit。软件启动后首先弹出选择相机话题的对话框,选择/usb_cam/image_raw的话题;随后选择标定类型,我们选择Cmaera—>2DLIDAR的标定方式,如图17所示。

                                                                                                 图  16  播放 rosbag 

选择完毕后,将进入calibration toolkit的主界面,主界面如图18所示。在主界面上方红色方框标注的区域从左到右填入标定板的参数,根据我们使用标定板的参数我们输入0.024、0.024、8、6四个参数。填写完毕后,关闭主界面,再次重复启动calibration toolkit的步骤,使填写参数生效。

 

                                                                图  18 calibration toolkit 主界面

再次启动界面后,首先调整主界面布局,方便我们标定。调整后的界面布局如图19所示。

                                                                                   图  19 calibration toolkit 主界面 

此时找到运行rosbag的终端,单击空格播放rosbag,再次暂停后切换到calibration toolkit主界面,将看见到相机画面显示在1区域及雷达点云显示在2区域,在2区域可以通过滚动鼠标中键放大点云,此时便可以开始相机及点云的标定工作。

标定的步骤为:

                                                                                                               图  20  标定过程 

                                                                                                          图  21  标定结束 

  1. 播放rosbag,当calibration toolkit中出现满意的画面及激光数据时暂停rosbag;

  2. 单击主界面右上角Grab按钮进行捕捉。捕捉后将在3区域显示相机图像的标定画面,4区域将显示该时刻的激光雷达点云;

  3. 确认3区域棋盘格可以检测到的前提下,在4区域使用鼠标中键放大点云;

  4. 在4区域按住鼠标右键不动点击鼠标左键进行框选,选择激光落在标点版上的点云,尽量框选在同一个平面的点;

  5. 对于Grab到的效果不好或重复的相机画面及点云信息,可以单击右上角Remove按钮进行移除;

  6. 重复步骤1~4,Grab的次数越多标定结果越好;

  7. 数据标注完成后,点击右上角Calibrate按钮,进行联合标定,此时工具将进入假死状态,计算结束后工具恢复正常;

  8. 点击右上角project按钮将联合标定后的点云投影在相机图像中,投影后的图像显示在3区域,如图21所示;

  9. 此时可以在3区域检查标定效果,若激光均能落在标定板上且没有超出标定板的激光则证明标定效果较好;

  10. 此时点击左上角的Save按钮对标定进行保存,仅保存标定得到的相机内参矩阵及相机雷达外参矩阵即可,如图22所示,而对于相机、雷达的标定数据不需要保存,单击No即可,如图23所示。

                                                                                           图  22  保存标定结果 

                                                                               图  23  无需保存相机、激光标定数据 

至此激光雷达及相机联合标定结束,得到标定结果yaml文件内容如图24所示,自行选择相关参数使用即可。

                                                                                     图  24  标定结果 yaml 文件内容 

这篇关于【学习笔记】手把手教你使用Autoware标定SICK-2D激光雷达和相机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578194

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma