Files
ROS2-Gazebo-GO2/README.md
lulijing ed0ef0f437 docs(readme): clarify mapping and Nav2 multi-terminal workflow
- Document per-terminal commands for Cartographer SLAM and map save path
- Document Nav2 two-terminal flow and custom map:= usage
- Warn against pasting blocking launch commands in one shell
- Fix Docker comment: compose service name is go2_sim
- Sync README_EN.md with the same structure

Made-with: Cursor
2026-04-10 13:53:16 +08:00

6.7 KiB
Raw Permalink Blame History

English Version/英文版

1. 项目描述

本项目为宇树机器狗系列第一章ROS2-Gazebo仿真的基础项目仓库该仓库会随着系列项目的推进不定时进行更新当前计划可查看本人飞书查看项目情况项目飞书,这个项目预计将会是一个超长期项目。

2. 项目使用

2.1 直接编译使用

进入到工作空间

cd go2_sim_ws
colcon build
source install/setup.bash

gazebo_sim 会在 source 后自动设置 Gazebo 模型搜索路径GZ_SIM_RESOURCE_PATH / IGN_GAZEBO_RESOURCE_PATH)以及 CycloneDDS 配置文件路径(CYCLONEDDS_URI 指向包内 dds/cyclonedds.xml,避免使用 file://~/... 导致 ~ 无法展开)。若需使用自己的 DDS 配置,可在 source 之后执行 unset CYCLONEDDS_URI 或重新 export 为绝对路径(file:///home/...)。

alt text

启动,第一次启动会比较久,因为需要下载相应的场景资源。

ros2 launch gazebo_sim launch.py

成功启动后会如下图所示。 alt text

本项目配备了一个狗的前置普通单目摄像头用以模拟GO2本身的前置摄像头同时配备了两个激光雷达一个为模拟GO2的前置L1激光雷达一个为模拟外界的VLP16激光雷达两个激光雷达都可同时发布LaserScan类型数据和PointCloud2类型数据为后续的建图和导航工作提供了便利而后续也会更新加入D435i摄像头已经加入D435i摄像头

cd go2_sim_ws
source install/local_setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/robot1/cmd_vel

在终端中执行上述命令后就可以使用键盘对其进行简单的控制了,同时可以使用下面的服务完成对机器狗的控制,支持的服务有walk、up、sit分别对应走、站、趴。

ros2 service call /robot1/robot_behavior_command quadropted_msgs/srv/RobotBehaviorCommand "{command: 'walk'}"

2.2 docker使用

在使用docker前请简单的阅读docker搭建流程指南因为每个人的情况还是会有些许差别而为我使用的是外挂卷的形式完成的任务。 使用下面的命令可以很快的帮您完成想要的操作。

cd go2_sim_ws/src/docker
docker compose up -d --build --remove-orphans        #容器构建
docker compose up -d go2_sim                        #启动容器,-d 为后台运行go2_sim 为 compose 中的服务名
docker compose ps                                    #容器查看
docker compose exec go2_sim bash                    #进入容器
docker compose down                                  #容器删除

进入到docker后可以按照前面直接安装的操作来

colcon build
source install/setup.bash

alt text

启动,第一次启动会比较久,因为需要下载相应的场景资源。

ros2 launch gazebo_sim launch.py # 启动无扩展传感器go2
ros2 launch gazebo_sim launch.py sensors:=true world:=warehouse.sdf # 启动带扩展传感器go2,并选定地图

成功启动后会如下图所示。

alt text

本项目配备了一个狗的前置普通单目摄像头用以模拟GO2本身的前置摄像头同时配备了两个激光雷达一个为模拟GO2的前置L1激光雷达一个为模拟外界的VLP16激光雷达两个激光雷达都可同时发布LaserScan类型数据和PointCloud2类型数据为后续的建图和导航工作提供了便利而后续也会更新加入D435i摄像头。

cd go2_sim_ws
source install/local_setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/robot1/cmd_vel

在终端中执行上述命令后就可以使用键盘对其进行简单的控制了,同时可以使用下面的服务完成对机器狗的控制,支持的服务有walk、up、sit分别对应走、站、趴。

ros2 service call /robot1/robot_behavior_command quadropted_msgs/srv/RobotBehaviorCommand "{command: 'walk'}"

2.3 建图和导航

是否需要多个终端:需要。ros2 launch ... 会持续占用当前终端直到你 Ctrl+C 结束;建图时要让 Gazebo、Cartographer、键盘遥控 同时运行,因此必须在 不同终端(或 tmux/screen 分屏)中分别启动。不要把下面多条 launch/run 无修饰地粘进同一个终端顺序执行,否则第一条会一直阻塞,后面的命令不会执行。

每个新终端的公共前提(在仓库根目录进入工作空间并加载环境):

cd go2_sim_ws
source install/setup.bash

建图Cartographer SLAM

  1. 终端 1 — Gazebo 仿真(带扩展传感器与仓库世界):
ros2 launch gazebo_sim launch.py sensors:=true world:=warehouse.sdf
  1. 终端 2 — Cartographer 与 RViz
ros2 launch cartographer go2_cartographer.launch.py
  1. 终端 3 — 键盘遥控(强烈建议):控制机器狗在环境中移动,激光才能扫到足够区域,地图质量才有保障。
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/robot1/cmd_vel
  1. 终端 4 — 保存占据栅格地图(建图效果满意后再执行;会在当前工作目录生成 warehouse_map.yamlwarehouse_map.pgm
cd go2_sim_ws
source install/setup.bash
mkdir -p maps_out && cd maps_out
ros2 run nav2_map_server map_saver_cli -t map -f warehouse_map

若你在其他目录新开终端,请先 cdgo2_sim_wssource install/setup.bash,再 cd 到保存目录后执行 map_saver_cli。导航时把 map:= 设为该 warehouse_map.yaml绝对路径(在 maps_out 下可执行 realpath warehouse_map.yaml 查看)。

alt text

导航Nav2

使用功能包自带的 warehouse 地图时,仿真世界需与建图时一致(仍为 warehouse.sdf)。

  1. 终端 1 — Gazebo
ros2 launch gazebo_sim launch.py sensors:=true world:=warehouse.sdf
  1. 终端 2 — Nav2(默认加载已安装的 navigation2/maps/warehouse_map.yaml
ros2 launch navigation2 go2_navigation2.launch.py

若使用你在建图步骤中自行保存的地图,请传入 绝对路径(指向 .yaml

ros2 launch navigation2 go2_navigation2.launch.py map:=/绝对路径/go2_sim_ws/maps_out/warehouse_map.yaml

启动后在 RViz 中使用 Nav2 插件设置初始位姿与目标点即可;导航栈会自动规划路径,不必再开键盘遥控作为主控方式。

alt text