一、硬件连接:
PTP(Precision Time Protocol,精确时间协议)用于同步计算机网络中的多个时钟,时间准度可达亚微秒级。
说明
选择 PTP 作为时间来源时,应连接第三方 PTP master 设备以获取绝对时间。
注意
- PTP master 为第三方设备,不包含在雷达产品中
- 雷达为 PTP slave 设备,PTP 协议即插即用,不需要额外设置
- 选中 PTP 时钟源之后,激光雷达不再输出 GPS 数据包,仅输出点云数据包
- 点云数据包中的 Timestamp 字段和 Date & Time 字段严格按照 PTP master 设备提供的 PTP 时间同步。某些 PTP master 设备输出的时间与雷达的Date & Time 可能存在固定偏移,请确认 PTP master 设备的设置正确且已校准
- 如果已选择 PTP 作为时间来源,而当前无可用的 PTP master 设备,则激光雷达从默认的起始时间开始计时;如果提供了 PTP 时钟源,而后中断,
- 则激光雷达根据内部时钟继续计时
二、配置:
名称 | 起始角度 (start angle) | 同步角度 (sync angle) | 视场角 (FOV) | 顺时针 (IsClockWise) | Mearement Time(ms) | TimeStampSec (ms) |
左激光雷达 | 320 | 0 | (0, 200) &(330, 360) | 0 | x42 | (x+1)12 |
右激光雷达 | 40 | 0 | (0, 30) & (160,360) | 1 | x42 | (x+1)16 |
下面所有的角度都是lidar坐标系下的角度,也就是以lidar线缆位置为0度,顺时针为正
device_ip: "192.168.0.0"
product_name: "Pandar128"
common:
device_info:
model_name: ["Pandar_ZYNQ"]
# "0"-angle based, "1"-time based
trigger_method: ["0"]
lidar_config:
# "0"-Clockwise, "1"-Counterclockwise
rotation_direction: ["1"]
# [destnationIp, destinationPort, gpsPort]
ip_destination: ["192.168.1.10", "2370", "10110"]
# "2"-600 rpm, "3"-1200 rpm
spin_speed: ["2"]
# "0"-Linear Mapping, "1"-Nonlinear Mapping #1, "2"-Nonlinear Mapping #2
reflectivity_mapping: ["1"]
# Noise points mitigation in rain and fog. "0"-OFF, "1"-ON
noise_filtering: ["1"]
# Interstitial points filtering. "0"-OFF, "1"-ON
interstitial_points: ["1"]
# Retro Multi-Reflection Filtering. "0"-OFF, "1"-ON
retro_multi_reflection: ["1"]
lidar_mode:
# "0"-last return, "1"-strongest return, "2"-Dual Return: Last + Strongest,
# "3"-first Return "4"-Dual Return: Last + First, "5"-Dual Return: Strongest + First
lidar_mode: ["4"]
lidar_sync:
# [sync, syncAngle]
# sync: "0"-Disable, "1"-Enable; syncAngle: in units of 1 degress
lidar_sync: ["1", "0"]
ptp_lock_offset:
# Offset upper limit of PTP Locked status. Range: 1~100 us, default: 1us
ptp_lock_offset: ["20"]
operation_mode:
# "0"-Dynamic, "1"-Constant
operation_mode: ["1"]
high_resolution:
# "0"-Standard, "1"-High Resolution
high_resolution: ["1"]
lidar_range:
# 0-for all channels, 3-multi-section FOV
method: 3
# For Method "0": The Start angle and End angle specify a continuous range, applying to all channels. Unit: 0.1 deg
lidar_range: [0, 3600]
# For Method "3": Five continuous angle ranges can be specified and applied to ALL channels. Unit: 0.1 deg
lidar_range_extend: [[0, 2000], [3300, 3600], [0, 0], [0, 0], [0, 0]]
1. Start Angle:
也可以被称为end angle。因为每一帧的点云会在这个角度打包成PointCloudPack。为了避免出现spin gap,它应该被设置在FoV之外。因为要考虑到lidar calibration带来的偏差,它通常被设置在FoV的结束角度后10度,可以在web端设置。
2. Sync Angle:
同步正确的情况下,所有lidar都会在同一时刻旋转到各自的sync angle,可以在web端设置。
3. MearementTime:
当start angle在FoV中时,measurement time是lidar旋转到start angle的时刻。当start angle在FoV外时,measurement time是lidar旋转到FoV的开始角度的时刻。具体来说,就是第一个激光到达该角度的时刻。每个激光都有一个水平角度的偏移。因此,它应该是提前7度左右(由于lidar各通道在水平方向上存在固定偏差, 这里定义:当 42 号通道经过如下图 所示雷达 0°位置时, 点云 UDP 包中对应数据块的方位角,即Azimuth为 0°)
注意这里的开始角度指的是先转到的Fov边界,比如lidar的FoV是(90, 270)但是是逆时针旋转,并且start angle在FoV外。那么它的measurement time是lidar旋转到270度的时刻。measurement time的时钟是lidar自己的时钟。
所以measurement time受到三个配置的影响:FoV,start angle,旋转方向。表格中的measurement time为计算出的理论值,实际数据的measurement time应该在它附近。
4. TimestampSec
驱动发布lidar数据的时刻。为了避免主lidar等其他lidar数据的情况出现,其他lidar的timestampsec最好在主lidar之前。表格中的timestampsec为计算出的理论值,实际数据的timestampsec应该在它附近。
5. TriggerTime
一般情况下,应用会根据主lidar的measurement time寻找其他同步的lidar数据,寻找的依据为(measurement_time + trigger_time, measurement_time + trigger_time + window_size)。表中的trigger time是主lidar是hs_lidar_left时,推荐的trigger time。如果按表中设置,window_size不能小于40ms
三、lidar时间同步检查
sudo wireshark
在wireshark里选择对应的lidar网口双击 -> 在打开的界面,输入ptp回车 -> 在protocol中有显示PTPv2,则证明,同步成功。
四、lidar其他参数:
五、lidar相对位姿
1.车体坐标系下lidar的位姿
# 车体坐标系下的lidar位姿
sensors {
type: LIDAR
name: "lidar_right"
# 旋转矩阵(可转换为欧拉角:roll,yaw,pitch)
rotation: 0.99987588022439711
rotation: -0.011594042246698407
rotation: -0.010667817483851214
rotation: 0.011688035944651166
rotation: 0.99989304651737365
rotation: 0.00879120821967933
rotation: 0.010564750884120811
rotation: -0.0089148028910900571
rotation: 0.99990445159933627
# 车体坐标系下lidar的x,y,z值
translation: 1.890110075826952
translation: -0.51146052267132269
translation: 1.8555085524892856
}
2.相对位姿
在主传感器坐标系下的相对位姿
在左雷达坐标系下的右雷达坐标参数
relative_poses {
from_sensor: "lidar_right"
from_type: LIDAR
to_sensor: "lidar_left"
to_type: LIDAR
# 旋转矩阵,可转换为欧拉角(roll、raw、pitch)
rotation: 0.99972630053741884
rotation: -0.0226389028397669
rotation: 0.0058994992989414262
rotation: 0.022580646304967967
rotation: 0.99969737175920947
rotation: 0.0097611121384238234
rotation: -0.0061186948131568657
rotation: -0.0096252260202315532
rotation: 0.99993495618357242
# 在左雷达坐标系下,右雷达的x,y,z值
translation: -0.019332778135833121
translation: -1.1351462349121959
translation: -0.0023808227301449774
}