7. Gazebo 与 ROS 集成
本文描述通过外部包 autonomy_ros 与 autonomy_gazebo 进行物理仿真与传感器仿真的集成方式。
这些包不在本
autonomy仓库内,但为官方推荐的完整仿真路径。
7.1 架构
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Gazebo │────→│ autonomy_ros │────→│ Autonomy │
│ (physics) │←────│ (bridge) │←────│ (C++ 栈) │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
/scan, /odom cmd_vel, TF
/camera, /clock
7.2 环境准备
export GLOG_logtostderr=1
export AUTOLINK_PATH=/workspace/autonomy/src/autonomy/autolink/autolink
export AUTONOMY_MODEL=waffle
source /opt/ros/humble/setup.bash
source /workspace/autonomy/install/setup.bash
Docker 安装 Gazebo ROS 包见 docker/install/install_ros2.sh(gazebo-ros, turtlebot3-gazebo 等)。
7.3 启动命令
7.3.1 一体化启动
ros2 launch autonomy_ros autonomy.launch.py \
use_gazebo:=true \
world_type:=house \
use_sim_time:=true
7.3.2 独立 Gazebo
ros2 launch autonomy_gazebo empty_world.launch.py gui:=true spawn_robot:=true
ros2 launch autonomy_gazebo autonomy_house.launch.py gui:=true spawn_robot:=true
7.4 Launch 参数
参数 |
默认 |
说明 |
|---|---|---|
|
true |
订阅 |
|
false |
是否 spawn Gazebo 世界 |
|
house |
|
|
-2.0, -0.5 |
机器人初始位姿 |
|
true |
Gazebo GUI |
|
true |
是否生成机器人模型 |
7.5 Topic 与数据流
Topic |
方向 |
说明 |
|---|---|---|
|
Autonomy → Gazebo |
速度控制 |
|
Gazebo → Autonomy |
里程计 |
|
Gazebo → Autonomy |
激光,注入 costmap |
|
Gazebo → ROS |
仿真时间 |
TF |
双向 |
位姿变换 |
config/planner/planner.lua 注释:激光经 autonomy_ros /scan bridge 注入 obstacle_layer。
7.6 costmap 与仿真对齐
base_footprint/base_link与 Gazebo 机器人 URDF 一致global_frame通常为mapuse_sim_time:=true时,所有节点使用仿真时钟
7.8 故障排查
现象 |
处理 |
|---|---|
机器人不动 |
检查 |
无激光 |
确认 |
TF 断裂 |
|
时间不同步 |
确保 |