GPS冷热启动之坑

本文探讨了如何在TX2控制器中处理GPS(ZED-F9P)的热启动(2s)和冷启动(25s+)问题,确保开机自启动的ros节点在正确的时间同步下运行,避免了旧文件覆盖。通过调整自启动脚本和时间判断,解决了冷启动时log文件命名混乱的问题。
摘要由CSDN通过智能技术生成

TX2控制器, 没有后备电池, 每天上午或下午工作时间开机, 从GPS(ZED-F9P)同步时间, 开机自启动一个ros节点, 存为时间命名的log文件, 测试人员反应:

  • reboot系统, 文件可以更新
  • 断电再上电, 文件没有更新

文件名是年月日-时分秒的格式, 类似于

$ time=$(date "+%Y%m%d-%H%M%S")
$ echo $time
20211208-171709

这牵涉到GPS的热启动和冷启动的问题, 查ZED-F9P datasheet

在这里插入图片描述

发现热启动2s, 冷启动25s以上.
每次开机都是2018年的一个时间, 等GPS同步后才变为正常的2021年.
而自启脚本里面只sleep 10后启动ros节点, dmesg打的log中看到18秒多的时候节点就起来了, 这就导致:

  • 断电后启动(因为没有任何后备电池, 是冷启动需25s), 时间还没有同步节点就起来了, 还是2018年, 文件几乎一直都是或者在覆盖2018xxxx命名的log文件, 而测试人员看着一大片log文件, 直接就奔最新的去看, 当然没看到更新…
  • 重启Linux系统这里算是热启动, 时间2s就更新了, 直接就是2021年现在的时间, 当然就没问题

临时解决方法也很简单:

  • 自启动脚本中sleep更长的时间, 如100s后, 再启动ros节点存文件
  • 或者 脚本里面判断时间不是(或者超过)2018年, 再启动ros节点.
# 示例
time=2018
while [[ "$time" == "2018" ]]
do
        time=$(date "+%Y")
        sleep 1
done
# roslaunch ...

欢迎扫描二维码关注本人微信公众号, 及时获取最新文章:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值