Apollo2.5开发笔记(2)硬件安装,配置,校准——摄像头部分

大部分是摘录官网内容,加粗斜体下划线部分是补充内容

 

摄像头

所使用的相机是Leopard Imaging公司制造的标准USB 3.0接口的LI-USB30-AR023ZWDR,分别使用两个6毫米和一个25毫米镜头的摄像头来实现所需的性能。

 

安装摄像头

本部分描述了安装摄像头的过程。

Apollo参考设计建议使用三个不同焦距的摄像头:两个6毫米镜头,一个25毫米镜头。这三个摄像头的摆放位置非常灵活,它们可以放置在LiDAR的旁边或前车窗的里。摄像机的安装可以为系统的实际设计量身定做。

  • 这两个摄像机都应该朝着前进方向。视场(FOV)应尽量远离障碍物。

  • 25毫米焦距的照相机应该向上倾斜大约两度。调整后,25毫米相机应该能够观察到100米外有红路灯的交叉路口的停车线。

  • 新出厂的摄像头的镜片不在最好的聚焦位置。通过调整镜片的焦距来找到正确的位置,找到远处目标物体的清晰图像。一个好的图像目标是交通标志或街道标志内的FOV。调整焦点后,使用锁紧螺丝来固定镜头的位置。

  • 使用USB 3.0连接相机(USB 3.0 Micro-B)和IPC(USB 3.0 type A)。

软件部分首先按照官方文档安装好了

注意其中启动并进入docker容器拉取镜像的部分,给出的代码是:

bash docker/scripts/dev_start.sh -C

可能会出现没有权限的问题导致拉取失败,这个时候不能简单粗暴在这一句前面加sudo,会导致后面dreamviewer启动摄像头失败,解决方法是:

sudo chmod 777 /var/run/docker.sock
bash docker/scripts/dev_start.sh

为什么需要这样的解决方法,我觉得是根据具体的报错信息来决定的,比如我报的错是:

这里有一句:

dial unix /var/run/docker.sock:connect:permission denied

说明这个文件没有权限导致拉取镜像失败,所以使用chmod 777为这个文件赋权。

 

下一句拉取镜像的指令去掉了-c,可能是因为网络的原因,拉取国内镜像报错

request canceled while waiting for connection

猜测是因为之前修改过host

 

拉取镜像很慢,需要经过了漫长的等待……

 

接下来是摄像头安装配置与数据验证,也是按照官方文档执行

但 有一点需要注意 ,修改摄像头规则文件时候可能会发现缺少文件

~/apollo/docker/setup_host/etc/udev/rules.d/99-webcam.rules

这可能是因为你git的apollo源代码没有切换工作分支,上面提到的官方文档里有说到如何切换,如下:

git checkout -b r3.0.0 origin/r3.0.0

校准

用户只需启动相应的校准程序,即可进行校准工作并实时完成。然后,用户可以验证校准结果,校准结果作为.yaml文件提供。

下载校准工具,并将文件解压缩到$APOLLO_HOME/modules/calibration。APOLLO_HOME是apollo存储库的根目录。

相机内在函数包含焦距,主点,失真系数和其他信息。用户可以从其他相机校准工具获取内在函数,例如ROS相机校准工具Matlab相机校准工具箱。校准完成后,用户应手动将结果转换为特定yaml格式的文件

用户必须确保KD数据正确:

  • K 是指相机矩阵
  • D 指失真参数

以下是相机内部文件的示例:

    header:
      seq:0 
      stamp:
      secs:0 
        nsecs:0 
      frame_id:short_camera 
    height:1080 
    width:1920 
    distortion_model:plumb_bob 
    D:[ -  0.535253,0.259291,0.004276,-0.000503,0.0] 
    K:[1959.678185,0.0,1003.592207,0.0 ,1953.786100,507.820634,0.0,0.0,1.0] 
    R:
    [1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0 ] P:[1665.387817,0.0,1018.703332,0.0,0.0,1867.912842,506.628623,0.0 ,
    0.0,0.0,1.0,0.0 ] binning_x:0 
    binning_y:0 
    roi:
      x_offset:0 
      y_offset:0 
      height:0 
      width:0
      do_rectify:错误

建议您为每个摄像头执行固有校准,而不是为每个摄像头使用统一的内部参数。如果您遵循这种做法,您可以提高外在校准结果的准确性。

这些工具要求用户提供初始外部值作为参考。

以下是Camera-to-LiDAR的初始外部文件的示例,其中translation是相机和LiDAR之间的移位距离。这rotation是旋转矩阵的四元数表达形式。

    header:
      seq: 0
      stamp:
        secs: 0
        nsecs: 0
      frame_id: velodyne64
    child_frame_id: short_camera
    transform:
      rotation:
        y: 0.5
        x: -0.5
        w: 0.5
        z: -0.5
      translation:
        x: 0.0
        y: 1.5
        z: 2.0

注意: Camera-to-LiDAR校准更依赖于初始外部值。大的偏差会导致校准失败。因此,在条件允许的情况下,您必须提供最准确的初始外部值。

由于Camera-to-LiDAR校准方法用于自然环境,因此良好的位置可以显着提高校准的准确性。建议您选择包含树木,电线杆,路灯,交通标志,静止物体和清晰交通线等物体的校准场地。

用户必须确认程序所需的所有传感器topics 都有输出messages。 How to Check the Sensor Output?

Table 1. The Required Topics of Camera-to-Camera Calibration

SensorTopic NameTopic Feq. (Hz)
Short_Camera/apollo/sensor/camera/traffic/image_short9
Long_Camera/apollo/sensor/camera/traffic/image_long9
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2

Table 2. The Required Topics of Camera-to-LiDAR Calibration

SensorTopic NameTopic Feq. (Hz)
Short_Camera/apollo/sensor/camera/traffic/image_short9
LiDAR/apollo/sensor/velodyne64/compensator/PointCloud210
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2

Table 3. The Required Topics of Radar-to-Camera Calibration

SensorTopic NameTopic Feq. (Hz)
Short_Camera/apollo/sensor/camera/traffic/image_short9
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2

 

在开始使用校准工具之前,必须验证 localization status是56,否则校准工具(程序)不会收集数据。

键入以下命令以检查 localization status:

rostopic echo /apollo/sensor/gnss/ins_stat

相机到相机校准工具

1.使用以下命令运行相机到相机校准工具:

cd / apollo / scripts 
bash sensor_calibration.sh camera_camera

2.请遵循以下准则来收集数据:

  • 由于两个摄像机具有不同的时间戳,因此它们无法完全同步,因此在记录数据时非常缓慢地驾驶车辆非常重要。车辆的慢速可以有效地缓解由不同时间戳引起的图像不匹配。

  • 确保两个摄像机图像的区域足够大,否则该工具将无法执行外部校准操作。

3.请注意配置文件的位置:

/apollo/modules/calibration/camera_camera_calibrator/camera_camera_calibrtor.conf

表4.相机到相机校准配置说明

组态描述
long_image_topic长焦相机图像topic
short_image_topic广角相机图像topic
odometry_topic车辆里程计topic
ins_stat_topic车辆定位状态topic
long_camera_intrinsics_filename远摄相机的固有文件
short_camera_intrinsics_filename广角相机的固有文件
init_extrinsics_filename初始外部值文件
output_path校准结果输出路径
max_speed_kmh最大车速限制,单位:km / h

4.相机到相机校准工具的输出类型是:

  • 校准的外部文件,作为.yaml文件提供。
  • 验证图像包括:
    • 长焦远摄相机拍摄的图像。
    • 广角相机拍摄的图像。
    • 变形图像与未失真的广角相机图像和未失真的长焦远摄相机图像混合在一起。

广角相机到激光雷达校准

  1. 使用以下命令运行Camera-to-LiDAR校准工具:
cd / apollo / scripts 
bash sensor_calibration.sh lidar_camera
  1. 请遵循以下准则来收集数据:
  • 由于两个摄像机具有不同的时间戳,因此它们无法完全同步,因此在记录数据时非常缓慢地驾驶车辆非常重要。车辆的慢速可以有效地缓解由不同时间戳引起的图像不匹配。

  • 确保摄像机图像中有一定数量(超过500个)投影点,否则工具无法执行外部校准操作。因此,此工具仅适用于广角相机。

  1. 记下保存的配置文件的位置:
/apollo/modules/calibration/lidar_camera_calibrator/camera_camera_calibrtor.conf

表5标识并描述了配置文件中的每个元素。

表5. Camera-to-LiDAR校准配置说明

组态描述
camera_topic广角相机图像topic
lidar_topicLiDAR点云topic
odometry_topic车辆测距topic
ins_stat_topic车辆定位状态topic
camera_intrinsics_filename相机的固有文件
init_extrinsics_filename初始外部值文件
output_path校准结果输出路径
calib_stop_count需要停止捕获数据
max_speed_kmh最大车速限制,单位:km / h
  1. Camera-to-LiDAR校准工具的输出类型为:
  • 校准的外部文件,作为.yaml文件提供
  • 将LiDAR点云投影到摄像机图像上的两个验证图像:
    • 一张图像用深度着色
    • 一张图像用强度着色

雷达到摄像机校准

  1. 使用以下命令运行Radar-to-Camera Calibration Tool:
cd / apollo / scripts 
bash sensor_calibration.sh radar_camera
  1. 按照此指南收集数据:

以低速和直线驱动车辆,使校准工具仅在这组条件下捕获数据。

  1. 记下保存的配置文件的位置:
