Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/clearpathrobotics/cpr_gazebo/llms.txt

Use this file to discover all available pages before exploring further.

The Inspection World is a large, hilly outdoor Gazebo simulation environment designed for testing robots in complex, uneven terrain typical of industrial inspection sites. It features varied elevation changes alongside a rich set of structural elements — a bridge spanning a water body, a mine tunnel, solar panels, pipeline sections, and live water physics — making it an excellent testbed for traversal planning, infrastructure inspection, and multi-terrain navigation research. The challenging topography and diverse scene geometry push platforms beyond flat-ground operation into realistic field conditions.

Supported Platforms

The Inspection World supports the following Clearpath robot platforms. The default platform is Husky.
Platformplatform Value
Huskyhusky (default)
Jackaljackal
Warthogwarthog
The platform argument defaults to the CPR_GAZEBO_PLATFORM environment variable if set, otherwise husky is used.

Launching

1

Launch with the default platform (Husky)

Start the Inspection World simulation with a Husky robot spawned at the default position:
roslaunch cpr_inspection_gazebo inspection_world.launch
The default spawn position is (6.0, -18.0, 2.0) with a yaw of 0 — placing the robot on dry land above the hilly terrain.
2

Launch with a different platform

Use the platform argument to spawn a Jackal or Warthog instead:
roslaunch cpr_inspection_gazebo inspection_world.launch platform:=jackal
roslaunch cpr_inspection_gazebo inspection_world.launch platform:=warthog
3

Launch with a custom spawn position

Override the robot’s initial position and heading using the robot_x, robot_y, robot_z, and robot_yaw arguments:
roslaunch cpr_inspection_gazebo inspection_world.launch \
  robot_x:=6.0 \
  robot_y:=-18.0 \
  robot_z:=2.0 \
  robot_yaw:=0.0
Some X/Y coordinate combinations in this world place the robot over the water feature rather than on dry land. Always verify that your chosen spawn location is above solid ground. Additionally, set robot_z to a value above the local ground elevation — the hilly terrain means the ground level varies across the map, and spawning at z:=0.0 may result in the robot falling through the terrain before it finishes rendering.

View Without Spawning a Robot

To inspect the world in RViz without spawning any robot, use the view_world launch file:
roslaunch cpr_inspection_gazebo view_world.launch
This opens the inspection world geometry in RViz using a robot state publisher, allowing you to survey the scene layout, elevation changes, and obstacle placement before selecting a robot and spawn position.

Features

The Inspection World includes the following environment elements:
  • Solar panels — A collection of solar panel arrays positioned across the terrain, providing flat inspection targets accessible from multiple approach angles.
  • Bridge — A raised bridge structure spanning a water body, suitable for testing traversal of narrow elevated paths and approach-path planning.
  • Pipeline — Sections of industrial pipe laid across the ground, representing infrastructure assets for proximity inspection and path-following tasks.
  • Mine tunnel — A traversable cave or mine entrance that provides an enclosed, low-light navigation challenge within an otherwise outdoor world.
  • Water physics — A body of water with active Gazebo fluid physics, introducing a hazard zone that robots must navigate around or across via the bridge.

GPS / Real-World Coordinates

The Inspection World supports real-world GPS coordinates via a datum script. Sourcing datum.bash exports the GAZEBO_WORLD_LAT and GAZEBO_WORLD_LON environment variables, which set the GPS origin (datum point) for the simulation. This is used by the robot_localization package and other ROS navigation tools to convert between ENU (East-North-Up) local coordinates and global latitude/longitude. The Inspection World datum is located in northern Alberta, Canada:
VariableValue
GAZEBO_WORLD_LAT57.0271155
GAZEBO_WORLD_LON-115.426770
Source the datum before launching any ROS nodes that depend on GPS coordinates:
source $(rospack find cpr_inspection_gazebo)/scripts/datum.bash
This world uses an ENU-aligned coordinate frame. The positive X axis points East, positive Y points North, and positive Z points Up, consistent with the REP-103 convention used by robot_localization and navsat_transform_node.

Launch File Arguments

The following arguments are accepted by inspection_world.launch. Most have sensible defaults and only need to be overridden for non-standard configurations.
platform
string
default:"husky"
The robot platform to spawn. Supported values: husky, jackal, warthog. Falls back to the CPR_GAZEBO_PLATFORM environment variable if set.
robot_x
float
default:"6.0"
Robot spawn position along the X axis (metres).
robot_y
float
default:"-18.0"
Robot spawn position along the Y axis (metres).
robot_z
float
default:"2.0"
Robot spawn height above the ground plane (metres). The higher default accounts for hilly terrain — keep this value above the local ground elevation at the chosen X/Y position.
robot_yaw
float
default:"0"
Robot spawn heading in radians. 0.0 faces East; 1.5707963267948966 (π/2) faces North.
world_x
float
default:"0.0"
World geometry spawn offset along X (metres).
world_y
float
default:"0.0"
World geometry spawn offset along Y (metres).
world_z
float
default:"0.0"
World geometry spawn offset along Z (metres).
world_yaw
float
default:"0.0"
World geometry spawn rotation in radians.
gui
bool
default:"true"
Set to false to launch Gazebo in headless mode (no graphical window).
headless
bool
default:"false"
Set to true to run the Gazebo server without the client GUI.
use_sim_time
bool
default:"true"
Use Gazebo’s simulated clock for ROS time. Should remain true in most simulation scenarios.
world_name
string
default:"inspection_world.world"
Path to the Gazebo .world file used as the base environment. Unlike the agriculture and orchard worlds, the inspection world uses a dedicated .world file (inspection_world.world) that includes the terrain and water physics configuration.

Build docs developers (and LLMs) love