自动驾驶中的时间同步方案

本文重点讨论自动驾驶中使用比较多的gps+pps+gpsd+chrony+ptpd+gptpd的时间同步方案,本文仅为自己在调试过程中的记录,如有不对地方欢迎讨论:853906167@qq.com

详细方案如下:Tbox端(IMX8系列)的ubxclient接收来自gps(如ublox系列)的GPS时间和PPS信号,Tbox端将接收到gps的NEMA/UBX消息通过udp转发给gpsd,然后chrony在结合gpsd的时间信息还有linux下的pps信息做时间同步和修正,后续Tbox作为server端通过ptpd给自动驾驶算力芯片(如nvida orin/xavier)做时间同步,然后自动驾驶算力芯片在通过gptpd给mcu/lidar等做时间同步,详细的框图如下:

 1.PPS信号处理

配置ublox芯片PPS信号输出频率1HZ,实测tbox端pps_in输入信号:

 从测试结果来看17次的脉冲信号周期为7.441s+9.564=17.005s,周期精度小于0.001s,精度比较高

linux 打开pps配置:

CONFIG_PPS=y
CONFIG_PPS_DEBUG=n
CONFIG_PPS_CLIENT_KTIMER=n     
CONFIG_PPS_CLIENT_LDISC=n
CONFIG_PPS_CLIENT_GPIO=y

note:如果ktimer/ldisc打开注意设备节点可能不一样,kernel log中可以看到具体对应的设备节点,我们这边ktimer/ldisc都没打开,pps_gpio节点是/dev/pps2,后续消除误差需要配置这个节点

dts配置:

pps_ubx{
        compatible = "pps-gpio";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pps>;
        gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };

kernel中pps处理相关代码:drivers/pps/clients/pps-gpio.c

linu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值