/apollo/modules/calibration/radar_camera_calibrator/conf/radar_camera_calibrtor.conf

表6标识并描述了配置文件中的每个元素。

表6.雷达到摄像机校准配置说明

组态描述
camera_topic广角相机图像topic
odometry_topic车辆测距topic
ins_stat_topic车辆定位状态topic
camera_intrinsics_filename相机的固有文件
init_extrinsics_filename最初的外在文件
output_path校准结果输出路径
max_speed_kmh最大车速限制,单位:km / h
  1. 雷达到相机校准工具的输出类型是:
  • 校准的外部文件,作为.yaml文件提供
  • 验证图像,包括Radar-to-LiDAR的投影结果。您需要运行该radar_lidar_visualizer工具来生成图像。有关详细信息,请参阅[雷达激光雷达可视化工具投影工具]。

获得校准结果

所有校准结果都保存在output配置文件中的路径下 ,并以yaml格式提供。此外,根据传感器,校准结果存储在output目录中的不同文件夹中,如表7所示:

表7.每个传感器的已保存校准结果的路径

SensorPath for Saved Results
Short_Camera[output]/camera_params
Long_Camera[output]/camera_params
Radar[output]/radar_params

 

验证方法和结果

校准完成后,在[output]/validation目录中生成相应的校准结果验证图像。

本节提供背景信息和相应的验证方法,用于评估每个校准工具的验证图像。

相机到相机校准

  • 背景信息: 在经纱图像中,绿色通道由广角相机图像产生,红色和蓝色通道由远摄相机图像产生。用户可以比较扭曲图像的对齐结果,以验证校准的外部参数的精度。

  • 验证方法:

    在经纱图像的融合区域中,判断距离车辆50米的场景的对齐。如果图像完全一致,则外部参数是令人满意的。但是,如果出现粉红色或绿色重影(位移),则外部参数出错。

    当误差大于某个范围(例如,20个像素,由实际使用情况确定)时,您需要重新校准外部参数。在一般情况下,由于视差,在水平方向上可能会发生一些位错,但是垂直方向不受影响。这是正常现象。

 

相机到激光雷达校准

  • 背景信息: 在点云投影图像中,用户可以看到具有明显边缘的物体和标志,并比较对齐。
  • 验证方法: 如果目标在50米范围内,其点云边缘可以与图像边缘重合,校准结果的准确性可以证明非常高。但是,如果存在错位,校准结果会出错。当误差大于某个范围时(例如,5个像素,具体取决于实际使用情况),外部参数不可用。

雷达到摄像机校准

  • 背景信息: 要验证外部输出,请使用系统中的LiDAR作为介质。这种方法使您可以获得:

    • 通过雷达相对于摄像机的外在值,雷达相对于LiDAR的外部参数

    • 相机相对于LiDAR的外在价值

      然后,您可以绘制鸟瞰图融合图像,该图像融合雷达数据和LiDAR坐标系中的LiDAR数据。您可以在鸟瞰图融合图像中使用雷达数据和LiDAR数据的对齐来判断外部参数的准确性。在融合图像中,所有小的白点表示LiDAR点云,而大的绿色实心圆表示雷达物体。

  • 验证方法:

    鸟瞰图融合图像中雷达物体和LiDAR数据的对准显示了外在参数的准确性。如果大多数目标重合,那就令人满意了。但是,如果超过40%的目标(特别是车辆)对齐,则不能令人满意,您需要重新校准。

雷达LiDAR展示台投影工具

为了获得雷达数据和LiDAR点云的融合图像,校准过程自动(如果使用bash sensor_calibration.sh all)或手动(如果使用bash sensor_calibration.sh visualizer)调用另一个投影工具,radar_lidar_visualizer。投影工具加载Radar-to-Camera和Camera-to-LiDAR的外部文件。

重要信息:在投影工具启动之前,请确保两个外部参数已经过良好校准,并且存在于配置文件(radar_camera_extrinsics_filenamecamera_lidar_extrinsics_filename)中设置的特定路径中。

  1. radar_lidar_visualizer使用以下命令运行程序:
cd /apollo/scripts
bash sensor_calibration.sh visualizer
  1. 请注意以下配置文件的保存位置radar_lidar_visualizer
/apollo/modules/calibration/radar_lidar_visualizer/conf/radar_lidar_visualizer.conf

表8标识并描述了投影工具配置文件中的每个元素。

表8.投影工具Radar-to-LiDAR配置描述

配置文件描述
radar_topic雷达数据主题
lidar_topicLiDAR点云主题
radar_camera_extrinsics_filename校准雷达到相机的外在性
camera_lidar_extrinsics_filename校准了Camera-to-LiDAR的外在性
output_path验证结果输出路径
  1. 记下保存的验证图像的位置:

    [output]/validation

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值