Initial commit: ROS2 Gazebo GO2 simulation workspace

Made-with: Cursor
This commit is contained in:
lulijing
2026-04-10 13:01:08 +08:00
commit 239dda8530
732 changed files with 879960 additions and 0 deletions

87
README.md Normal file
View File

@@ -0,0 +1,87 @@
[English Version/英文版](README_EN.md)
# 1. 项目描述
本项目为宇树机器狗系列第一章ROS2-Gazebo仿真的基础项目仓库该仓库会随着系列项目的推进不定时进行更新当前计划可查看本人飞书查看项目情况[项目飞书](https://ai.feishu.cn/wiki/CVpbwLIiMiwGnekKjhMcLXTRnag?from=from_copylink),这个项目预计将会是一个超长期项目。
# 2. 项目使用
## 2.1 直接编译使用
进入到工作空间
```bash
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](images/image-17.png)
启动,第一次启动会比较久,因为需要下载相应的场景资源。
```bash
ros2 launch gazebo_sim launch.py
```
成功启动后会如下图所示。
![alt text](images/image-18.png)
本项目配备了一个狗的前置普通单目摄像头用以模拟GO2本身的前置摄像头同时配备了两个激光雷达一个为模拟GO2的前置L1激光雷达一个为模拟外界的VLP16激光雷达两个激光雷达都可同时发布LaserScan类型数据和PointCloud2类型数据为后续的建图和导航工作提供了便利而后续也会更新加入D435i摄像头已经加入D435i摄像头
```bash
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分别对应走、站、趴。
```bash
ros2 service call /robot1/robot_behavior_command quadropted_msgs/srv/RobotBehaviorCommand "{command: 'walk'}"
```
## 2.2 docker使用
在使用docker前请简单的阅读docker搭建流程指南因为每个人的情况还是会有些许差别而为我使用的是外挂卷的形式完成的任务。
使用下面的命令可以很快的帮您完成想要的操作。
```bash
cd go2_sim_ws/src/docker
docker compose up -d --build --remove-orphans #容器构建
docker compose up -d go2_sim #启动容器,-d为不进入docker终端,ros2_sim是众多服务中的一个服务
docker compose ps #容器查看
docker compose exec go2_sim bash #进入容器
docker compose down #容器删除
```
进入到docker后可以按照前面直接安装的操作来
```bash
colcon build
source install/setup.bash
```
![alt text](images/image-19.png)
启动,第一次启动会比较久,因为需要下载相应的场景资源。
```bash
ros2 launch gazebo_sim launch.py # 启动无扩展传感器go2
ros2 launch gazebo_sim launch.py sensors:=true world:=warehouse.sdf # 启动带扩展传感器go2,并选定地图
```
成功启动后会如下图所示。
![alt text](images/image-20.png)
本项目配备了一个狗的前置普通单目摄像头用以模拟GO2本身的前置摄像头同时配备了两个激光雷达一个为模拟GO2的前置L1激光雷达一个为模拟外界的VLP16激光雷达两个激光雷达都可同时发布LaserScan类型数据和PointCloud2类型数据为后续的建图和导航工作提供了便利而后续也会更新加入D435i摄像头。
```bash
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分别对应走、站、趴。
```bash
ros2 service call /robot1/robot_behavior_command quadropted_msgs/srv/RobotBehaviorCommand "{command: 'walk'}"
```
## 2.3 建图和导航
建图需在终端中输入如下命令
```bash
ros2 launch gazebo_sim launch.py sensors:=true world:=warehouse.sdf
ros2 launch cartographer go2_cartographer.launch.py
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/robot1/cmd_vel #【键盘控制
ros2 run nav2_map_server map_saver_cli -t map -f warehouse_map #保存地图
```
![alt text](images/image-21.png)
导航需要在终端中输入如下命令
```bash
ros2 launch gazebo_sim launch.py sensors:=true world:=warehouse.sdf
ros2 launch navigation2 go2_navigation2.launch.py
```
![alt text](images/image-22.png)