Rovers
WARNING
Support for rover is experimental. Maintainer volunteers, contribution of new features, new frame configurations, or other improvements would all be very welcome!
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:
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:shmake 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
):shCONFIG_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).
:::
- 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: