基于 ROS 2 Humble 与 Gazebo Fortress 的四轮移动机器人仿真环境,集成 LiDAR、IMU、RGB-D 相机与 Gazebo DiffDrive 差速驱动,适用于原生 Linux 下的传感器联调与导航算法开发。
- 四轮差速底盘,支持
/cmd_vel控制与/odom/wheel轮式里程计 - 仿真真值位姿发布在
/loc/gazebo(map→base_link) - 3D LiDAR(
/lidar/points)、IMU(/imu/data)、RGB/深度相机 - 内置室内 example 测试场景与空世界;支持自定义 mesh 场景导入
- RViz2 预配置(点云、图像、TF)
| 包 | 说明 |
|---|---|
quadrover_description |
模块化 xacro:底盘、传感器、Gazebo 插件 |
quadrover_control |
四轮驱动模式配置(drive_mode 预设档) |
quadrover_gazebo |
世界文件、launch、RViz、ROS-GZ 桥接 |
quadrover_bringup |
高层 launch:sim_example |
在 Ubuntu 22.04 + 原生 Linux 上安装:
sudo apt update
sudo apt install -y \
ros-humble-desktop \
ros-humble-ros-gz \
ros-humble-xacro \
ros-humble-robot-state-publisher \
ros-humble-rviz2Gazebo Fortress 随 ros-humble-ros-gz 提供(ign gazebo / gz sim)。
cd ~/ws/quadrover_simulation
./scripts/build.sh若系统同时安装了 Miniconda,build.sh 会使用 /usr/bin/python3 编译,避免缺少 catkin_pkg 等问题。
source install/setup.bash10 m × 10 m 四面围墙 + 简单障碍物(默认无 GUI,以下示例开启 Gazebo GUI 与 RViz2):
ros2 launch quadrover_bringup sim_example.launch.py rviz:=true gui:=trueros2 launch quadrover_gazebo spawn_quadrover_sensors.launch.py rviz:=true gui:=true将 OBJ/MTL/贴图放入 src/quadrover_gazebo/meshes/,编写 world SDF 后通过 world 与 spawn_* 参数启动。详见 meshes/README.md 与 docs/quadrover_gazebo.md。
| 参数 | 默认值 | 说明 |
|---|---|---|
gui |
false |
是否打开 Gazebo GUI |
rviz |
false |
是否启动 RViz2 |
render_engine |
ogre2 |
渲染后端(Fortress 默认) |
drive_mode |
diff_drive(bringup)/passive_fixed(gazebo) |
驱动模式预设:diff_drive/passive_fixed/passive_free/custom |
use_diff_drive |
随 drive_mode 预设 |
仅在 drive_mode:=custom 时手动指定 |
spawn_x/y/z |
因场景而异 | 机器人初始位姿 |
本仓库不维护 map→odom 或 odom→base_link TF,仅发布位姿话题供外部 odom/loc 融合节点使用:
| 话题 | 类型 | 坐标系 | 说明 |
|---|---|---|---|
/odom/wheel |
nav_msgs/Odometry |
odom → base_link |
Gazebo DiffDrive 轮式里程计(有漂移) |
/loc/gazebo |
nav_msgs/Odometry |
map → base_link |
仿真真值位姿 |
robot_state_publisher 仍发布 URDF 定义的 base_link → 传感器 TF。
ros2 run teleop_twist_keyboard teleop_twist_keyboard如需手动覆盖驱动细节,可使用 custom:
ros2 launch quadrover_gazebo spawn_quadrover_sensors.launch.py \
drive_mode:=custom use_diff_drive:=true wheel_joint_type:=continuous| 话题 | 类型 | 说明 |
|---|---|---|
/cmd_vel |
geometry_msgs/Twist |
速度指令(→ Gazebo) |
/odom/wheel |
nav_msgs/Odometry |
轮式里程计(odom → base_link) |
/loc/gazebo |
nav_msgs/Odometry |
仿真真值(map → base_link) |
/joint_states |
sensor_msgs/JointState |
关节状态 |
/imu/data |
sensor_msgs/Imu |
IMU |
/lidar/points |
sensor_msgs/PointCloud2 |
3D 点云 |
/camera/color/image_raw |
sensor_msgs/Image |
RGB |
/camera/depth/image_raw |
sensor_msgs/Image |
深度 |
ros2 topic hz /imu/data
ros2 topic hz /lidar/points
ros2 topic hz /odom/wheel
ros2 topic hz /loc/gazebo
ros2 topic echo /loc/gazebo --field pose.pose- 默认渲染引擎为 ogre2,面向原生 Linux + 独显,建议在 Ubuntu 实机运行以获得最佳 GUI 体验。
- 本仓库仅提供仿真传感器与位姿源,不包含 odom/loc 融合及 map/odom TF 维护。
- 详细包文档见 docs/README.md;运行时节点与话题见 docs/runtime.md。