ROS2 多机时间同步(Chrony配置简明指南)

适用场景:

主机运行 ROS2 Humble(发布 /scan 等),板子运行 ROS2 Foxy(发布 /tf 等),两边通过 ROS_DOMAIN_ID 跨平台通讯。需要保证系统时间对齐,避免 TF 插值失败、建图抖动等问题。


一、主机端配置(NTP服务端)

1. 安装 chrony

bash 复制代码
sudo apt install chrony

2. 修改配置文件

bash 复制代码
sudo nano /etc/chrony/chrony.conf

将原有 pool 替换为:

conf 复制代码
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
local stratum 10
allow 192.168.0.0/16
bindaddress 0.0.0.0

确保这几项存在。

3. 重启并启用开机自启

bash 复制代码
sudo systemctl restart chrony
sudo systemctl enable chrony

4. 验证状态

bash 复制代码
chronyc tracking

确认输出中包含:

text 复制代码
Leap status     : Normal

二、板载设备配置(NTP客户端)

1. 安装 chrony

bash 复制代码
sudo apt install chrony

2. 修改配置文件

bash 复制代码
sudo nano /etc/chrony/chrony.conf

添加如下行(仅保留一条 server):

conf 复制代码
server 192.168.x.x iburst   # 改为你的主机 IP
makestep 1 3

3. 重启服务并启用开机自启

bash 复制代码
sudo systemctl restart chrony
sudo systemctl enable chrony

4. 验证同步结果

bash 复制代码
chronyc tracking

确认 Leap status 为 Normal,且时间偏差在 0.1 秒以内。


三、建图抖动消除建议

在 Cartographer 的 .lua 文件中添加:

lua 复制代码
lookup_transform_timeout_sec = 0.5

确保 .yamluse_sim_time: false,并开启 EKF 的 publish_tf: true


四、测试通过表现

  • ros2 launch 无任何 extrapolation 报错
  • rviz2 地图无抖动
  • /tf 和 /scan 时间戳一致
  • cartographer_node 日志正常,submap 插入稳定

相关推荐
MintonLee复现侠5 天前
记录RK3588的docker中启动rviz2报错
docker·容器·ros·rk3588·rviz·rviz2
Mr.Winter`7 天前
运动规划实战案例 | 基于多源流场(Flow Field)的路径规划(附ROS C++/Python实现)
人工智能·机器人·自动驾驶·ros·ros2·具身智能
Tipriest_10 天前
wstool和git submodule优劣势对比
ros·wstool·git submodule
zylyehuo21 天前
ROS1(20.04 noetic) + PX4 + AirSim
ros·drone
想要成为计算机高手23 天前
11. isaacsim4.2教程-Transform 树与Odometry
人工智能·机器人·自动驾驶·ros·rviz·isaac sim·仿真环境
Zhichao_9724 天前
【ROS1】09-ROS通信机制——参数服务器
ros
想要成为计算机高手25 天前
10. isaacsim4.2教程-RTX Lidar 传感器
数码相机·机器人·ros·仿真·具身智能·vla·isaacsim
城北有个混子25 天前
【机器人】—— 3. ROS 架构 & 文件系统
机器人·ros
Mr.Winter`1 个月前
轨迹优化 | 基于边界中间值问题(BIVP)的路径平滑求解器(附C++/Python仿真)
人工智能·机器人·自动驾驶·ros·路径规划·数值优化·轨迹优化
Hi202402171 个月前
基于ROS2进行相机标定,并通过测试相机到棋盘格之间的距离进行验证
数码相机·docker·ros·相机·机器视觉·ros2·单目测距