You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Gazebo的real time factor设置为1并同步ROS时间?

Gazebo与ROS时间同步及Real Time Factor(RTF)调至1的解决方案

前置配置校验

  • 确认/use_sim_time全局参数在所有节点启动前完成配置:先启动roscore执行rosparam set /use_sim_time true,再启动Gazebo和其他业务节点,避免节点启动时读取到未更新的参数
  • 确认Gazebo正确发布/clock话题:执行rostopic info /clock,检查发布者列表是否包含gazebo节点;若没有则需使用roslaunch gazebo_ros封装的启动入口启动仿真,不要直接运行原生gazebo命令,同时确认gazebo_ros包安装完整

RTF低于1的针对性解决方案

RTF达不到1的核心原因是当前硬件算力无法支撑仿真的实时运算需求,配置<real_time_factor>1</real_time_factor>仅能设置RTF上限,无法提升实际运算效率,可按以下优先级调整:

1. 修正仿真参数配置

在Gazebo的world文件<physics>标签下配置全局物理参数,优先级高于单个模型SDF文件的配置:

<physics type="ode">
    <max_step_size>0.001</max_step_size>
    <real_time_factor>1</real_time_factor>
    <real_time_update_rate>1000</real_time_update_rate>
</physics>

也可以直接在ROS启动文件中通过参数传入:

<include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find 你的功能包名)/worlds/你的场景文件.world"/>
    <arg name="real_time_update_rate" value="1000"/>
    <arg name="max_step_size" value="0.001"/>
    <arg name="use_sim_time" value="true"/>
</include>

如果硬件算力确实有限,可以同步降低仿真更新频率减少运算压力,例如将real_time_update_rate设为500、max_step_size设为0.002,只要传感器采样频率不高于仿真更新频率,就不会影响障碍物检测的业务逻辑。

2. 降低仿真运算负载

  • 不需要可视化时启动Gazebo添加gui:=false参数,关闭图形界面可以节省30%以上的算力占用
  • 简化仿真场景:删除高面数的冗余模型,关闭非必要的物理碰撞检测,降低Velodyne仿真插件的点云采样率
  • 禁用Gazebo非必要的特效插件:关闭光影、粒子、动态纹理等渲染效果,仅保留必要的物理和传感器仿真组件

3. 硬件资源调优

  • 运行仿真时关闭其他占用CPU、GPU的后台进程,优先给仿真任务分配算力
  • 若使用虚拟机运行仿真,需分配至少4核CPU、8G运行内存,同时开启GPU硬件加速权限,不要使用软件渲染模式

效果校验

所有配置完成后启动全链路节点,Gazebo状态栏的RTF会稳定在1.0±0.05范围内,执行rostopic hz /clock输出的话题频率会和real_time_update_rate配置值一致,此时ROS时间和Gazebo仿真时间完全同步。

内容的提问来源于stack exchange,提问作者Stivmab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:36:02