docs: rover: small improvements

This commit is contained in:
chfriedrich98
2025-10-01 12:10:49 +02:00
parent 1b3edcd704
commit 25386c28d5
10 changed files with 20 additions and 24 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 13 KiB

+1 -1
View File
@@ -414,7 +414,7 @@
- [Basic Setup](config_rover/basic_setup.md)
- [Rate Tuning](config_rover/rate_tuning.md)
- [Attitude Tuning](config_rover/attitude_tuning.md)
- [Velocity Tuning](config_rover/velocity_tuning.md)
- [Speed Tuning](config_rover/speed_tuning.md)
- [Position Tuning](config_rover/position_tuning.md)
- [Apps & API](flight_modes_rover/api.md)
- [Complete Vehicles](complete_vehicles_rover/index.md)
+1 -1
View File
@@ -19,7 +19,7 @@ Configure the following [parameters](../advanced_config/parameters.md) in QGroun
If you observe a steady state error in the yaw setpoint increase the the integrator of the rate controller: [RO_YAW_RATE_I](../advanced_config/parameter_reference.md#RO_YAW_RATE_I) .
:::
The rover is now ready to drive in [Stabilized mode](../flight_modes_rover/manual.md#stabilized-mode) and the configuration can be continued with [velocity tuning](velocity_tuning.md).
The rover is now ready to drive in [Stabilized mode](../flight_modes_rover/manual.md#stabilized-mode) and the configuration can be continued with [speed tuning](speed_tuning.md).
## Attitude Controller Structure (Info Only)
+1 -1
View File
@@ -9,7 +9,7 @@ Successive steps enable [drive modes](../flight_modes_rover/index.md) with more
| 1 | [Basic Setup](basic_setup.md) | [Full manual mode](../flight_modes_rover/manual.md#manual-mode) |
| 2 | [Rate Tuning](rate_tuning.md) | [Manual acro mode](../flight_modes_rover/manual.md#acro-mode) |
| 3 | [Attitude Tuning](attitude_tuning.md) | [Manual stabilized mode](../flight_modes_rover/manual.md#stabilized-mode) |
| 4 | [Velocity Tuning](velocity_tuning.md) | [Manual position mode](../flight_modes_rover/manual.md#manual-mode) |
| 4 | [Speed Tuning](speed_tuning.md) | [Manual position mode](../flight_modes_rover/manual.md#manual-mode) |
| 5 | [Position Tuning](position_tuning.md) | [Auto modes](../flight_modes_rover/auto.md) |
::: warning
+4 -4
View File
@@ -3,7 +3,7 @@
Position tuning is required in order to use [Auto modes](../flight_modes_rover/auto.md).
:::warning
The [velocity tuning](velocity_tuning.md) must've already been completed before this step!
The [speed tuning](speed_tuning.md) must've already been completed before this step!
:::
The position controller is responsible for autonomously guiding the vehicle to a position setpoint.
@@ -41,7 +41,7 @@ To tune the position controller configure the [parameters](../advanced_config/pa
These two parameters have to be tuned as a pair, repeat until you are satisfied with the behaviour.
:::
3. Plot the `adjusted_speed_body_x_setpoint` and `measured_speed_body_x` from the [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) message over each other.
3. Plot the `adjusted_speed_body_x_setpoint` and `measured_speed_body_x` from the [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) message over each other.
If the tracking of these setpoints is not satisfactory adjust the values for [RO_SPEED_P](../advanced_config/parameter_reference.md#RO_SPEED_P) and [RO_SPEED_I](../advanced_config/parameter_reference.md#RO_SPEED_I).
## Path Following
@@ -79,7 +79,7 @@ The following parameters are used to tune the algorithm:
During any auto navigation task observe the behaviour of the rover and if you are unsatisfied with the path following, there are 2 steps to take:
1. Check if all the setpoints ([rate](rate_tuning.md), [attitude](attitude_tuning.md) and [velocity](velocity_tuning.md)) are properly tracked.
1. Check if all the setpoints ([rate](rate_tuning.md), [attitude](attitude_tuning.md) and [speed](speed_tuning.md)) are properly tracked.
2. Further tune the [path following algorithm](#path-following).
## Ackermann Rover Only
@@ -157,7 +157,7 @@ When targeting a position setpoint this line is constructed from the current pos
The radius of the circle around the vehicle is used to tune the controller and is often referred to as look-ahead distance.
The look-ahead distance sets how aggressive the controller behaves and is defined as $l_d = v \cdot k$.
It depends on the velocity $v$ of the rover and a tuning parameter $k$ that can be set with the parameter [PP_LOOKAHD_GAIN](#PP_LOOKAHD_GAIN).
It depends on the speed $v$ of the rover and a tuning parameter $k$ that can be set with the parameter [PP_LOOKAHD_GAIN](#PP_LOOKAHD_GAIN).
::: info
A lower value of [PP_LOOKAHD_GAIN](#PP_LOOKAHD_GAIN) makes the controller more aggressive but can lead to oscillations!
+5 -4
View File
@@ -22,8 +22,9 @@ Configure the following [parameters](../advanced_config/parameters.md) in QGroun
If you see no need to limit the yaw rate, set this parameter to the maximum yaw rate the rover can achieve:
1. In [Manual mode](../flight_modes_rover/manual.md#manual-mode) drive the rover at full throttle and with the maximum steering angle.
1. Set the [RO_YAW_RATE_LIM](#RO_YAW_RATE_LIM) to the maximum possible value, then in [Acro mode](../flight_modes_rover/manual.md#acro-mode) drive the rover at full throttle and with the maximum steering input.
2. Plot the `measured_yaw_rate` from [RoverRateStatus](../msg_docs/RoverRateStatus.md) and enter the highest observed value for [RO_YAW_RATE_LIM](#RO_YAW_RATE_LIM).
Pay attention to the units, in the log the rate is given as $rad/s$, but the parameter has to be set in $deg/s$.
:::
@@ -53,9 +54,9 @@ Configure the following [parameters](../advanced_config/parameters.md) in QGroun
To tune this parameter:
1. Put the rover in [Acro mode](../flight_modes_rover/manual.md#acro-mode) and hold the throttle stick and the right stick at a few different levels for a couple of seconds each.
1. Disarm the rover and from the flight log plot the `adjusted_yaw_rate_setpoint` and the `measured_yaw_rate` from [RoverRateStatus](../msg_docs/RoverRateStatus.md) over each other.
1. Increase [RO_YAW_RATE_P](#RO_YAW_RATE_P) if the measured value does not track the setpoint fast enough or decrease it if the measurement overshoots the setpoint by too much.
1. Repeat until you are satisfied with the behaviour.
2. Disarm the rover and from the flight log plot the `adjusted_yaw_rate_setpoint` and the `measured_yaw_rate` from [RoverRateStatus](../msg_docs/RoverRateStatus.md) over each other.
3. Increase [RO_YAW_RATE_P](#RO_YAW_RATE_P) if the measured value does not track the setpoint fast enough or decrease it if the measurement overshoots the setpoint by too much.
4. Repeat until you are satisfied with the behaviour.
:::
4. [RO_YAW_RATE_I](#RO_YAW_RATE_I) [-]: Integral gain of the closed loop yaw rate controller.
@@ -1,4 +1,4 @@
# Velocity Tuning
# Speed Tuning
:::warning
The [attitude tuning](attitude_tuning.md) must've already been completed before this step!
@@ -6,13 +6,13 @@ The [attitude tuning](attitude_tuning.md) must've already been completed before
::: info
To tune we will be using the manual [Position mode](../flight_modes_rover/manual.md#position-mode).
This mode requires a global position estimate (GPS) and tuning of some parameters that go beyond the velocity controller.
If you use a custom external flight mode that controls velocity but does not require a global position estimate you can ignore the [manual position mode parameters](#manual-position-mode-parameters).
This mode requires a global position estimate (GPS) and tuning of some parameters that go beyond the speed controller.
If you use a custom external flight mode that controls speed but does not require a global position estimate you can ignore the [manual position mode parameters](#manual-position-mode-parameters).
:::
## Speed Parameters
To tune the velocity controller configure the following [parameters](../advanced_config/parameters.md) in QGroundControl:
To tune the speed controller configure the following [parameters](../advanced_config/parameters.md) in QGroundControl:
1. [RO_SPEED_LIM](#RO_SPEED_LIM) [m/s]: This is the maximum speed you want to allow for your rover.
This will define the stick-to-speed mapping for [Position mode](../flight_modes_rover/manual.md#position-mode) and set an upper limit for the speed setpoint.
@@ -27,7 +27,7 @@ To tune the velocity controller configure the following [parameters](../advanced
1. Set [RO_SPEED_P](#RO_SPEED_P) and [RO_SPEED_I](#RO_SPEED_I) to zero.
This way the speed is only controlled by the feed-forward term, which makes it easier to tune.
2. Put the rover in [Position mode](../flight_modes_rover/manual.md#position-mode) and then move the left stick of your controller up and/or down and hold it at a few different levels for a couple of seconds each.
3. Disarm the rover and from the flight log plot the `adjusted_speed_body_x_setpoint` and the `measured_speed_body_x` from the [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) message over each other.
3. Disarm the rover and from the flight log plot the `adjusted_speed_body_x_setpoint` and the `measured_speed_body_x` from the [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) message over each other.
4. If the actual speed of the rover is higher than the speed setpoint, increase [RO_MAX_THR_SPEED](#RO_MAX_THR_SPEED).
If it is the other way around decrease the parameter and repeat until you are satisfied with the setpoint tracking.
@@ -86,15 +86,10 @@ These steps are only necessary if you are tuning/want to unlock the manual [Posi
The rover is now ready to drive in [Position mode](../flight_modes_rover/manual.md#position-mode) and the configuration can be continued with [position tuning](position_tuning.md).
## Velocity Controller Structure (Info Only)
## Speed Controller Structure (Info Only)
This section provides additional information for developers and people with experience in control system design.
The velocity vector is defined by the following two values:
1. The absolute speed [$m/s$]
2. The direction (bearing) [$rad$]
The speed controller uses the following structure:
![Rover Speed Controller](../../assets/config/rover/rover_speed_controller.png)
@@ -103,7 +98,7 @@ The feed forward mapping is done by interpolating the speed setpoint from [-[RO_
For ackermann and differential rovers the bearing is aligned with the vehicle yaw. Therefor the bearing is simply sent as a yaw setpoint to the [yaw controller](attitude_tuning.md#attitude-controller-structure-info-only) and the speed setpoint is always defined in body x direction.
For mecanum vehicles, the bearing and yaw are decoupled. The direction is controlled by splitting the velocity vector into one speed component in body x direction and one in body y direction.
For mecanum vehicles, the bearing and yaw are decoupled. The direction is controlled by splitting the speed vector into one speed component in body x direction and one in body y direction.
Both these setpoint are then sent to their own closed loop speed controllers.
## Parameter Overview
+1 -1
View File
@@ -15,7 +15,7 @@ PX4 provides support for the three most common types of rovers:
| Rover Type | Steering |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**Ackermann**](#ackermann) | 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. |
| [**Differential**](#differential) | Direction is controlled by moving the left- and right-side wheels at different speeds. |
| [**Differential**](#differential) | Direction is controlled by moving the left- and right-side wheels (or tracks) at different speeds. |
| [**Mecanum**](#mecanum) | Direction is controlled by moving each mecanum wheel individually at different speeds and in different directions. |
The supported frames can be seen in [Airframes Reference > Rover](../airframes/airframe_reference.md#rover).