diff --git a/docs/assets/airframes/rover/rover_simulation.png b/docs/assets/airframes/rover/rover_simulation.png index e57bb0861a..f19e512812 100644 Binary files a/docs/assets/airframes/rover/rover_simulation.png and b/docs/assets/airframes/rover/rover_simulation.png differ diff --git a/docs/assets/simulation/gazebo/vehicles/rover_ackermann.png b/docs/assets/simulation/gazebo/vehicles/rover_ackermann.png index d6b305c000..c0c487efac 100644 Binary files a/docs/assets/simulation/gazebo/vehicles/rover_ackermann.png and b/docs/assets/simulation/gazebo/vehicles/rover_ackermann.png differ diff --git a/docs/assets/simulation/gazebo/vehicles/rover_differential.png b/docs/assets/simulation/gazebo/vehicles/rover_differential.png index 4d439029cb..5fa4c40a5f 100644 Binary files a/docs/assets/simulation/gazebo/vehicles/rover_differential.png and b/docs/assets/simulation/gazebo/vehicles/rover_differential.png differ diff --git a/docs/assets/simulation/gazebo/vehicles/rover_mecanum.png b/docs/assets/simulation/gazebo/vehicles/rover_mecanum.png new file mode 100644 index 0000000000..aff7b556c8 Binary files /dev/null and b/docs/assets/simulation/gazebo/vehicles/rover_mecanum.png differ diff --git a/docs/en/frames_rover/index.md b/docs/en/frames_rover/index.md index 8ba0751a0d..09492e324c 100644 --- a/docs/en/frames_rover/index.md +++ b/docs/en/frames_rover/index.md @@ -64,9 +64,10 @@ Each wheel is driven by its own motor, and by controlling the speed and directio ## Simulation -[Gazebo](../sim_gazebo_gz/index.md) provides simulations for ackermann and differential rovers: +PX4 provides synthetic simulation models for [Gazebo](../sim_gazebo_gz/index.md) of all three rover types to test the software and validate changes and new features: - [Ackermann rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) - [Differential rover](../sim_gazebo_gz/vehicles.md#differential-rover) +- [Mecanum rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) ![Rover gazebo simulation](../../assets/airframes/rover/rover_simulation.png) diff --git a/docs/en/releases/main.md b/docs/en/releases/main.md index 04fa799548..3931d565b4 100644 --- a/docs/en/releases/main.md +++ b/docs/en/releases/main.md @@ -58,7 +58,10 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Simulation -- TBD +- Overhaul rover simulation: + - Add synthetic differential rover model: [PX4-gazebo-models#107](https://github.com/PX4/PX4-gazebo-models/pull/107) + - Add synthetic mecanum rover model: [PX4-gazebo-models#113](https://github.com/PX4/PX4-gazebo-models/pull/113) + - Update synthetic ackermann rover model: [PX4-gazebo-models#117](https://github.com/PX4/PX4-gazebo-models/pull/117) ### Ethernet @@ -91,6 +94,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide). - Removed deprecated rover module ([PX4-Autopilot#25054](https://github.com/PX4/PX4-Autopilot/pull/25054)). - Add support for [Apps & API](../flight_modes_rover/api.md) ([PX4-Autopilot#25074](https://github.com/PX4/PX4-Autopilot/pull/25074), [PX4-ROS2-Interface-Lib#140](https://github.com/Auterion/px4-ros2-interface-lib/pull/140)). +- Update [rover simulation](../frames_rover/index.md#simulation) ([PX4-Autopilot#25644](https://github.com/PX4/PX4-Autopilot/pull/25644)) (see [Simulation](#simulation) release note for details). ### ROS 2 diff --git a/docs/en/sim_gazebo_gz/index.md b/docs/en/sim_gazebo_gz/index.md index 5304220694..6f5dead778 100644 --- a/docs/en/sim_gazebo_gz/index.md +++ b/docs/en/sim_gazebo_gz/index.md @@ -50,22 +50,24 @@ This runs both the PX4 SITL instance and the Gazebo client. The supported vehicles and `make` commands are listed below. Note that all gazebo make targets have the prefix `gz_`. -| Vehicle | Command | `PX4_SYS_AUTOSTART` | -| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------------- | -| [Quadrotor (x500)](../sim_gazebo_gz/vehicles.md#x500-quadrotor) | `make px4_sitl gz_x500` | 4001 | -| [X500 Quadrotor with Depth Camera (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-depth-camera-front-facing) | `make px4_sitl gz_x500_depth` | 4002 | -| [Quadrotor(x500) with Vision Odometry](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-visual-odometry) | `make px4_sitl gz_x500_vision` | 4005 | -| [Quadrotor(x500) with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing) | `make px4_sitl gz_x500_lidar_down` | 4016 | -| [Quadrotor(x500) with 2D LIDAR](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar) | `make px4_sitl gz_x500_lidar_2d` | 4013 | -| [Quadrotor(x500) with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing) | `make px4_sitl gz_x500_lidar_front` | 4017 | -| [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) | `make px4_sitl gz_x500_gimbal` | 4019 | -| [VTOL](../sim_gazebo_gz/vehicles.md#standard-vtol) | `make px4_sitl gz_standard_vtol` | 4004 | -| [Plane](../sim_gazebo_gz/vehicles.md#standard-plane) | `make px4_sitl gz_rc_cessna` | 4003 | -| [Advanced Plane](../sim_gazebo_gz/vehicles.md#advanced-plane) | `make px4_sitl gz_advanced_plane` | 4008 | -| [Differential Rover](../sim_gazebo_gz/vehicles.md#differential-rover) | `make px4_sitl gz_r1_rover` | 4009 | -| [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 4012 | -| [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) | `make px4_sitl gz_quadtailsitter` | 4018 | -| [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) | `make px4_sitl gz_tiltrotor` | 4020 | +| Vehicle | Command | `PX4_SYS_AUTOSTART` | +| ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ------------------- | +| [Quadrotor (x500)](../sim_gazebo_gz/vehicles.md#x500-quadrotor) | `make px4_sitl gz_x500` | 4001 | +| [X500 Quadrotor with Depth Camera (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-depth-camera-front-facing) | `make px4_sitl gz_x500_depth` | 4002 | +| [Quadrotor(x500) with Vision Odometry](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-visual-odometry) | `make px4_sitl gz_x500_vision` | 4005 | +| [Quadrotor(x500) with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing) | `make px4_sitl gz_x500_lidar_down` | 4016 | +| [Quadrotor(x500) with 2D LIDAR](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar) | `make px4_sitl gz_x500_lidar_2d` | 4013 | +| [Quadrotor(x500) with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing) | `make px4_sitl gz_x500_lidar_front` | 4017 | +| [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) | `make px4_sitl gz_x500_gimbal` | 4019 | +| [VTOL](../sim_gazebo_gz/vehicles.md#standard-vtol) | `make px4_sitl gz_standard_vtol` | 4004 | +| [Plane](../sim_gazebo_gz/vehicles.md#standard-plane) | `make px4_sitl gz_rc_cessna` | 4003 | +| [Advanced Plane](../sim_gazebo_gz/vehicles.md#advanced-plane) | `make px4_sitl gz_advanced_plane` | 4008 | +| [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) | `make px4_sitl gz_quadtailsitter` | 4018 | +| [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) | `make px4_sitl gz_tiltrotor` | 4020 | +| [Differential Rover](../sim_gazebo_gz/vehicles.md#differential-rover) | `make px4_sitl gz_rover_differential` | 50000 | +| [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 51000 | +| [Mecanum Rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) | `make px4_sitl gz_rover_mecanum` | 52000 | + All [vehicle models](../sim_gazebo_gz/vehicles.md) (and [worlds](#specify-world)) are included as a submodule from the [Gazebo Models Repository](../sim_gazebo_gz/gazebo_models.md) repository. @@ -164,16 +166,16 @@ PX4_GZ_WORLD=windy make px4_sitl gz_x500 The [supported worlds](../sim_gazebo_gz/worlds.md) are listed below. -| World | Command | Description | -| ----------------- | ---------------------------------- | ----------------------------------------------------------- | -| `default` | `make px4_sitl *` | Empty world (a grey plane) | -| `aruco` | `make px4_sitl *_aruco` | Empty world with aruco marker for testing precision landing | -| `baylands` | `make px4_sitl *_baylands` | Baylands world surrounded by water | -| `lawn` | `make px4_sitl *_lawn` | Lawn world for testing rovers | -| `rover` | `make px4_sitl *_rover` | Rover world (optimised/preferred) | -| `walls` | `make px4_sitl *_walls` | Wall world for testing collision prevention | -| `windy` | `make px4_sitl *_windy` | Empty world with wind enabled | -| `moving_platform` | `make px4_sitl *_moving_platform` | World with moving takeoff / landing platform | +| World | Command | Description | +| ----------------- | --------------------------------- | ----------------------------------------------------------- | +| `default` | `make px4_sitl *` | Empty world (a grey plane) | +| `aruco` | `make px4_sitl *_aruco` | Empty world with aruco marker for testing precision landing | +| `baylands` | `make px4_sitl *_baylands` | Baylands world surrounded by water | +| `lawn` | `make px4_sitl *_lawn` | Lawn world for testing rovers | +| `rover` | `make px4_sitl *_rover` | Rover world (optimised/preferred) | +| `walls` | `make px4_sitl *_walls` | Wall world for testing collision prevention | +| `windy` | `make px4_sitl *_windy` | Empty world with wind enabled | +| `moving_platform` | `make px4_sitl *_moving_platform` | World with moving takeoff / landing platform | :::warning Note that if no world is specified, PX4 will use the `default` world. diff --git a/docs/en/sim_gazebo_gz/vehicles.md b/docs/en/sim_gazebo_gz/vehicles.md index 679aec83ff..10f377d465 100644 --- a/docs/en/sim_gazebo_gz/vehicles.md +++ b/docs/en/sim_gazebo_gz/vehicles.md @@ -185,7 +185,7 @@ make px4_sitl gz_tiltrotor [Differential Rover](../frames_rover/index.md#differential) uses the [rover world](../sim_gazebo_gz/worlds.md#rover) by default. ```sh -make px4_sitl gz_r1_rover +make px4_sitl gz_rover_differential ``` ![Differential Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_differential.png) @@ -199,3 +199,13 @@ make px4_sitl gz_rover_ackermann ``` ![Ackermann Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_ackermann.png) + +### Mecanum Rover + +[Mecanum Rover](../frames_rover/index.md#mecanum) uses the [rover world](../sim_gazebo_gz/worlds.md#rover) by default. + +```sh +make px4_sitl gz_rover_mecanum +``` + +![Mecanum Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_mecanum.png)