Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mobile_nav_sim

基于 ROS 2 Jazzy + Nav2 + Gazebo Harmonic + AMCL 的移动机器人自主导航仿真项目。

该项目在官方 nav2_bringup / nav2_minimal_tb3_sim 最小示例基础上完成了独立封装,支持:

  • 一键启动导航仿真
  • 地图加载与 AMCL 定位
  • 目标点导航与 RViz 可视化
  • 多目标点自动发送
  • 导航评估与 CSV 结果导出

1. 项目结构

mobile_nav_sim/
├── config/
│   ├── goals.yaml
│   └── nav2_params.yaml
├── launch/
│   ├── localization.launch.py
│   ├── navigation.launch.py
│   └── sim.launch.py
├── maps/
├── results/
├── rviz/
│   └── nav2_default_view.rviz
├── scripts/
│   ├── eval_nav.py
│   └── send_goals.py
├── worlds/
├── package.xml
├── README.md
└── setup.py

2. 环境说明

  • Ubuntu 24.04
  • ROS 2 Jazzy
  • nav2_bringup
  • nav2_minimal_tb3_sim
  • Gazebo Harmonic

3. 编译

cd ~/nav2_sim_ws
source /opt/ros/jazzy/setup.bash
colcon build
source install/setup.bash

4. 启动仿真

推荐使用官方 TB3 地图、世界和机器人模型显式启动:

source ~/nav2_sim_ws/install/setup.bash

MAP_FILE=/opt/ros/jazzy/share/nav2_bringup/maps/tb3_sandbox.yaml
WORLD_FILE=/opt/ros/jazzy/share/nav2_minimal_tb3_sim/worlds/tb3_sandbox.sdf.xacro
ROBOT_SDF=/opt/ros/jazzy/share/nav2_minimal_tb3_sim/urdf/gz_waffle.sdf.xacro

ros2 launch mobile_nav_sim sim.launch.py \
  headless:=False \
  map:=$MAP_FILE \
  world:=$WORLD_FILE \
  robot_sdf:=$ROBOT_SDF \
  robot_name:=turtlebot3_waffle

启动后,RViz 中可进行:

  1. 2D Pose Estimate
  2. Nav2 Goal
  3. 观察规划路径、转向和到达效果

5. 仅启动定位或导航

5.1 启动定位

source ~/nav2_sim_ws/install/setup.bash
ros2 launch mobile_nav_sim localization.launch.py

5.2 启动导航

source ~/nav2_sim_ws/install/setup.bash
ros2 launch mobile_nav_sim navigation.launch.py

6. 自动发送目标点

目标点配置文件:config/goals.yaml

示例:

goals:
  - {x: -1.90, y: -0.50, yaw: 0.00}
  - {x: -1.70, y: -0.35, yaw: 0.00}
  - {x: -1.45, y: -0.15, yaw: 0.50}

执行自动目标点发送:

source ~/nav2_sim_ws/install/setup.bash
python3 ~/nav2_sim_ws/src/mobile_nav_sim/scripts/send_goals.py

指定目标文件:

source ~/nav2_sim_ws/install/setup.bash
python3 ~/nav2_sim_ws/src/mobile_nav_sim/scripts/send_goals.py \
  --goal-file ~/nav2_sim_ws/src/mobile_nav_sim/config/goals.yaml

7. 导航评估与 CSV 导出

eval_nav.py 支持:

  • 自动发布初始位姿
  • 顺序执行多个目标点
  • 记录成功/失败、状态码、耗时、路径长度
  • 输出到 results/*.csv

运行:

source ~/nav2_sim_ws/install/setup.bash
python3 ~/nav2_sim_ws/src/mobile_nav_sim/scripts/eval_nav.py \
  --set-initial-pose \
  --init-x -2.0 \
  --init-y -0.5 \
  --init-yaw 0.0

指定输出文件:

source ~/nav2_sim_ws/install/setup.bash
python3 ~/nav2_sim_ws/src/mobile_nav_sim/scripts/eval_nav.py \
  --set-initial-pose \
  --init-x -2.0 \
  --init-y -0.5 \
  --init-yaw 0.0 \
  --output ~/nav2_sim_ws/src/mobile_nav_sim/results/run1.csv

查看结果:

cd ~/nav2_sim_ws/src/mobile_nav_sim
ls results
cat results/*.csv

CSV 字段示例:

  • goal_id
  • x, y, yaw
  • success
  • status
  • status_text
  • time_sec
  • path_length

8. 常用检查命令

8.1 查看关键话题

source ~/nav2_sim_ws/install/setup.bash
ros2 topic list | egrep '/scan|/odom|/tf|/robot_description|/map|/cmd_vel'

8.2 查看 AMCL 输出

source ~/nav2_sim_ws/install/setup.bash
ros2 topic echo /amcl_pose --once

8.3 查看导航动作接口

source ~/nav2_sim_ws/install/setup.bash
ros2 action info /navigate_to_pose

9. 项目亮点

  • 基于 ROS 2 Jazzy、Nav2、Gazebo 与 AMCL 完成导航仿真闭环
  • 独立封装 mobile_nav_sim 工程包,支持 launch 一键启动
  • 支持目标点批量测试,而非仅手动点击 RViz
  • 支持导航结果评估与 CSV 导出,便于复现与分析
  • 已完成从官方最小示例到自有工程结构的迁移

10. 后续可扩展方向

  • 自定义地图与世界文件
  • 多组参数对照实验
  • 恢复行为统计
  • 动态障碍物场景验证
  • 更复杂场景下的自动评估

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages