Skip to content

Commit

Permalink
New Crowdin updates (PX4#3462)
Browse files Browse the repository at this point in the history
* New translations summary.md (German)

* New translations summary.md (Japanese)

* New translations summary.md (Korean)

* New translations summary.md (Russian)

* New translations summary.md (Turkish)

* New translations summary.md (Ukrainian)

* New translations summary.md (Chinese Simplified)

* New translations index.md (German)

* New translations index.md (Japanese)

* New translations index.md (Korean)

* New translations index.md (Russian)

* New translations index.md (Turkish)

* New translations index.md (Ukrainian)

* New translations index.md (Chinese Simplified)

* New translations main.md (German)

* New translations main.md (Japanese)

* New translations main.md (Korean)

* New translations main.md (Russian)

* New translations main.md (Turkish)

* New translations main.md (Ukrainian)

* New translations main.md (Chinese Simplified)

* New translations ackermann.md (German)

* New translations differential.md (German)

* New translations ackermann.md (Japanese)

* New translations differential.md (Japanese)

* New translations ackermann.md (Korean)

* New translations differential.md (Korean)

* New translations ackermann.md (Russian)

* New translations differential.md (Russian)

* New translations ackermann.md (Turkish)

* New translations differential.md (Turkish)

* New translations ackermann.md (Ukrainian)

* New translations differential.md (Ukrainian)

* New translations ackermann.md (Chinese Simplified)

* New translations differential.md (Chinese Simplified)

* New translations ackermann.md (German)

* New translations differential.md (German)

* New translations ackermann.md (German)

* New translations differential.md (German)

* New translations ackermann.md (Japanese)

* New translations differential.md (Japanese)

* New translations ackermann.md (Japanese)

* New translations differential.md (Japanese)

* New translations ackermann.md (Korean)

* New translations differential.md (Korean)

* New translations ackermann.md (Korean)

* New translations differential.md (Korean)

* New translations ackermann.md (Russian)

* New translations differential.md (Russian)

* New translations ackermann.md (Russian)

* New translations differential.md (Russian)

* New translations ackermann.md (Turkish)

* New translations differential.md (Turkish)

* New translations ackermann.md (Turkish)

* New translations differential.md (Turkish)

* New translations ackermann.md (Ukrainian)

* New translations differential.md (Ukrainian)

* New translations ackermann.md (Ukrainian)

* New translations differential.md (Ukrainian)

* New translations ackermann.md (Chinese Simplified)

* New translations differential.md (Chinese Simplified)

* New translations ackermann.md (Chinese Simplified)

* New translations differential.md (Chinese Simplified)
  • Loading branch information
PX4BuildBot authored Nov 20, 2024
1 parent 117ebbe commit aaffec9
Show file tree
Hide file tree
Showing 63 changed files with 6,041 additions and 217 deletions.
10 changes: 5 additions & 5 deletions de/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -399,14 +399,14 @@
- [Helicopter (experimental)](frames_helicopter/index.md)
- [Helicopter Config/Tuning](config_heli/index.md)
- [Rovers (experimental)](frames_rover/index.md)
- [Differential Rover](frames_rover/differential.md)
- [Ackermann Rovers](frames_rover/ackermann.md)
- [Drive Modes](flight_modes_rover/ackermann.md)
- [Configuration/Tuning](config_rover/ackermann.md)
- [Differential Rovers](frames_rover/differential.md)
- [Drive Modes](flight_modes_rover/differential.md)
- [Configuration/Tuning](config_rover/differential.md)
- [Aion Robotics R1](frames_rover/aion_r1.md)
- [Ackermann Rover](frames_rover/ackermann.md)
- [Drive Modes](flight_modes_rover/ackermann.md)
- [Configuration/Tuning](config_rover/ackermann.md)
- [Mecanum Rover](frames_rover/mecanum.md)
- [Mecanum Rovers](frames_rover/mecanum.md)
- [Drive Modes](flight_modes_rover/mecanum.md)
- [Configuration/Tuning](config_rover/mecanum.md)
- [(Deprecated) Rover Position Control](frames_rover/rover_position_control.md)
Expand Down
420 changes: 420 additions & 0 deletions de/config_rover/ackermann.md

Large diffs are not rendered by default.

314 changes: 314 additions & 0 deletions de/config_rover/differential.md

Large diffs are not rendered by default.

94 changes: 82 additions & 12 deletions de/flight_modes_rover/ackermann.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Flight modes (or more accurately "Drive modes" for ground vehicles) provide autopilot support to make it easier to manually drive the vehicle or to execute autonomous missions.

This section outlines all supported drive modes for Ackermann rovers.
This section outlines all supported drive modes for [Ackermann rovers](../frames_rover/ackermann.md).

For information on mapping RC control switches to specific modes see: [Basic Configuration > Flight Modes](../config/flight_mode.md).

Expand All @@ -14,30 +14,100 @@ Selecting any other mode than those listed below will either stop the rover or c

Manual modes require stick inputs from the user to drive the vehicle.

![Manual Controls](../../assets/airframes/rover/flight_modes/rover_manual_controls.png)
![Manual Controls](../../assets/airframes/rover/flight_modes/manual_controls_ackermann_rover.png)

The manual modes listed below provide increasing levels of autopilot support:
The sticks provide the same "high level" control effects over direction and rate of movement in all manual modes:

| Mode | Features |
| ---------------------- | ------------------------------------------------------------------------------------ |
| [Manual](#manual-mode) | Directly map stick inputs to motor commands, no closed loop control. |
- `Left stick up/down`: Drive the rover forwards/backwards (controlling speed)
- `Right stick left/right`: Make a left/right turn (controlling steering angle ([Manual mode](#manual-mode)) or lateral acceleration ([Acro](#acro-mode) and [Position](#position-mode))).

The manual modes provide progressively increasing levels of autopilot support for maintaining a course, speed, and rate of turn, compensating for external factors such as slopes or uneven terrain.

| Mode | Features |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Manual](#manual-mode) | No autopilot support. User is responsible for keeping the rover on the desired course and maintaining speed and rate of turn. |
| [Acro](#acro-mode) | + Maintains the lateral acceleration. This makes it feel more like driving a car than manual mode. <br>+ It also protects against roll over and is slightly better at holding a straight line in uneven terrain. |
| [Position](#position-mode) | + Best mode for holding a straight line.<br>+ Maintains speed against disturbances, e.g. when driving up a hill<br>+ Allows maximum speed to be limited. |

:::details
Overview mode mapping to control effect

| Mode | Forward speed | Steering angle/lateral acceleration | Required measurements |
| -------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| [Manual](#manual-mode) | Directly map stick input to motor command. | Directly map stick input to steering angle. | None. |
| [Acro](#acro-mode) | Directly map stick input to motor command. | Stick input creates a lateral acceleration setpoint for the control system to regulate. | Lateral acceleration. |
| [Position](#position-mode) | Stick input creates a speed setpoint for the control system to regulate. | Stick input creates a lateral acceleration setpoint for the control system to regulate. If this setpoint is zero (stick is centered) the control system will keep the rover driving in a straight line. | Lateral acceleration, yaw, speed and global position (GPS). |

:::

### Manual Mode

The _Manual_ mode stops the rover when the RC control sticks are centred.
To manually move/drive the vehicle you move the sticks outside of the centre.
In this mode the stick inputs are directly mapped to motor commands. The rover does not attempt to maintain a specific orientation or compensate for external factors like slopes or uneven terrain!
The user is responsible for making the necessary adjustments to the stick inputs to keep the rover on the desired course.

| Stick | Effect |
| ---------------------- | ---------------------------------------------------------- |
| Left stick up/down | Drive the rover forwards/backwards. |
| Right stick left/right | Move the steering angle to the left/right. |

Moving the left-stick up/down controls the _forward speed_ and moving the right-stick left/right controls the _steering angle_ of the vehicle.
For the configuration/tuning of this mode see [Manual mode](../config_rover/ackermann.md#manual-mode).

### Acro Mode

:::info
The rover does not attempt to maintain a specific orientation or compensate for external factors like slopes or uneven terrain!
The user is responsible for making the necessary adjustments to the stick inputs to keep the rover on the desired course.
This mode requires a lateral acceleration measurement.
:::

In this mode the vehicle regulates its lateral acceleration to a setpoint (but does not stabilize heading or regulate speed).

Lateral acceleration can be directly mapped to a steering input based on the forward speed of the rover:

<!-- prettier-ignore -->

$$\theta = \arctan(\frac{w_b \cdot a_{lat}}{ v^2})$$

with

- $w_b:$ Wheel base,
- $\theta:$ Steering angle,
- $v:$ Forward speed.

For driving this means that the same right hand stick input will cause a different steering angle based on how fast you are driving.
By limiting the maximum lateral acceleration, we can restrict the steering angle based on the speed, which can prevent the rover from rolling over.
This mode will feel more like "driving a car" than [Manual mode](#manual-mode).

:::info
The lateral acceleration is only close loop controlled when driving forwards. When driving backwards the lateral acceleration setpoint is directly mapped to a steering angle using the equation above.
This is due to the fact that rear wheel steering (driving a car with front-wheel steering backwards) is non-minimum-phase w.r.t to the lateral acceleration which leads to instabilities when doing closed loop control.
:::

| Stick | Effect |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Left stick up/down | Drive the rover forwards/backwards. |
| Right stick left/right | Create a lateral acceleration setpoint for the control system to regulate. If this input is zero the control system will attempt to maintain a zero lateral acceleration (minimal disturbance rejection) |

For the configuration/tuning of this mode see [Acro mode](../config_rover/ackermann.md#acro-mode).

### Position Mode

:::info
This mode requires a lateral acceleration, yaw, speed and global position estimate.
:::

This is the manual mode with the most autopilot support. The vehicle regulates its lateral acceleration and speed to a setpoint. If the lateral acceleration setpoint is zero, the controller will remember the gps coordinates and yaw (heading) of the vehicle and use those to construct a line that the rover will then follow (course control).
This offers the highest amount of disturbance rejection, which leads to the best straight line driving behavior.

| Stick | Effect |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Left stick up/down | Stick position sets a forward/back speed setpoint. The vehicle attempts to maintain this speed on slopes etc. |
| Right stick left/right | Create a lateral acceleration setpoint for the control system to regulate. If this input is zero the control system will maintain the course of the rover. |

For the configuration/tuning of this mode see [Position mode](../config_rover/differential.md#position-mode).

## Auto Modes

In auto modes the autopilot takes over control of the vehicle to run missions, return to launch, or perform other autonomous navigation tasks.
For the tuning process see the configuration for [Auto modes](../config_rover/ackermann.md#mission-parameters).
For the tuning process see the configuration for [Auto modes](../config_rover/ackermann.md#auto-modes).

### Mission Mode

Expand Down
4 changes: 3 additions & 1 deletion de/flight_modes_rover/differential.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ For the configuration/tuning of this mode see [Stabilized mode](../config_rover/
This mode requires a yaw rate, yaw, speed and global position estimate.
:::

This is the mode with the most autopilot support. The vehicle regulates its yaw rate and speed to a setpoint. If the yaw rate setpoint is zero, the controller will remember the gps coordinates and yaw (heading) of the vehicle and use those to construct a line that the rover will then follow (course control).
This is the manual mode with the most autopilot support.
The vehicle regulates its yaw rate and speed to a setpoint.
If the yaw rate setpoint is zero, the controller will remember the GNSS coordinates and yaw (heading) of the vehicle and use those to construct a line that the rover will then follow (course control).
This offers the highest amount of disturbance rejection, which leads to the best straight line driving behavior.

| Stick | Effect |
Expand Down
14 changes: 14 additions & 0 deletions de/frames_rover/ackermann.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Ackermann Rovers

<Badge type="tip" text="main (PX4 v1.16+)" /> <Badge type="warning" text="Experimental" />

An _Ackermann rover_ controls its direction by pointing the front wheels in the direction of travel — the [Ackermann steering geometry](https://en.wikipedia.org/wiki/Ackermann_steering_geometry) compensates for the fact that wheels on the inside and outside of the turn move at different rates.
This kind of steering is used on most commercial vehicles, including cars, trucks etc.

:::info
PX4 does not require that the vehicle uses the Ackermann geometry and will work with any front-steering rover.
:::

![Axial Trail Honcho](../../assets/airframes/rover/rover_ackermann/axial_trail_honcho.png)

See [Configuration/Tuning](../config_rover/ackermann.md) to set up your rover and [Drive Modes](../flight_modes_rover/ackermann.md) for the supported flight (aka drive) modes.
11 changes: 11 additions & 0 deletions de/frames_rover/differential.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Differential Rovers

<Badge type="tip" text="main (PX4 v1.16+)" /> <Badge type="warning" text="Experimental" />

A differential rover's motion is controlled using a differential drive mechanism, where the left and right wheel speeds are adjusted independently to achieve the desired forward speed and yaw rate.
Forward motion is achieved by driving both wheels at the same speed in the same direction.
Rotation is achieved by driving the wheels at different speeds in opposite directions, allowing the rover to turn on the spot.

![Aion R1](../../assets/airframes/rover/aion_r1/r1_rover_no_bg.png)

See [Configuration/Tuning](../config_rover/differential.md) to set up your rover and [Drive Modes](../flight_modes_rover/differential.md) for the supported flight (aka drive) modes.
15 changes: 8 additions & 7 deletions de/frames_rover/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ Support for rover is [experimental](../airframes/index.md#experimental-vehicles)

PX4 supports the following rover types:

- [**Differential steering**](../frames_rover/differential.md): 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**](../frames_rover/ackermann.md): 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.
- [**Mecanum steering**](../frames_rover/mecanum.md): direction is controlled by moving each mecanum wheel individually at different speeds and in different directions.
| Rover Type | Steering |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**Ackermann**](../frames_rover/ackermann.md) | 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**](../frames_rover/differential.md) | Direction is controlled by moving the left- and right-side wheels at different speeds (also know as skid or tank steering). |
| [**Mecanum**](../frames_rover/mecanum.md) | 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).

Expand All @@ -31,8 +33,8 @@ Rovers use a custom build that must be flashed onto your flight controller inste
::: info You can also enable the modules in default builds by adding the respective line to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add one of these lines to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)):

```sh
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
```

Expand All @@ -44,8 +46,7 @@ Rovers use a custom build that must be flashed onto your flight controller inste
## Simulation

[Gazebo](../sim_gazebo_gz/index.md) provides simulations for both types of steering:

- [Differential rover](../sim_gazebo_gz/vehicles.md#differential-rover)
- [Ackermann rover](../sim_gazebo_gz/vehicles.md#ackermann-rover)
- [Differential rover](../sim_gazebo_gz/vehicles.md#differential-rover)

![Rover gazebo simulation](../../assets/airframes/rover/rover_simulation.png)
![Rover gazebo simulation](../../assets/airframes/rover/rover_simulation.png)
Loading

0 comments on commit aaffec9

Please sign in to comment.