diff --git a/docs/assets/config/rover/rover_attitude_controller.png b/docs/assets/config/rover/rover_attitude_controller.png index 4e55164098..20373f2b33 100644 Binary files a/docs/assets/config/rover/rover_attitude_controller.png and b/docs/assets/config/rover/rover_attitude_controller.png differ diff --git a/docs/assets/config/rover/rover_rate_controller.png b/docs/assets/config/rover/rover_rate_controller.png index be0222cb0a..278629245c 100644 Binary files a/docs/assets/config/rover/rover_rate_controller.png and b/docs/assets/config/rover/rover_rate_controller.png differ diff --git a/docs/assets/config/rover/rover_speed_controller.png b/docs/assets/config/rover/rover_speed_controller.png index 83d4d1c625..910ace9e88 100644 Binary files a/docs/assets/config/rover/rover_speed_controller.png and b/docs/assets/config/rover/rover_speed_controller.png differ diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index f5f55b0e51..1e644a53a0 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -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) diff --git a/docs/en/config_rover/attitude_tuning.md b/docs/en/config_rover/attitude_tuning.md index e588daad96..55cf018735 100644 --- a/docs/en/config_rover/attitude_tuning.md +++ b/docs/en/config_rover/attitude_tuning.md @@ -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) diff --git a/docs/en/config_rover/index.md b/docs/en/config_rover/index.md index 6c14cc41fb..23a6fcceaa 100644 --- a/docs/en/config_rover/index.md +++ b/docs/en/config_rover/index.md @@ -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 diff --git a/docs/en/config_rover/position_tuning.md b/docs/en/config_rover/position_tuning.md index 933e528cbe..1c0cbcae91 100644 --- a/docs/en/config_rover/position_tuning.md +++ b/docs/en/config_rover/position_tuning.md @@ -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! diff --git a/docs/en/config_rover/rate_tuning.md b/docs/en/config_rover/rate_tuning.md index 92d4ea5d98..79be3fb6e1 100644 --- a/docs/en/config_rover/rate_tuning.md +++ b/docs/en/config_rover/rate_tuning.md @@ -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. diff --git a/docs/en/config_rover/velocity_tuning.md b/docs/en/config_rover/speed_tuning.md similarity index 91% rename from docs/en/config_rover/velocity_tuning.md rename to docs/en/config_rover/speed_tuning.md index 04323e7413..06d5ea562b 100644 --- a/docs/en/config_rover/velocity_tuning.md +++ b/docs/en/config_rover/speed_tuning.md @@ -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 diff --git a/docs/en/frames_rover/index.md b/docs/en/frames_rover/index.md index baac305cf0..4dfae81d35 100644 --- a/docs/en/frames_rover/index.md +++ b/docs/en/frames_rover/index.md @@ -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).