所使用的相机是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
格式的文件。
用户必须确保K
和D
数据正确:
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
Sensor | Topic Name | Topic Feq. (Hz) |
---|---|---|
Short_Camera | /apollo/sensor/camera/traffic/image_short | 9 |
Long_Camera | /apollo/sensor/camera/traffic/image_long | 9 |
INS | /apollo/sensor/gnss/odometry | 100 |
INS | /apollo/sensor/gnss/ins_stat | 2 |
Table 2. The Required Topics of Camera-to-LiDAR Calibration
Sensor | Topic Name | Topic Feq. (Hz) |
---|---|---|
Short_Camera | /apollo/sensor/camera/traffic/image_short | 9 |
LiDAR | /apollo/sensor/velodyne64/compensator/PointCloud2 | 10 |
INS | /apollo/sensor/gnss/odometry | 100 |
INS | /apollo/sensor/gnss/ins_stat | 2 |
Table 3. The Required Topics of Radar-to-Camera Calibration
Sensor | Topic Name | Topic Feq. (Hz) |
---|---|---|
Short_Camera | /apollo/sensor/camera/traffic/image_short | 9 |
INS | /apollo/sensor/gnss/odometry | 100 |
INS | /apollo/sensor/gnss/ins_stat | 2 |
在开始使用校准工具之前,必须验证 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
文件提供。cd / apollo / scripts
bash sensor_calibration.sh lidar_camera
由于两个摄像机具有不同的时间戳,因此它们无法完全同步,因此在记录数据时非常缓慢地驾驶车辆非常重要。车辆的慢速可以有效地缓解由不同时间戳引起的图像不匹配。
确保摄像机图像中有一定数量(超过500个)投影点,否则工具无法执行外部校准操作。因此,此工具仅适用于广角相机。
/apollo/modules/calibration/lidar_camera_calibrator/camera_camera_calibrtor.conf
表5标识并描述了配置文件中的每个元素。
表5. Camera-to-LiDAR校准配置说明
组态 | 描述 |
---|---|
camera_topic | 广角相机图像topic |
lidar_topic | LiDAR点云topic |
odometry_topic | 车辆测距topic |
ins_stat_topic | 车辆定位状态topic |
camera_intrinsics_filename | 相机的固有文件 |
init_extrinsics_filename | 初始外部值文件 |
output_path | 校准结果输出路径 |
calib_stop_count | 需要停止捕获数据 |
max_speed_kmh | 最大车速限制,单位:km / h |
.yaml
文件提供cd / apollo / scripts
bash sensor_calibration.sh radar_camera
以低速和直线驱动车辆,使校准工具仅在这组条件下捕获数据。
/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 |
.yaml
文件提供radar_lidar_visualizer
工具来生成图像。有关详细信息,请参阅[雷达激光雷达可视化工具投影工具]。所有校准结果都保存在output
配置文件中的路径下 ,并以yaml
格式提供。此外,根据传感器,校准结果存储在output
目录中的不同文件夹中,如表7所示:
表7.每个传感器的已保存校准结果的路径
Sensor | Path for Saved Results |
---|---|
Short_Camera | [output]/camera_params |
Long_Camera | [output]/camera_params |
Radar | [output]/radar_params |
校准完成后,在[output]/validation
目录中生成相应的校准结果验证图像。
本节提供背景信息和相应的验证方法,用于评估每个校准工具的验证图像。
背景信息: 在经纱图像中,绿色通道由广角相机图像产生,红色和蓝色通道由远摄相机图像产生。用户可以比较扭曲图像的对齐结果,以验证校准的外部参数的精度。
验证方法:
在经纱图像的融合区域中,判断距离车辆50米的场景的对齐。如果图像完全一致,则外部参数是令人满意的。但是,如果出现粉红色或绿色重影(位移),则外部参数出错。
当误差大于某个范围(例如,20个像素,由实际使用情况确定)时,您需要重新校准外部参数。在一般情况下,由于视差,在水平方向上可能会发生一些位错,但是垂直方向不受影响。这是正常现象。
背景信息: 要验证外部输出,请使用系统中的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_filename
和camera_lidar_extrinsics_filename
)中设置的特定路径中。
radar_lidar_visualizer
使用以下命令运行程序:cd /apollo/scripts
bash sensor_calibration.sh visualizer
radar_lidar_visualizer
:/apollo/modules/calibration/radar_lidar_visualizer/conf/radar_lidar_visualizer.conf
表8标识并描述了投影工具配置文件中的每个元素。
表8.投影工具Radar-to-LiDAR配置描述
配置文件 | 描述 |
---|---|
radar_topic | 雷达数据主题 |
lidar_topic | LiDAR点云主题 |
radar_camera_extrinsics_filename | 校准雷达到相机的外在性 |
camera_lidar_extrinsics_filename | 校准了Camera-to-LiDAR的外在性 |
output_path | 验证结果输出路径 |
记下保存的验证图像的位置:
[output]/validation