mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-18 02:53:33 +08:00
Move PX4 Guide source into /docs (#24490)
* Add vitepress tree * Update existing workflows so they dont trigger on changes in the docs path * Add nojekyll, package.json, LICENCE etc * Add crowdin docs upload/download scripts * Add docs flaw checker workflows * Used docs prefix for docs workflows * Crowdin obvious fixes * ci: docs move to self hosted runner runs on a beefy server for faster builds Signed-off-by: Ramon Roche <mrpollo@gmail.com> * ci: don't run build action for docs or ci changes Signed-off-by: Ramon Roche <mrpollo@gmail.com> * ci: update runners Signed-off-by: Ramon Roche <mrpollo@gmail.com> * Add docs/en * Add docs assets and scripts * Fix up editlinks to point to PX4 sources * Download just the translations that are supported * Add translation sources for zh, uk, ko * Update latest tranlsation and uorb graphs * update vitepress to latest --------- Signed-off-by: Ramon Roche <mrpollo@gmail.com> Co-authored-by: Ramon Roche <mrpollo@gmail.com>
This commit is contained in:
co-authored by
Ramon Roche
parent
8e6d2ebe4a
commit
88d623bedb
@@ -0,0 +1,14 @@
|
||||
# Ackermann Rovers
|
||||
|
||||
<Badge type="tip" text="main (planned for: 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.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
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.
|
||||
@@ -0,0 +1,170 @@
|
||||
# Ackermann Rover
|
||||
|
||||
<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.
|
||||
:::
|
||||
|
||||
## Basic Setup
|
||||
|
||||
To start using the ackermann rover:
|
||||
|
||||
1. Enable the module by flashing the [PX4 rover build](../frames_rover/index.md#flashing-the-rover-build) onto your flight controller.
|
||||
|
||||
2. In the [Airframe](../config/airframe.md) configuration select the _Generic Rover Ackermann_:
|
||||
|
||||

|
||||
|
||||
::: warning
|
||||
Do not use the _Generic Ground Vehicle (Ackermann)_ airframe as that will load the [(Deprecated) Rover Position Control](../frames_rover/rover_position_control.md) module.
|
||||
|
||||
:::
|
||||
|
||||
Select the **Apply and Restart** button.
|
||||
|
||||
::: info
|
||||
If this airframe is not displayed and you have checked that you are using rover firmware (not the default), you can alternatively enable this frame by setting the [SYS_AUTOSTART](../advanced_config/parameter_reference.md#SYS_AUTOSTART) parameter to `51000`.
|
||||
|
||||
:::
|
||||
|
||||
3. Open the [Actuators Configuration & Testing](../config/actuators.md) to map the steering and throttle functions to flight controller outputs.
|
||||
|
||||
This is sufficient to drive the the rover in [manual mode](../flight_modes_rover/index.md#manual-mode) (see [Drive modes](../flight_modes_rover/index.md)).
|
||||
|
||||
:::info
|
||||
Many features of this module are disabled by default, and are only enabled by setting certain parameters.
|
||||
The [Tuning (basic)](#tuning-basic) section goes through the minimum setup required to start driving missions
|
||||
and the [Tuning (advanced)](#tuning-advanced) section outlines the remaining features and tuning variables of the module.
|
||||
:::
|
||||
|
||||
## Tuning (Basic)
|
||||
|
||||
To start driving missions navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and set the following parameters:
|
||||
|
||||
| Parameter | Description | Unit |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ---- |
|
||||
| <a id="RA_WHEEL_BASE"></a>[RA_WHEEL_BASE](../advanced_config/parameter_reference.md#RA_WHEEL_BASE) | Wheel-base of the rover which is measured from the back to the front wheel | m |
|
||||
| <a id="RA_MAX_STR_ANG"></a>[RA_MAX_STR_ANG](../advanced_config/parameter_reference.md#RA_MAX_STR_ANG) | Maximum steering angle of the rover | deg |
|
||||
| <a id="RA_MISS_VEL_DEF"></a>[RA_MISS_VEL_DEF](../advanced_config/parameter_reference.md#RA_MISS_VEL_DEF) | Default velocity the rover will drive during the mission | m/s |
|
||||
|
||||

|
||||
|
||||
This is enough to start driving missions, but depending on the rover might not yet lead to satisfactory performance .
|
||||
If that is the case further tuning is required which is outlined in [Mission parameters](#mission-parameters).
|
||||
|
||||
## Tuning (Advanced)
|
||||
|
||||
To get an overview of all parameters that are related to the Ackermann rover module navigate to the _Rover Ackermann_ group in the _Parameters_ section of QGroundControl.
|
||||
|
||||
### General Parameters
|
||||
|
||||
These parameters affect the general behaviour of the rover. This will influence both auto and manual modes.
|
||||
|
||||
| Parameter | Description | Unit |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ---- |
|
||||
| <a id="RA_MAX_SPEED"></a>[RA_MAX_SPEED](../advanced_config/parameter_reference.md#RA_MAX_SPEED) | Speed the rover drives at maximum throttle | m/s |
|
||||
|
||||
This is used for a feed-forward term on the speed controller in mission mode and necessary for the [acceleration slew rate](#slew-rates).
|
||||
|
||||
#### Slew Rates
|
||||
|
||||
Slew rates limit how fast the signal that is sent to the motors is allowed to change:
|
||||
|
||||
| Parameter | Description | Unit |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ----- |
|
||||
| <a id="RA_MAX_ACCEL"></a>[RA_MAX_ACCEL](../advanced_config/parameter_reference.md#RA_MAX_ACCEL) | Limit on the acceleration of the rover | m/s^2 |
|
||||
| <a id="RA_MAX_STR_RATE"></a>[RA_MAX_STR_RATE](../advanced_config/parameter_reference.md#RA_MAX_STR_RATE) | Limit on the steering rate | deg/s |
|
||||
|
||||
:::warning
|
||||
The slew rates are not based on measurements but on assumed linear relation between the throttle input and [RA_MAX_SPEED](#RA_MAX_SPEED) or steering input and [RA_MAX_STR_ANG](#RA_MAX_STR_ANG) respectively.
|
||||
Therefore these two parameters have to be set for the slew rates to work!
|
||||
:::
|
||||
|
||||
## Mission Parameters
|
||||
|
||||
These parameters only affect vehicle in [Mission Mode](../flight_modes_rover/index.md#mission-mode).
|
||||
|
||||
:::warning
|
||||
The parameters in [Tuning (basic)](#tuning-basic) must also be set to drive missions!
|
||||
:::
|
||||
|
||||
The module uses a control algorithm called pure pursuit, see [Pure Pursuit Guidance Logic](../flight_modes_rover/index.md#pure-pursuit-guidance-logic) for the basic tuning process.
|
||||
|
||||
:::info
|
||||
Increasing [PP_LOOKAHD_MIN](../advanced_config/parameter_reference.md#PP_LOOKAHD_MIN) can help to make the steering less aggressive at slow speeds.
|
||||
This can be useful especially if the [corner slow down effect](#corner-slow-down) is enabled.
|
||||
:::
|
||||
|
||||
### Cornering Parameters
|
||||
|
||||
#### Corner cutting
|
||||
|
||||
The module employs a special cornering logic causing the rover to "cut corners" to achieve a smooth trajectory.
|
||||
This is done by scaling the acceptance radius based on the corner the rover has to drive (for geometric explanation see [Cornering logic](#mission-cornering-logic-info-only)).
|
||||
|
||||

|
||||
|
||||
The degree to which corner cutting is allowed can be tuned, or disabled, with the following parameters:
|
||||
|
||||
| Parameter | Description | Unit |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ---- |
|
||||
| <a id="NAV_ACC_RAD"></a>[NAV_ACC_RAD](../advanced_config/parameter_reference.md#NAV_ACC_RAD) | Default acceptance radius | m |
|
||||
| <a id="RA_ACC_RAD_MAX"></a>[RA_ACC_RAD_MAX](../advanced_config/parameter_reference.md#RA_ACC_RAD_MAX) | Maximum radius the acceptance radius can be scaled to | m |
|
||||
| <a id="RA_ACC_RAD_GAIN"></a>[RA_ACC_RAD_GAIN](../advanced_config/parameter_reference.md#RA_ACC_RAD_GAIN) | Tuning parameter | - |
|
||||
|
||||
The tuning parameter is a multiplicand on the calculated ideal acceptance radius to account for dynamic effects.
|
||||
|
||||
#### Corner slow down
|
||||
|
||||
To smoothen the trajectory further and reduce the risk of the rover rolling over, the mission speed is reduced as the rover gets closer to a waypoint:
|
||||
|
||||
- During cornering the rover drives at a speed that is equal to the the inverse of the acceptance radius (calculated using the [corner cutting logic](#corner-cutting)) multiplied with a tuning parameter called [RA_MISS_VEL_GAIN](#RA_MISS_VEL_GAIN).
|
||||
- In between waypoints (straight line) the rover speed is regulated such that it will arrive at the acceptance radius of the waypoint with the desired cornering speed.
|
||||
This requires [RA_MAX_ACCEL](#RA_MAX_ACCEL) and [RA_MAX_JERK](#RA_MAX_JERK) to be set.
|
||||
|
||||
The mission speed is constrained between a minimum allowed speed [RA_MISS_VEL_MIN](#RA_MISS_VEL_MIN) and the default mission speed [RA_MISS_VEL_DEF](#RA_MISS_VEL_DEF).
|
||||
|
||||
| Parameter | Description | Unit |
|
||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------- |
|
||||
| <a id="RA_MISS_VEL_DEF"></a>[RA_MISS_VEL_DEF](../advanced_config/parameter_reference.md#RA_MISS_VEL_DEF) | Default mission speed | $m/s$ |
|
||||
| <a id="RA_MISS_VEL_MIN"></a>[RA_MISS_VEL_MIN](../advanced_config/parameter_reference.md#RA_MISS_VEL_MIN) | Minimum the speed can be reduced to during cornering | $m/s$ |
|
||||
| <a id="RA_MISS_VEL_GAIN"></a>[RA_MISS_VEL_GAIN](../advanced_config/parameter_reference.md#RA_MISS_VEL_GAIN) | Tuning parameter for the velocity reduction | - |
|
||||
| <a id="RA_MAX_JERK"></a>[RA_MAX_JERK](../advanced_config/parameter_reference.md#RA_MAX_JERK) | Limit for forwards acc/deceleration change. | $m/s^3$ |
|
||||
|
||||
### Mission Cornering Logic (Info only)
|
||||
|
||||
To enable a smooth trajectory, the acceptance radius of waypoints is scaled based on the angle between a line segment from the current-to-previous and current-to-next waypoints.
|
||||
The ideal trajectory would be to arrive at the next line segment with the heading pointing towards the next waypoint.
|
||||
For this purpose the minimum turning circle of the rover is inscribed tangentially to both line segments.
|
||||
|
||||

|
||||
|
||||
The acceptance radius of the waypoint is set to the distance from the waypoint to the tangential points between the circle and the line segments:
|
||||
|
||||
$$
|
||||
\begin{align*}
|
||||
r_{min} &= \frac{L}{\sin\left( \delta_{max}\right) } \\
|
||||
\theta &= \frac{1}{2}\arccos\left( \frac{\vec{a}*\vec{b}}{|\vec{a}||\vec{b}|}\right) \\
|
||||
r_{acc} &= \frac{r_{min}}{\tan\left( \theta\right) }
|
||||
\end{align*}
|
||||
$$
|
||||
|
||||
| Symbol | Description | Unit |
|
||||
| ----------------------------------- | ---------------------------------- | ---- |
|
||||
| $\vec{a}$ | Vector from current to previous WP | m |
|
||||
| $\vec{b}$ | Vector from current to next WP | m |
|
||||
| $r_{min}$ | Minimum turn radius | m |
|
||||
| $\delta_{max}$ | Maximum steer angle | m |
|
||||
| $r_{acc}$ | Acceptance radius | m |
|
||||
|
||||
<!--
|
||||
## Parameters
|
||||
|
||||
The following parameters affect the ackermann-steering rover:
|
||||
-->
|
||||
@@ -0,0 +1,86 @@
|
||||
# Aion Robotics R1 UGV
|
||||
|
||||
<Badge type="tip" text="PX4 v1.15" />
|
||||
|
||||
The [Aion R1](https://www.aionrobotics.com/) vehicle was chosen to test and improve the differential drive support for PX4, and to improve driver support for Roboclaw Motor Controllers, such as the [RoboClaw 2x15A](https://www.basicmicro.com/RoboClaw-2x15A-Motor-Controller_p_10.html).
|
||||
|
||||
The documentation and driver information here should also make it easier to work with Roboclaw controllers on other vehicles, and to work with vehicles like the [Aion R6](https://www.aionrobotics.com/r6).
|
||||
|
||||
Currently, PX4 supports MANUAL mode for this setup.
|
||||
|
||||

|
||||
|
||||
## 부품 목록
|
||||
|
||||
- [Aion R1 (Discontinued)](https://www.aionrobotics.com/)
|
||||
- [Documentation](https://github-docs.readthedocs.io/en/latest/r1-ugv.html)
|
||||
- [RoboClaw 2x15A](https://www.basicmicro.com/RoboClaw-2x15A-Motor-Controller_p_10.html)
|
||||
- [R1 Roboclaw specifications](https://resources.basicmicro.com/aion-robotics-r1-autonomous-robot/)
|
||||
- [Auterion Skynode](../companion_computer/auterion_skynode.md)
|
||||
|
||||
## 조립
|
||||
|
||||
The assembly consists of a 3D-printed frame on which all the autopilot parts were attached.
|
||||
For this build this includes an [Auterion Skynode](../companion_computer/auterion_skynode.md), connected to a Pixhawk Adapter Board that interfaces with the RoboClaw motor controllers over serial.
|
||||
|
||||

|
||||
|
||||
:::info
|
||||
If using a standard Pixhawk you could connect the RoboClaw to the Autopilot without an Adapter Board.
|
||||
:::
|
||||
|
||||
The RoboClaw should be connected to a suitable suitable serial (UART) port on the flight controller, such as `GPS2` or `TELEM1`.
|
||||
Other RoboClaw wiring is detailed in the [RoboClaw User Manual](https://downloads.basicmicro.com/docs/roboclaw_user_manual.pdf) 'Packet Serial Wiring' section and shown below (this setup has been validated for compatibility).
|
||||
|
||||

|
||||
|
||||
## PX4 설정
|
||||
|
||||
### Rover Configuration
|
||||
|
||||
Use _QGroundControl_ for rover configuration:
|
||||
|
||||
1. In the [Basic Configuration](../config/index.md) section, select the [Airframe](../config/airframe.md) tab.
|
||||
2. Choose **Aion Robotics R1 UGV** under the **Rover** category.
|
||||
|
||||

|
||||
|
||||
### RoboClaw Configuration
|
||||
|
||||
First configure the serial connection:
|
||||
|
||||
1. Navigate to the [Parameters](../advanced_config/parameters.md) section in QGroundControl.
|
||||
|
||||
- Set the [RBCLW_SER_CFG](../advanced_config/parameter_reference.md#RBCLW_SER_CFG) parameter to the serial port to which the RoboClaw is connected (such as `GPS2`).
|
||||
- [RBCLW_COUNTS_REV](../advanced_config/parameter_reference.md#RBCLW_COUNTS_REV) specifies the number of encoder counts required for one wheel revolution.
|
||||
This value should be left at `1200` for the tested `RoboClaw 2x15A Motor Controller`.
|
||||
Adjust the value based on your specific encoder and wheel setup.
|
||||
- RoboClaw motor controllers must be assigned a unique address on the bus.
|
||||
The default address is 128 and you should not need to change this (if you do, update the PX4 parameter [RBCLW_ADDRESS](../advanced_config/parameter_reference.md#RBCLW_ADDRESS) to match).
|
||||
|
||||
::: info
|
||||
PX4 does not support multiple RoboClaw motor controllers in the same vehicle — each controller needs a unique address on the bus, and there is only one parameter for setting the address in PX4 (`RBCLW_ADDRESS`).
|
||||
|
||||
:::
|
||||
|
||||
Then configure the actuator configuration:
|
||||
|
||||
1. Navigate to [Actuators Configuration & Testing](../config/actuators.md) in QGroundControl.
|
||||
2. Select the RoboClaw driver from the list of _Actuator Outputs_.
|
||||
|
||||
For the channel assignments, disarm, minimum, and maximum values, please refer to the image below.
|
||||
|
||||

|
||||
|
||||
For systems with more than two motors, it is possible to assign the same function to several motors.
|
||||
The reason for the unusual values, can be found in the [RoboClaw User Manual](https://downloads.basicmicro.com/docs/roboclaw_user_manual.pdf) under `Compatibility Commands` for `Packet Serial`:
|
||||
|
||||
```plain
|
||||
Drive motor forward. Valid data range is 0 - 127. A value of 127 = full speed forward, 64 =
|
||||
about half speed forward and 0 = full stop.
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [roboclaw](../modules/modules_driver.md#roboclaw) driver
|
||||
- [Roboclaw User Manual](https://downloads.basicmicro.com/docs/roboclaw_user_manual.pdf)
|
||||
@@ -0,0 +1,11 @@
|
||||
# Differential Rovers
|
||||
|
||||
<Badge type="tip" text="main (planned for: 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
@@ -0,0 +1,116 @@
|
||||
# Differential-steering Rovers
|
||||
|
||||
<Badge type="tip" text="main (PX4 v1.16+)" /> <Badge type="warning" text="Experimental" />
|
||||
|
||||
:::warning
|
||||
Support for rover is [experimental](../airframes/index.md#experimental-vehicles).
|
||||
Maintainer volunteers, [contribution](../contribute/index.md) of new features, new frame configurations, or other improvements would all be very welcome!
|
||||
:::
|
||||
|
||||
A differential-steering 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.
|
||||
|
||||

|
||||
|
||||
## Basic Setup
|
||||
|
||||
To start using the differential-steering rover:
|
||||
|
||||
1. Enable the module by flashing the [PX4 rover build](../frames_rover/index.md#flashing-the-rover-build) onto your flight controller.
|
||||
|
||||
2. In the [Airframe](../config/airframe.md) configuration select the _Generic Rover Differential_:
|
||||
|
||||

|
||||
|
||||
Select the **Apply and Restart** button.
|
||||
|
||||
::: info
|
||||
If this airframe does not show up in the UI, it can alternatively be selected by setting the [SYS_AUTOSTART](../advanced_config/parameter_reference.md#SYS_AUTOSTART) parameter to `50000`.
|
||||
|
||||
:::
|
||||
|
||||
3. Open the [Actuators Configuration & Testing](../config/actuators.md) to map the motor functions to flight controller outputs.
|
||||
|
||||
This is sufficient to drive the the rover in [manual mode](../flight_modes_rover/index.md#manual-mode) (see [Flight modes](../flight_modes_rover/index.md)).
|
||||
|
||||
:::info
|
||||
The parameter [RD_MAN_YAW_SCALE](../advanced_config/parameter_reference.md#RD_MAN_YAW_SCALE) can be used to scale the manual input for the yaw rate.
|
||||
:::
|
||||
|
||||
## Tuning (Basic)
|
||||
|
||||
This section goes through the basic parameters that need to be set to use all other features for the differential-steering rover.
|
||||
Navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and set the following parameters:
|
||||
|
||||
1. [RD_WHEEL_TRACK](../advanced_config/parameter_reference.md#RD_WHEEL_TRACK) [m]: Measure the distance from the center of the right wheel to the center of the left wheel.
|
||||
|
||||

|
||||
|
||||
2. [RD_MAX_SPEED](../advanced_config/parameter_reference.md#RD_MAX_SPEED) [m/s]: In manual mode, drive the rover with full throttle and enter the observed speed as the parameter.
|
||||
|
||||
3. [RD_MAX_YAW_RATE](../advanced_config/parameter_reference.md#RD_MAX_YAW_RATE) [deg/s]: This is the maximum yaw rate you want to allow for your rover.
|
||||
This will define the stick-to-yaw-rate mapping in acro mode as well as setting an upper limit for the yaw rate in mission mode.
|
||||
|
||||
4. [RD_YAW_RATE_P](../advanced_config/parameter_reference.md#RD_YAW_RATE_P) and [RD_YAW_RATE_I](../advanced_config/parameter_reference.md#RD_YAW_RATE_I) [-]: Tuning parameters for the closed-loop yaw rate controller.
|
||||
|
||||
::: info
|
||||
This can be tuned by setting all previous parameters and then setting the rover to _acro mode_.
|
||||
Use the right stick to yaw the rover on the spot and then observe the desired and actual yaw rate in the flight log.
|
||||
Change parameters and iterate.
|
||||
|
||||
Suggestion: Start the tuning process with [RD_YAW_RATE_I](../advanced_config/parameter_reference.md#RD_YAW_RATE_I) equal to zero and only set if necessary.
|
||||
|
||||
:::
|
||||
|
||||
This is enough to start using the rover in acro mode.
|
||||
To start driving mission the parameters in [Tuning (Mission)](#tuning-mission) also must be set.
|
||||
|
||||
## Tuning (Mission)
|
||||
|
||||
:::warning
|
||||
The parameters in [Tuning (Basic)](#tuning-basic) must also be set to drive missions!
|
||||
:::
|
||||
|
||||
The module uses a control algorithm called pure pursuit, see [Mission Mode](../flight_modes_rover/index.md#mission-mode) for the basic tuning process.
|
||||
The additional parameters are separated into the following sections:
|
||||
|
||||
### Mission Velocity
|
||||
|
||||
These parameters tune velocity control in missions:
|
||||
|
||||
- [RD_MISS_SPD_DEF](#RD_MISS_SPD_DEF): Sets the default velocity ($m/s$) for the rover during the mission.
|
||||
- [RD_MAX_ACCEL](#RD_MAX_ACCEL) ($m/s^2$) and [RD_MAX_JERK](#RD_MAX_JERK) ($m/s^3$) are used to calculate a velocity trajectory such that the rover comes to a smooth stop as it reaches a waypoint.
|
||||
- [RD_SPEED_P](#RD_SPEED_P) and [RD_SPEED_I](#RD_SPEED_I) are used to tune the closed-loop velocity controller during missions.
|
||||
|
||||
### Yaw Rate
|
||||
|
||||
The yaw rate setpoint is calculated by using the heading error calculated by the pure pursuit algorithm for a PID controller that can be tuned with [RD_HEADING_P](#RD_HEADING_P) and [RD_HEADING_I](#RD_HEADING_I).
|
||||
|
||||
:::info
|
||||
There is some degree of overlap between this tuning and the pure pursuit controller gain set in [Mission Mode](../flight_modes_rover/index.md#mission-mode) as they both have an influence on how aggressive the rover will steer.
|
||||
:::
|
||||
|
||||
### State Machine
|
||||
|
||||
The module employs the following state machine to make full use of a differential-steering rovers ability to turn on the spot:
|
||||

|
||||
|
||||
These transition thresholds can be set with [RD_TRANS_DRV_TRN](#RD_TRANS_DRV_TRN) and [RD_TRANS_TRN_DRV](#RD_TRANS_TRN_DRV).
|
||||
|
||||
### Parameters
|
||||
|
||||
The following parameters affect the differential-steering rover in mission mode (overview):
|
||||
|
||||
| Parameter | Description | Unit |
|
||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------- |
|
||||
| <a id="RD_MISS_SPD_DEF"></a>[RD_MISS_SPD_DEF](../advanced_config/parameter_reference.md#RD_MISS_SPD_DEF) | Mission speed for the rover | $m/s$ |
|
||||
| <a id="RD_MAX_ACCEL"></a>[RD_MAX_ACCEL](../advanced_config/parameter_reference.md#RD_MAX_ACCEL) | Maximum acceleration for the rover | $m/s^2$ |
|
||||
| <a id="RD_MAX_JERK"></a>[RD_MAX_JERK](../advanced_config/parameter_reference.md#RD_MAX_JERK) | Maximum jerk for the rover | $m/s^3$ |
|
||||
| <a id="RD_SPEED_P"></a>[RD_SPEED_P](../advanced_config/parameter_reference.md#RD_SPEED_P) | Proportional gain for speed controller | - |
|
||||
| <a id="RD_SPEED_I"></a>[RD_SPEED_I](../advanced_config/parameter_reference.md#RD_SPEED_I) | Integral gain for speed controller | * |
|
||||
| <a id="RD_HEADING_P"></a>[RD_HEADING_P](../advanced_config/parameter_reference.md#RD_HEADING_P) | Proportional gain for heading controller | - |
|
||||
| <a id="RD_HEADING_I"></a>[RD_HEADING_I](../advanced_config/parameter_reference.md#RD_HEADING_I) | Integral gain for heading controller | * |
|
||||
| <a id="RD_TRANS_DRV_TRN"></a>[RD_TRANS_DRV_TRN](../advanced_config/parameter_reference.md#RD_TRANS_DRV_TRN) | Heading error threshold to switch from driving to spot turning | deg |
|
||||
| <a id="RD_TRANS_TRN_DRV"></a>[RD_TRANS_TRN_DRV](../advanced_config/parameter_reference.md#RD_TRANS_TRN_DRV) | Heading error threshold to switch from spot turning to driving | deg |
|
||||
@@ -0,0 +1,57 @@
|
||||
# Rovers
|
||||
|
||||
<LinkedBadge type="warning" text="Experimental" url="../airframes/#experimental-vehicles"/>
|
||||
|
||||
:::warning
|
||||
Support for rover is [experimental](../airframes/index.md#experimental-vehicles).
|
||||
Maintainer volunteers, [contribution](../contribute/index.md) of new features, new frame configurations, or other improvements would all be very welcome!
|
||||
:::
|
||||
|
||||

|
||||
|
||||
PX4 supports the following rover types:
|
||||
|
||||
| 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).
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
::: info
|
||||
You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them 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_ACKERMANN=y
|
||||
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
|
||||
CONFIG_MODULES_ROVER_MECANUM=y
|
||||
```
|
||||
|
||||
Note that adding the rover modules 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).
|
||||
|
||||
:::
|
||||
|
||||
2. Load the **custom firmware** that you just built onto your flight controller (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)).
|
||||
|
||||
## 시뮬레이션
|
||||
|
||||
[Gazebo](../sim_gazebo_gz/index.md) provides simulations for ackermann and differential rovers:
|
||||
|
||||
- [Ackermann rover](../sim_gazebo_gz/vehicles.md#ackermann-rover)
|
||||
- [Differential rover](../sim_gazebo_gz/vehicles.md#differential-rover)
|
||||
|
||||

|
||||
@@ -0,0 +1,10 @@
|
||||
# Mecanum Rovers
|
||||
|
||||
<Badge type="tip" text="main (planned for: PX4 v1.16+)" /> <Badge type="warning" text="Experimental" />
|
||||
|
||||
A Mecanum rover is a type of mobile robot that uses Mecanum wheels to achieve omnidirectional movement. These wheels are unique because they have rollers mounted at a 45-degree angle around their circumference, allowing the rover to move not only forward and backward but also side-to-side and diagonally without needing to rotate first.
|
||||
Each wheel is driven by its own motor, and by controlling the speed and direction of each motor, the rover can move in any direction or spin in place.
|
||||
|
||||

|
||||
|
||||
See [Configuration/Tuning](../config_rover/mecanum.md) to set up your rover and [Drive Modes](../flight_modes_rover/mecanum.md) for the supported flight (aka drive) modes.
|
||||
@@ -0,0 +1,178 @@
|
||||
# (Deprecated) Rover Position Control
|
||||
|
||||
<LinkedBadge type="warning" text="Experimental" url="../airframes/#experimental-vehicles"/>
|
||||
|
||||
:::warning
|
||||
This information applies to the original generic rover module that was derived from the fixed wing controller.
|
||||
It has been replaced with new modules for [Ackermann](../frames_rover/ackermann.md) and [Differential-steering](../frames_rover/differential.md) rovers.
|
||||
This module is no longer supported and will receive no updates.
|
||||
:::
|
||||
|
||||
PX4 supports rovers (Unmanned Ground Vehicles - UGVs) with [ackermann and differential](#rover-types) steering.
|
||||
|
||||
This section contains build logs/instructions for assembling as well as configuring a number of UGV frames.
|
||||
|
||||

|
||||
|
||||
## Rover Types
|
||||
|
||||
PX4 supports rovers with:
|
||||
|
||||
- **Differential steering**: direction is controlled by moving the left- and right-side wheels at different speeds.
|
||||
|
||||
This kind of steering commonly used on bulldozers, tanks, and other tracked vehicles.
|
||||
|
||||
- **Ackermann steering**: direction is controlled by pointing wheels in the direction of travel ([ackermann 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.
|
||||
|
||||
The supported frames can be seen in [Airframes Reference > Rover](../airframes/airframe_reference.md#rover): these are the frames like _Generic Ground Vehicle (Deprecated)_ that include "(Deprecated)" in their name.
|
||||
|
||||
## How to Configure a Rover
|
||||
|
||||
### Ackermann Steering Configuration
|
||||
|
||||
Setting up a rover with Ackermann steering is straightforward:
|
||||
|
||||
1. In the [Airframe](../config/airframe.md) configuration, select the _Generic Ground Vehicle (Deprecated)_.
|
||||
|
||||

|
||||
|
||||
Select the **Apply and Restart** button.
|
||||
|
||||
2. Open the [Actuators Configuration & Testing](../config/actuators.md) to map the steering and throttle functions to flight controller outputs.
|
||||
|
||||
### Differential Steering Configuration
|
||||
|
||||
1. In the [Airframe](../config/airframe.md) configuration, select either the _Aion Robotics R1 UGV_ or _NXP Cup car: DF Robot GPX (Deprecated)_
|
||||
|
||||

|
||||
|
||||
Select the **Apply and Restart** button.
|
||||
|
||||
1. Open the [Actuators Configuration & Testing](../config/actuators.md) and map the left and right motor functions to flight controller outputs.
|
||||
|
||||
## 시뮬레이션
|
||||
|
||||
[Gazebo Classic](../sim_gazebo_classic/index.md) provides simulations for both types of steering:
|
||||
|
||||
- Ackermann: [ackermann rover](../sim_gazebo_classic/vehicles.md#ackermann-ugv)
|
||||
- Differential: [r1 rover](../sim_gazebo_classic/vehicles.md#differential-ugv)
|
||||
|
||||
## Drive Modes (Rover)
|
||||
|
||||
Flight modes (or more accurately "Drive modes" for ground vehicles) provide autopilot support to make it easier to manually drive the vehicle, to execute autonomous missions, or to defer control to an external system.
|
||||
|
||||
PX4 ground vehicles using the deprecated rover position control module only support [manual mode](#manual-mode), [mission mode](#mission-mode) and [offboard mode](#offboard-mode) (other modes may be offered in a ground station, but these all behave just like manual mode).
|
||||
|
||||
### 수동 모드
|
||||
|
||||
_Manual mode_ is the only manual mode for ground vehicles on PX4, and requires a manual controller (RC controller, gamepad, joystick etc.).
|
||||
|
||||
In this mode, motors are stopped when RC control sticks are centered.
|
||||
To move the vehicle you move the sticks outside of the center.
|
||||
|
||||
조종 스틱을 놓으면 중앙 데드 존으로 돌아갑니다.
|
||||
This will turn off the motors and center the wheels.
|
||||
There is no active braking, so the vehicle may continue to move until its momentum dissipates.
|
||||
|
||||
### Mission Mode
|
||||
|
||||
_Mission mode_ is an automatic mode that causes the vehicle to execute a predefined autonomous [mission](../flying/missions.md) plan that has been uploaded to the flight controller.
|
||||
The mission is typically created and uploaded with a Ground Control Station (GCS) application, such as [QGroundControl](https://docs.qgroundcontrol.com/master/en/).
|
||||
|
||||
### Offboard Mode
|
||||
|
||||
[Offboard mode](../flight_modes/offboard.md) causes the vehicle to obey position, velocity, or attitude, setpoints provided over MAVLink.
|
||||
Not all setpoint types make sense for a ground vehicle, or are supported.
|
||||
|
||||
:::info
|
||||
This mode is intended for vehicle control from companion computers and ground stations!
|
||||
:::
|
||||
|
||||
## 추가 정보
|
||||
|
||||
- [Basic Configuration > Flight Modes](../config/flight_mode.md) - How to map RC control switches to specific flight modes
|
||||
- [Flight Modes (Multicopter)](../flight_modes_mc/index.md)
|
||||
- [Flight Modes (Fixed-wing)](../flight_modes_fw/index.md)
|
||||
- [Flight Modes (VTOL)](../flight_modes_vtol/index.md)
|
||||
|
||||
## Traxxas Stampede VXL
|
||||
|
||||
This vehicle was chosen to understand how a Pixhawk could be used for wheeled platforms.
|
||||
We chose to use a Traxxas vehicle as they are very popular and it is a very strong brand in the RC community.
|
||||
The idea was to develop a platform that allows for easy control of wheeled UGVs with an autopilot.
|
||||
|
||||

|
||||
|
||||
### 부품 목록
|
||||
|
||||
- [Traxxas Stampede](https://traxxas.com/products/models/electric/stampede-vxl-tsm) All of this is used except for the top plastic cover.
|
||||
- [Pixhawk Mini (Discontinued)](../flight_controller/pixhawk_mini.md)
|
||||
- 3DR 10S 전원 모듈
|
||||
- 3DR 433MHz Telemetry Module (EU)
|
||||
- [Spektrum Dxe Controller](http://www.spektrumrc.com/Products/Default.aspx?ProdId=SPM1000) or other PX4-compatible remotes
|
||||
- [Spektrum Quad Race Serial Receiver w/Diversity](http://www.spektrumrc.com/Products/Default.aspx?ProdID=SPM4648)
|
||||
- [PX4Flow](../sensor/px4flow.md) (Deprecated)
|
||||
|
||||
### 조립
|
||||
|
||||
The assembly consists of a wooden frame on which all the autopilot parts were attached.
|
||||
Tests showed that a better vibration insulation should be used, especially for the Pixhawk and the Flow module.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
For this particular mounting we chose to use the clip supplied with the rover to attach the upper plate.
|
||||
For this, two supports were 3D printed.
|
||||
The CAD files are provided [here](https://github.com/PX4/PX4-user_guide/raw/main/assets/airframes/rover/traxxas_stampede_vxl/plane_holders.zip).
|
||||
|
||||
:::warning
|
||||
It is **HIGHLY RECOMMENDED** to set the ESC in training mode (see Traxxas Stampede Manual), which reduces power to 50%.
|
||||
:::
|
||||
|
||||
### Output Connections
|
||||
|
||||
| PWM Output | 액추에이터 |
|
||||
| ---------- | --------------------------------------- |
|
||||
| MAIN2 | Steering servo |
|
||||
| MAIN4 | Throttle (ESC input) |
|
||||
|
||||
### 설정
|
||||
|
||||
Rovers are configured using _QGroundControl_ in the same way as any other vehicle.
|
||||
|
||||
The main rover-specific configuration is setting the correct frame:
|
||||
|
||||
1. Switch to the [Basic Configuration](../config/index.md) section in _QGroundControl_
|
||||
2. Select the [Airframe](../config/airframe.md) tab.
|
||||
3. Scroll down the list to find the **Rover** icon.
|
||||
4. Choose **Traxxas stampede vxl 2wd** from the drop down list.
|
||||
|
||||

|
||||
|
||||
### 사용법
|
||||
|
||||
At the current time, PX4 only supports Mission and Manual modes when a RC remote is connected.
|
||||
To use the mission mode, first upload a new mission to the vehicle with QGC. Then, BEFORE ARMING, select `MISSION` and then arm.
|
||||
|
||||
:::warning
|
||||
It is very important to do a mission composed \*only\*\* of normal waypoints (i.e. no takeoff waypoints etc.) and it is crucial to set the waypoint height of \*\*every\*\* waypoint to 0 for correct execution.
|
||||
Failing to do so will cause the rover to continuously spin around a waypoint.
|
||||
:::
|
||||
|
||||
A correct mission setup looks as follows:
|
||||
|
||||

|
||||
|
||||
## 비디오
|
||||
|
||||
<iframe width="740" height="416" src="https://www.youtube.com/embed/N3HvSKS3nCw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
Reference in New Issue
Block a user