Skip to content

Rovers

WARNING

Support for rover is experimental. Maintainer volunteers, contribution of new features, new frame configurations, or other improvements would all be very welcome!

Rovers

PX4 supports the following rover types:

  • Differential steering: direction is controlled by moving the left- and right-side wheels at different speeds (also know as skid or tank steering). This kind of steering is commonly used on bulldozers, tanks, and other tracked vehicles.
  • Ackermann steering: direction is controlled by pointing wheels in the direction of travel. This kind of steering is used on most commercial vehicles, including cars, trucks etc.

The supported flight modes can be seen in Flight modes and the supported frames in Airframes Reference > Rover.

Flashing the rover build

Rovers use a custom build that must be flashed onto your flight controller instead of the default PX4 build:

  1. First build the rover firmware for your flight controller from the main branch (there is no release build, so you can't just select this build from QGroundControl).

    To build for rover with the make command, replace the _default suffix with _rover. For example, to build rover for px4_fmu-v6x boards, you would use the command:

    sh
    make px4_fmu-v6x_rover

    You can also enable the modules in default builds by adding the respective line to your board configuration (e.g. for fmu-v6x you might add one of these lines to main/boards/px4/fmu-v6x/default.px4board):

    sh
    CONFIG_MODULES_ROVER_DIFFERENTIAL=y
    CONFIG_MODULES_ROVER_ACKERMANN=y

    Note that adding the rover module may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing).

:::

  1. Load the custom firmware that you just built onto your flight controller (see Loading Firmware > Installing PX4 Main, Beta or Custom Firmware).

Simulation

Gazebo provides simulations for both types of steering:

Rover gazebo simulation