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

TurtleBot3自定义Gazebo世界启动失败及Nav2导航失效问题求助

TurtleBot3 ROS2 自定义世界加载与导航问题解决方案

一、自定义世界无法加载且无法同时启动机器人问题

1. 解决自定义world路径问题

  • 直接使用绝对路径指定自定义world文件,避免Gazebo因路径找不到文件:
    export TURTLEBOT3_MODEL=burger && \
    ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py world:=/home/你的用户名/test.world
    
  • 或者将自定义world放入Gazebo默认模型路径(~/.gazebo/models/test/),命名为test.world,之后用模型URI调用:
    export TURTLEBOT3_MODEL=burger && \
    ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py world:=model://test/test.world
    

2. 分离世界与机器人的启动逻辑

默认turtlebot3_world.launch.py会强制加载默认世界模型,导致自定义世界被覆盖,可改用空世界launch文件分两步启动:

  • 第一步启动自定义世界:
    export TURTLEBOT3_MODEL=burger && \
    ros2 launch turtlebot3_gazebo turtlebot3_empty_world.launch.py world:=/path/to/test.world
    
  • 第二步新开终端启动TurtleBot3机器人:
    ros2 run gazebo_ros spawn_entity.py -topic robot_description -entity turtlebot3_burger
    

3. 调整默认模型加载逻辑

找到turtlebot3_gazebo/launch/turtlebot3_world.launch.py,修改其中加载默认世界模型的代码块,添加条件判断:当用户指定自定义world时,跳过加载turtlebot3_worlds/burger.model中的默认世界引用。

二、SLAM与导航功能异常问题

1. 确保use_sim_time全局生效

除了在launch命令中指定use_sim_time:=True,需验证所有相关节点均启用该参数:

  • 检查参数状态:
    ros2 param get /cartographer_node use_sim_time
    ros2 param get /nav2_controller use_sim_time
    
  • 若未设置,手动全局配置:
    ros2 param set /cartographer_node use_sim_time true
    ros2 param set /nav2_controller use_sim_time true
    ros2 param set /gazebo use_sim_time true
    

2. 验证地图文件正确性

  • 确认map.yaml路径正确,直接使用绝对路径指定:
    export TURTLEBOT3_MODEL=burger && \
    ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=/home/你的用户名/map.yaml
    
  • 检查map.yaml内的image字段,确保指向正确的.pgm地图文件,示例配置:
    image: /home/你的用户名/map.pgm
    resolution: 0.05
    origin: [-10.0, -10.0, 0.0]
    negate: 0
    occupied_thresh: 0.65
    free_thresh: 0.196
    

3. 检查TF树完整性

TF链路map -> odom -> base_link是导航正常工作的核心,通过以下命令验证:

ros2 run tf2_tools view_frames.py

生成frames.pdf后查看链路是否完整,若缺失,检查里程计节点、Cartographer节点是否正常发布TF数据。

4. 排查导航节点日志

通过日志定位具体报错:

ros2 logs --node /nav2_controller
ros2 logs --node /cartographer_node

根据日志提示修复参数配置或依赖问题,比如导航参数文件可使用官方默认的turtlebot3_navigation2/params/waffle.yaml(Burger型号兼容)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:55:41