GNSS NMEA 时间同步
设置 GPS/GNSS
请根据厂家说明设置您的GPS来符合 Ouster 激光雷达对GPS数据的以下要求:
NMEA: 目前只能接受GPRMC语句
波特率(Baud Rates): 9600 或 115200
启用极性(Polarity): 高电平(ACTIVE_HIGH) 或 低电平(ACTIVE_LOW)
电压: 3.3 - 15V (最小电流5mA)
目前已经支持以1部GNSS驱动多枚雷达(PPS out is driving when MIO was set as input )
同步结束后自1970年计时,否则以开机时间计时
PPS对齐有相位对齐与频率对齐两种,前者是绝对对齐,以上升沿为标记,后者不要求频率或相位都一致,只需要其保持固定的或成比例的差别。对OS而言,是PPS上升沿对齐,绝对相位对齐。
收GPRMC数据的接口是TTL电平么?
可参考文档,标准的nmea信号电压是0~5V范围的TTL电压,但是fw1.14b14之后实际基本能覆盖常见的RS232电平。
至于active_high或者active_low是指PPS上升沿还是下降沿有效,主要由GNSS接收机决定,理论上active_high和active_low都有可能,但是RS232很多都是active_low;注意这里与logic_low和logic_high的电压定义不同,logic_low和logic_high指的是二进制位0和1对应的电压状态。
注意 如果GPS电压不能满足上述最小电压,请参照《硬件指南》3.2章节制作额外的升压电路。
连接GPS和转接盒
如上图所示:
拧松转接盒四角的螺丝,打开转接盒。
将GPS的PPS信号线连接到标有 sync_pulse_in 的pin脚(图上黄色标识)。
将GPS的地线线连接到标有 GND 的pin脚(图上灰色标识)。
如果使用NMEA同步时间,则将GPS的NMEA UART信号线连接到标有 multiputpose_io 的pin脚(图上紫色标识)。
TCP命令配置雷达同步模式
以Linux系统为例,打开命令行窗口,输入 nc hostname nc
进入TCP命令控制界面,输入:
set_config_param timestamp_mode TIME_FROM_SYNC_PULSE_IN
使用外部输入信号作为同步源。
set_config_param multipurpose_io_mode INPUT_NMEA_UART
使用 NMEA UART 消息同步时间。
set_config_param sync_pulse_in_polarity <ACTIVE_HIGH or ACTIVE_LOW>
根据GPS的启用极性选择高电平或低电平。
set_config_param nmea_in_polarity <ACTIVE_HIGH or ACTIVE_LOW>
根据NMEA的类型选择高电平启用或低电平启用。
set_config_param nmea_baud_rate <BAUD_11520 or BAUD_9600>
根据GPS的配置选择对应的波特率。
set_config_param nmea_leap_seconds 37
设置闰秒,参考国际原子时(TAI)。
reinitialize
重新初始化雷达,使上述设置生效
write_config_txt
保存配置,否则下次上电后配置失效。
检查时间同步是否成功
TCP 命令输入 get_time_info
,雷达将返回JSON格式的内容如下:
{ "timestamp": { "time": 1585881641.96139565999999, "mode": "TIME_FROM_SYNC_PUSLE_IN", "time_options": { "sync_pulse_in": 1585881641, "internal_osc": 302, "ptp_1588": 309 } }, "sync_pulse_in": { "locked": 1, "diagnostics": { "last_period_nsec": 10, "count_unfiltered": 832, "count": 832 }, "polarity": "ACTIVE_HIGH" }, "multipurpose_io": { "mode": "INPUT_NMEA_UART", "sync_pulse_out": { "pulse_width_ms": 10, "angle_deg": 360, "frequency_hz": 1, "polarity": "ACTIVE_HIGH" }, "nmea": { "baud_rate": "BAUD_9600", "diagnostics": { "io_checks": { "bit_count": 2938457, "bit_count_unfilterd": 2938457, "start_char_count": 832, "char_count": 66526 }, "decoding": { "last_read_message": "GPRMC,024041.00,A,5107.0017737,N,11402.3291611,W,0.080,323.3,020420,0.0,E,A*20", "date_decoded_count": 832, "not_valid_count": 0, "utc_decoded_count": 832 } }, "leap_seconds": 37, "ignore_valid_char": 0, "polarity": "ACTIVE_HIGH" } } }
其中,
”sync_pulse_in": { "locked": 1 ...
表示雷达接收PPS信号成功。“nmea": { “locked”: 1 ...
表示雷达接收NMEA消息成功。"decoding": {"last_read_message":
字段可以验证雷达最后接收到的 GPRMC 消息,例如。"GPRMC,024041.00,A,5107.0017737,N,11402.3291611,W,0.080,323.3,020420,0.0,E,A*20"
"timestamp": { "time": 1585881641.96139565999999,
为同步后时间。