查看原文
其他

技术文档 | Apollo激光雷达-IMU(惯性测量单元)校准服务

阿波君 Apollo开发者社区 2022-07-29

在无人驾驶环境感知设备中,激光雷达和摄像头分别有各自的优缺点。


摄像头的优点是成本低廉,用摄像头做算法开发的人员也比较多,技术相对比较成熟。摄像头的劣势,第一,获取准确三维信息非常难(单目摄像头几乎不可能,也有人提出双目或三目摄像头去做);另一个缺点是受环境光限制比较大。


激光雷达的优点在于,其探测距离较远,而且能够准确获取物体的三维信息;另外它的稳定性相当高,鲁棒性好。但目前激光雷达成本较高,而且产品的最终形态也还未确定。


就两种传感器应用特点来讲,摄像头和激光雷达摄像头都可用于进行车道线检测。


除此之外,激光雷达还可用于路牙检测。对于车牌识别以及道路两边,比如限速牌和红绿灯的识别,主要还是用摄像头来完成。


如果对障碍物的识别,摄像头可以很容易通过深度学习把障碍物进行细致分类。但对激光雷达而言,它对障碍物只能分一些大类,但对物体运动状态的判断主要靠激光雷达完成。


欢迎和阿波君一起了解Apollo3.5的传感器校准服务。


本文为Apollo3.5的官方技术文档。主要描述64线激光雷达(LiDARM)和内部导航系统(INS)之间外部校准服务的方法。


 Apollo 传感器校准目录 


  • 概述

  • 准备传感器

  • 记录校准数据

  • 加载校准数据和创建一个校准服务任务

  • 获取校准结果

  • 可能遇到的错误类型






Apollo车辆传感器校准功能主要是对Velodyne公司的激光雷达 HDL-64ES3和IMU之间进行外部校准。


根据校准结果,可将激光雷达测得的障碍物位置信息转化为IMU坐标系,进而转换为世界坐标系。


校准结果通常以.yaml文件格式保存。

 



为了进行传感器校准,首先需要准备相应的传感器,具体步骤如下:


1) 安装Apollo支持的64线激光雷达和INS,并配置好Docker环境


2) 启动64线激光雷达和INS。通电时,INS必须对齐。此时,汽车应该在开阔区域内进行先直行,然后按照向左转和向右转的先后顺序行驶,直至初始化完成。


3) 确认该校准服务所需的所有传感器主题均有如下输出:参阅GitHub上的 How to Check the Sensor Output?


校准服务所需的传感器主题如表1所示


表1 传感器主题


4) 确认当记录数据的时候INS的状态值为56,如何检测INS的状态请参阅GitHub上的: How to Check INS Status?


5) 选择一个合适的校准场地。

 



完成准备步骤之后,请驾驶汽车到校准场地并记录校准数据


1) 记录数据的脚本命令如 apollo/script/lidar_calibration.sh.所示。


2) 在命令行窗口运行如下命令进行数据记录: bash lidar_calibration.sh start_record


记录结果放置在目录 apollo/data/bag.


3) 以20-40km/h 的速度加速汽车按照∞ 符号形状进行行驶,并且保证转弯半径尽可能小。


整个行驶时间应该在3分钟之内,但是必须保证校准驾驶行程必须完成一个完整的∞ 符号形状路径。

 

图1  校准轨迹

 

图2 校准场地


4) 记录完成之后,运行如下命令停止数据记录。  


bash lidar_calibration.sh stop_record


5) 然后,程序将会检查记录结果是否包含所有必须的主题。


如果测试通过,测试结果将会被打包成压缩文件,文件名为 lidar_calib_data.tar.gz, 该文件包括记录的Rosbag 和相应的MD5校验值。




记录校准数据之后,请登录页面 Calibration Service Page 完成校准。


1) 进入校准服务页面并单击任务管理列表下的新建任务按钮创建一个校准任务。


2) 进入新建的任务页面之后,需要填写一短话对该任务进行简单描述. 然后点击 Upload and create a task 按钮,并选择上传校准文件以启动校准数据的上传过程。 


3) 当开始上传数据之后,该页面将会显示任务处理进度。当数据加载状态达到100%之后,任务将会自动启动。请确保数据上传期间网络畅通。


4) 当数据上传完毕之后,数据验证程序将启动,如图3所示,验证过程可以确保数据的完整性和适用性。验证的项目包括:


  • 解压缩测试

  • MD5校验

  • 数据格式验证

  •  ∞形状路径验证

  • INS状态验证

5) 如果验证失败,相应的错误信息将会弹出,如图3数据验证屏幕的第三个结果所示。

 

图 3校准数据验证


6) 数据验证之后将会启动校验程序,如图4所示。用户将会看到一个详细的校验流程页面。


根据数据的大小和质量不同,整个校准过程可能持续10~30分钟左右,您可以在任何时刻通过打开给定的页面查看校准的进度。

 

图4 校准进度页面示意图


7) 校准成功之后,点击 View detail 按钮将会弹出并显示一个点云图。您可通过查看点云的清晰度来确认验证的质量。


如果您对校准的结果比较满意,可以通过点击确认按钮保存结果以及点击下载按钮下载校准结果。整个校准过程到此结束。


更多的信息,请参阅: How to Check Point Cloud Quality?

 



1) 在获取校准结果之前,该服务将要求您通过可视化的点云图像来确认校准结果的质量。


2) 在确认校准结果的质量之后,您可以点击 Confirm 按钮保存校准结果。 之后,您可以在任务页面进行操作以下载结果。


如果质量验证没有通过,下载按钮将处于不可见状态。


3) 外部文件格式指令——结果将以.yaml文件格式的形式返回。外部文件格式的样例如下所示:


header:
  seq: 0
  stamp:
     secs: 1504765807
     nsecs: 0
  frame_id: novatel
child_frame_id: velodyne64
transform:
  rotation:
    x: 0.02883904659307384
     y: -0.03212457531272153
     z: 0.697030811535172
     w: 0.7157404339725393
  translation:
     x: 0.000908140840832566
     y: 1.596564931858745
     z: 1


返回结果示例中各个域的定义如表2所示。


表 2. Yaml文件中各个关键字的定义


4) 如何使用外部参数?


键入如下命令可在Apollo目录下创建一个校准文件夹:


mkdir -p modules/calibration/data/[CAR_ID]/


在该命令中, CAR_ID 是将要进行校准的车辆的ID号。 然后,将之前下载的外部参数yaml文件拷贝到对应的CAR_ID文件夹下。


最后,当您启动HMI之后,选择正确的CAR_ID 号以加载对应的校准yaml文件。



1) 数据解压错误:上传的数据不是一个有效的tar.gz 文件。


2) MD5 校验错误:如果上传数据的MD5校验和与服务器端计算得到的MD5校验和不一致,可能是由于网络传输引起的。


3) 数据格式错误:上传的数据不是Rosbag格式,或者缺少主题,或数据中包含无法解析的主题。这些都会导致服务器端校准程序读取数据失败。 


4) 没有∞ 形状路径错误: 在上传的数据中没有发现 ∞ 形状路径信息。请验证记录的数据中包含至少一条∞ 形状的路径。


5) INS状态错误: 在上传的数据中,位置信息不符合系统需求。请确保记录数据时,INS的状态值为56。








点击阅读原文,了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存