apollo中有很多模块,在我的apollo系列文章中,打算把重要的模块单独写一遍文章详细介绍,分为:标定、定位、导航、感知、预测、规划、控制。这里我们先从标定说起。。。。。
在之前的文章中我介绍了很多标定相关的知识,Apollo系列的文章,主要从apollo的代码和思想来介绍标定。
1. 车身标定
车身的标定谈不上什么方法,主要是从apollo的标定参数文件来分析,需要关注的车身参数有那些。
front_edge_to_center: 1.373 //前轴到中心的距离
back_edge_to_center: 1.402 //后轴到中心的距离
left_edge_to_center: 0.505 //左轮到中心的距离
right_edge_to_center: 0.505 //右轮到中心的距离
length: 2.775 //车长
width: 1.01 //车宽
height: 1.672 //车高
min_turn_radius: 3.75 //最小转弯半径
max_acceleration: 2.5 //最大加速度
max_deceleration: -7.0 //最小加速度
max_steer_angle: 6.6323 //最大转角
max_steer_angle_rate: 6.98131700798
//最大转角率
min_steer_angle_rate:0 //最小转角率
steer_ratio: 10.85 //方向盘传动比
wheel_base: 1.73 //轮距
wheel_rolling_radius: 0.286 //车轮半径
max_abs_speed_when_stopped: 0.2
//停车速度
2. 激光雷达到惯导的标定
这部分在apollo的文档里有详细介绍:apollo/docs/specs/lidar_calibration.pdf,甚至apollo还贴心的准备了中文,这里笔者作为曾经百度的一员,为百度apollo的开放干杯,相信我大百度能重回巅峰。这里我就偷懒,直接截图了:
3. 摄像头到激光雷达的标定
1. 首先下载apollo的标定工具,并将文件解压缩到$APOLLO_HOME/modules/calibration中。
2. 标定的相机内参,这部分内容这里不介绍,网上内容很多,标定包含焦距畸变等。
3. 初始化外参,以下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
4. 标定外参,建议选择包含树木,电线杆,路灯,交通标志,静止物体和清晰交通线等物体的标定场地。
运行:cd /apollo/scripts && bash sensor_calibration.sh lidar_camera
输出类型为:.yaml的文件,将LiDAR点云投影到相机图像上进行验证:得到如下图像:
特别的apollo针对标定,提供了在线服务,如果你自己标定有困难,可以联系百度apollo团队,上传数据,百度会帮你标定,这也再次显示了百度的开放心态,真心希望有一天百度能在自动驾驶领域占用更多的话语权。