RoboTerrain ships with simulation-ready robot models for two platforms: the Rover Zero 4WD and the Leo Rover (with multiple sensor head configurations). SDF model files for the Rover Zero are located inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/jackvice/RoboTerrain/llms.txt
Use this file to discover all available pages before exploring further.
ros2_ws/src/roverrobotics_ros2/roverrobotics_description/urdf/, while Leo Rover SDF variants live in ros2_ws/src/roverrobotics_ros2/leo_description/sdf/. Each platform is launched by a dedicated launch file in ros2_ws/src/roverrobotics_ros2/roverrobotics_gazebo/launch/.
Rover Zero 4WD
The Rover Zero 4WD is the primary research platform used in the DUnE benchmark experiments. It is a four-wheel-drive skid-steer rover with a forward-facing camera and a LIDAR scanner.Model File
roverrobotics_description/urdf/camera_rover_4wd.sdfLaunch File
4wd_rover_gazebo.launch.pyGazebo Entity Name
rover_zero4wdSensors
Forward RGB camera + 2D LIDAR scanner
(0, 0, 1.0) in the world frame by default. The spawn step in the launch file uses ros_gz_sim create:
The entity name
rover_zero4wd is used throughout the ROS 2 stack — including the pose bridge node (ign_ros2_pose_topic.py), metrics logger, and RL environment reset commands. Do not rename this entity without updating all downstream references.Leo Rover
The Leo Rover is a compact four-wheeled rover from Leo Rover (Poland) adapted for Gazebo Fortress simulation. In RoboTerrain it serves as the primary platform for the Active Vision for Social Navigation (AVSN) pipeline, outfitted with a fisheye camera that provides approximately 160° field of view across six rectified windows. The Leo Rover SDF files reside inros2_ws/src/roverrobotics_ros2/leo_description/sdf/. In the Leo Rover launch files the robot is spawned as entity leo_rover at position (0, 0, 1.0):
Leo Rover Sensor Configurations
RoboTerrain provides seven SDF files for the Leo Rover inleo_description/sdf/. Select the appropriate file in the launch file’s gz_spawn_entity node.
| SDF File | Sensors | Primary Use Case |
|---|---|---|
leo_sim.sdf | Base Leo Rover without extra sensors | Default Leo Rover simulation (Leo_rover_gazebo.launch.py) |
leo_sim_fisheye.sdf | Fisheye wide-angle camera | AVSN pipeline — six rectified 320×320 windows at ~160° FOV |
leo_lidar.sdf | 2D LIDAR | Standard LiDAR-based navigation and obstacle avoidance |
leo_depth.sdf | Depth camera (RGBD) | Depth-based perception and Nav2 costmap generation |
leo_AV_Lidar.sdf | LIDAR + active vision head | Active vision research requiring both range data and gaze control |
leo_sim_ODE.sdf | Base Leo Rover with ODE physics solver | Physics-solver comparison experiments |
leo_sim_works.sdf | Verified working baseline configuration | Reference model for debugging simulation issues |
Available Leo Rover launch files
Available Leo Rover launch files
| Launch File | Default SDF | Notes |
|---|---|---|
Leo_rover_gazebo.launch.py | leo_sim.sdf | Base Leo Rover simulation |
Leo_rover_lidar.launch.py | leo_lidar.sdf | LIDAR-only configuration |
Leo_rover_depth.launch.py | leo_depth.sdf | Depth camera configuration |
Leo_rover_fisheye.launch.py | leo_sim_fisheye.sdf | Fisheye camera; used by the AVSN DreamerV3 agent |
leo_nav2_lidar_launch.py | — | Nav2 stack with LIDAR |
leo_nav2_depth.launch.py | — | Nav2 stack with depth camera |
ROS 2 Bridge Topics
Both the Rover Zero and Leo Rover launch files configure aros_gz_bridge node (parameter_bridge) that translates Ignition Gazebo messages to standard ROS 2 topics. The table below lists all bridged topics from the actual arguments=[] in 4wd_rover_gazebo.launch.py and Leo_rover_fisheye.launch.py.
| ROS 2 Topic | Message Type | Direction | Description |
|---|---|---|---|
/cmd_vel | geometry_msgs/msg/Twist | Bidirectional (@) | Velocity command input from the RL agent or Nav2 |
/clock | rosgraph_msgs/msg/Clock | Gazebo → ROS ([) | Simulation clock for use_sim_time |
/odometry/wheels | nav_msgs/msg/Odometry | Bidirectional (@) | Wheel odometry from the differential drive plugin |
/tf | tf2_msgs/msg/TFMessage | Gazebo → ROS ([) | Transform tree from Ignition pose messages |
/joint_states | sensor_msgs/msg/JointState | Gazebo → ROS ([) | Joint state information |
/scan | sensor_msgs/msg/LaserScan | Bidirectional (@) | 2D LIDAR scan (Rover Zero and LIDAR Leo variants; commented out in fisheye launch) |
/imu/data | sensor_msgs/msg/Imu | Bidirectional (@) | IMU acceleration and orientation |
/camera/image_raw | sensor_msgs/msg/Image | Bidirectional (@) | Raw camera image (or fisheye frame for Leo fisheye) |
/camera_info | sensor_msgs/msg/CameraInfo | Bidirectional (@) | Camera intrinsic parameters |
/world/default/dynamic_pose/info | geometry_msgs/msg/PoseArray | Gazebo → ROS ([) | Full world dynamic pose information — used by the Rover Zero pipeline |
/world/inspect/dynamic_pose/info | geometry_msgs/msg/PoseArray | Gazebo → ROS ([) | Full world dynamic pose information — used by the Leo Rover fisheye pipeline |
Differential Drive Plugin
The Leo Rover’s wheel drive is implemented via a custom Gazebo Fortress system plugin located at:ISystemPreUpdate interface and translates incoming /cmd_vel Twist messages into individual wheel torque commands for the Leo Rover’s four-wheel-drive configuration. It is compiled as part of the leo_gz_plugins package during colcon build.