docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#27434)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
This commit is contained in:
PX4 Build Bot
2026-05-22 11:59:00 +10:00
committed by GitHub
parent a5759d891a
commit 681fe32aa4
29 changed files with 793 additions and 253 deletions
+4 -2
View File
@@ -454,7 +454,10 @@
- [Position Tuning](config_rover/position_tuning.md)
- [Apps & API](flight_modes_rover/api.md)
- [Complete Vehicles](complete_vehicles_rover/index.md)
- [Aion Robotics R1](complete_vehicles_rover/aion_r1.md)
- [Hiwonder Ackermann Chassis](complete_vehicles_rover/hiwonder_ackermann.md)
- [Hiwonder Tracked Chassis](complete_vehicles_rover/hiwonder_tracked.md)
- [Hiwonder Mecanum Chassis](complete_vehicles_rover/hiwonder_mecanum.md)
- [Aion Robotics R1 (Discontinued)](complete_vehicles_rover/aion_r1.md)
- [Submarines (experimental)](frames_sub/index.md)
- [BlueROV2](frames_sub/bluerov2.md)
- [机架参考](airframes/airframe_reference.md)
@@ -914,7 +917,6 @@
- [Integration Testing](test_and_ci/integration_testing.md)
- [MAVSDK集成测试](test_and_ci/integration_testing_mavsdk.md)
- [PX4 ROS2 Interface Library Integration Testing](test_and_ci/integration_testing_px4_ros2_interface.md)
- [ROS 1 Integration Testing](test_and_ci/integration_testing_ros1_mavros.md)
- [Docker 容器](test_and_ci/docker.md)
- [维护](test_and_ci/maintenance.md)
+20 -2
View File
@@ -15,7 +15,7 @@ RTK是使用导航信号的载波相位来进行测距的,而不是使用导
PX4 配置 RTK 需要两个 RTK GPS 模块和一个数传。
The fixed-position ground-based GPS unit is called the _Base_ and the in-air unit is called the _Rover_.
The Base unit connects to _QGroundControl_ (via USB) and uses the datalink to stream RTCM corrections to the vehicle (using the MAVLink [GPS_RTCM_DATA](https://mavlink.io/en/messages/common.html#GPS_RTCM_DATA) message).
在自驾仪上,MAVLink消息包被解包得到RTCM的修正信息,并把这些信息发送给移动站,移动站结合修正信息最终解算得到 RTK 解。
On the autopilot, `GPS_RTCM_DATA` packets are reassembled according to the MAVLink fragment and sequence fields before the RTCM byte stream is forwarded to the Rover unit, where it is processed to get the RTK solution.
The datalink should typically be able to handle an uplink rate of 300 bytes per second (see the [Uplink Datarate](#uplink-datarate) section below for more information).
@@ -32,7 +32,7 @@ Most devices come with two variants, a base and a rover.
The PX4 GPS stack automatically sets up the GPS modules to send and receive the correct messages over the UART or USB, depending on where the module is connected (to _QGroundControl_ or the autopilot).
As soon as the autopilot receives `GPS_RTCM_DATA` MAVLink messages, it automatically forwards the RTCM data to the attached GPS module over existing data channels (a dedicated channel for correction data is not required).
As soon as the autopilot receives `GPS_RTCM_DATA` MAVLink messages, it reassembles fragmented packets when needed and then forwards the RTCM data to the attached GPS module over existing data channels (a dedicated channel for correction data is not required).
:::info
The u-blox U-Center RTK module configuration tool is not needed/used!
@@ -43,6 +43,24 @@ Both _QGroundControl_ and the autopilot firmware share the same [PX4 GPS driver
实际上,这意味着只需要将新协议和/或消息添加到一个地方。
:::
### GPS_RTCM_DATA handling
If you are sending RTCM corrections to PX4 yourself, follow the MAVLink [`GPS_RTCM_DATA`](https://mavlink.io/en/messages/common.html#GPS_RTCM_DATA) definition:
- Each MAVLink packet carries up to 180 bytes of RTCM data.
- If the RTCM payload exceeds 180 bytes, split it across up to 4 packets using the Fragment ID and Sequence ID (encoded in `GPS_RTCM_DATA.flags`).
Every packet except the last one must be filled to its maximum 180-byte capacity; only the final packet may be partially filled.
- PX4 reassembles fragmented packets according to the MAVLink rules and supports out-of-order delivery for one in-progress fragmented message at a time.
- A fragmented message is considered complete when either 4 fragments with the same Sequence ID have been received, or when you receive a partial fragment and you have already recieved all the fully-packed fragments that precede it (by Fragment ID) in the current sequence.
- If the RTCM payload length is an exact multiple of 180 bytes and uses fewer than 4 fragments, the sender must still send a final zero-length fragment to mark completion. A 720-byte payload (all 4 fragments full) is complete after the last fragment is received.
- As a compatibility fallback for older QGroundControl builds that omit that final zero-length fragment, PX4 also flushes a buffered RTCM message to the GNSS when a `GPS_RTCM_DATA` message with a different Sequence ID arrives, but only if the buffered fragments are a gap-free run of full 180-byte fragments starting at fragment 0.
Current limitations:
- PX4 keeps only one in-progress fragmented `GPS_RTCM_DATA` message at a time. A packet with a different `sequence_id` starts a new buffer.
- Stale partial state is dropped after 1 second if the rest of the fragments do not arrive.
- The legacy exact-multiple compatibility fallback only works if another `sequence_id` arrives before that 1 second timeout. Otherwise the buffered partial message is dropped.
### RTCM 报文
QGroundControl 配置RTK 基地站输出以下 RTCM3.2 帧, 每个帧均为 1 Hz, 除非另有说明:
+12
View File
@@ -611,6 +611,10 @@ div.frame_variant td, div.frame_variant th {
<td><a href="https://docs.px4.io/main/en/complete_vehicles_rover/aion_r1">Aion Robotics R1 UGV</a></td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 50001</p></td>
</tr>
<tr id="rover_rover_hiwonder_tracked">
<td><a href="https://www.hiwonder.com/products/suspended-shock-absorbing-tracked-chassis?variant=40378709835863">Hiwonder Tracked</a></td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 50002</p></td>
</tr>
<tr id="rover_rover_generic_rover_ackermann">
<td>Generic Rover Ackermann</td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 51000</p></td>
@@ -623,10 +627,18 @@ div.frame_variant td, div.frame_variant th {
<td>NXP B3RB Rover Ackermann</td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 51002</p></td>
</tr>
<tr id="rover_rover_hiwonder_ackermann">
<td><a href="https://www.hiwonder.com/products/ackermann-steering-chassis?variant=40382428348503">Hiwonder Ackermann</a></td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 51003</p></td>
</tr>
<tr id="rover_rover_generic_rover_mecanum">
<td>Generic Rover Mecanum</td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 52000</p></td>
</tr>
<tr id="rover_rover_hiwonder_mecanum">
<td><a href="https://www.hiwonder.com/products/large-metal-4wd-vehicle-chassis-green">Hiwonder Mecanum</a></td>
<td>Maintainer: John Doe &lt;john@example.com&gt;<p><code>SYS_AUTOSTART</code> = 52001</p></td>
</tr>
</tbody>
</table>
</div>
@@ -0,0 +1,125 @@
# Hiwonder Ackermann
<Badge type="tip" text="PX4 v1.18" />
The [Hiwonder Ackermann](https://www.hiwonder.com/products/ackermann-steering-chassis?variant=40382428348503) rover is a bare-bones platform including a chassis, four wheels, two [motors with encoders](https://www.hiwonder.com/products/hall-encoder-dc-geared-motor?variant=40451123675223), a servo and a [motor driver board](https://www.hiwonder.com/products/4-channel-encoder-motor-driver).
The chassis offers many mounting points, providing the flexibility to attach your own flight controller, sensors and other payload.
This documentation illustrates the setup of the rover and the configuration of the actuators.
![Hiwonder Ackermann](../../assets/airframes/rover/hiwonder_rovers/hiwonder_ackermann.png)
## 配件列表
:::tip
The hardware below is just an example — use whatever you have available.
Make sure all parts are compatible with your flight controller's ports, and adjust the wiring as needed.
Alternatives are listed in:
- [Flight Controllers](../flight_controller/index.md)
- [PX4-Compatible Receivers](../getting_started/rc_transmitter_receiver.md#px4-compatible-receivers-compatible_receivers)
- [Data Links](../data_links/index.md)
- [Global Navigation Satellite Systems (GNSS)](../gps_compass/index.md#supported-gnss) or [RTK GNSS](../gps_compass/rtk_gps.md)
:::
The following parts are used in this build:
- Frame: [Hiwonder Ackermann Chassis](https://www.hiwonder.com/products/ackermann-steering-chassis?variant=40382428348503)
- Flight Controller: [Auterion Skynode S](https://auterion.com/product/skynode-s/)
::: info
The flight controller and motor driver board used in this build are both directly supplied at the same 3S battery voltage (~11V).
Many flight controllers require a lower voltage power supply, so if you are using a different controller you may need a DC-to-DC converter to power it from the battery — see [Power Modules & Power Distribution Boards](../power_module/index.md).
:::
- Receiver: [TBS Crossfire Nano RX](https://www.team-blacksheep.com/products/prod:crossfire_nano_rx?srsltid=AfmBOopvPF1mhPRIS11amSwdKf4OFZlt2ibj7XJwu05kVWt4S_L-ZNuD)
- Power: 3S Lipo Battery
- Dc-to-Dc Converter: [BEC12S-PRO](https://www.mateksys.com/?portfolio=bec12s-pro).
The servo needs to be supplied with 6-8.4V (and with a current rating of higher than 3A).
This Dc-to-Dc converted is needed to transform the voltage from the 3S battery to this range.
- GNSS: [Holybro RTK F9P GPS](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md)
- I2C Splitter
::: info
This part is only necessary if your flight controller has only one I2C port (we need one for the motor driver board and one for the compass in the GNSS module).
Many boards will have a dedicated GPS port (which often includes an I2C port) and one or more separate I2C ports for additional peripherals.
:::
- LTE Dongle: Used to establish a data link between the vehicle and the ground control station.
## Wiring and Assembly
The following images shows the wiring of the various components of this build.
The connections from the motors to the motor controller board are not shown.
![Hiwonder Wiring](../../assets/airframes/rover/hiwonder_rovers/hiwonder_wiring_annotated.png)
:::info
This image only serves as an example for the wiring process, with your hardware this can look very different.
Check the documentation of your parts to ensure that you connect to correct pins.
:::
Now connect the battery to the Dc-to-Dc converter to give it power.
To power the servo, connect the red (6-8.4V) and black (GND) wire to the output of the DC-to-Dc converter and the white (PWM) wire to a PWM output of your flight controller.
![Hiwonder Ackermann Servo Wiring](../../assets/airframes/rover/hiwonder_rovers/hiwonder_ackermann_wiring_annotated.png)
With the wiring complete, you can now securely attach your hardware to the chassis.
:::tip
For the initial build you might attach components using double sided tape.
For a longer term solution we highly recommend 3d printing mounts that you attach to the chassis using the mounting points.
:::
## Building the Firmware
This frame works with the usual Rover firmware variants on most flight controllers.
You can use either prebuilt versions or build the firmware yourself (see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build) and [Building Rover](../config_rover/index.md#building-rover) in _Rover Configuration/Tuning_).
A few boards may omit the [`hiwonder_emm` driver](../modules/modules_driver.md#hiwonder_emm) for the [Hiwonder 4-Channel Encoder Motor Module](../peripherals/hiwonder_emm.md) used by this vehicle.
If your board does not ship with it you will need a custom build — see [Hiwonder 4-Channel Encoder Motor Module > Building the Firmware](../peripherals/hiwonder_emm.md#building-the-firmware) for instructions.
## PX4 配置
Use _QGroundControl_ for rover configuration:
1. [Flash the rover build](../config_rover/index.md#flashing-the-rover-build) onto your flight controller with the following adjustments:
2. In the [Basic Configuration](../config/index.md) section, select the [Airframe](../config/airframe.md) tab.
3. Choose **Hiwonder Ackermann** under the **Rover** category (Alternatively you can set the parameter `SYS_AUTOSTART` to `51003`).
Then configure the actuators:
1. Navigate to [Actuators Configuration & Testing](../config/actuators.md) in QGroundControl.
2. Select the Hiwonder EMM driver from the list of _Actuator Outputs_.
Assign the two populated channels of the motor controller board to `Throttle`.
The channels are noted on the motor controller board (alternatively randomly assign the channels and use the actuator testing tab to find the correct assignments).
![Motor Setup](../../assets/airframes/rover/hiwonder_rovers/hiwonder_ackermann_motors.png)
3. Now ensure that both motors are spinning in the same direction.
If that is not the case check the `Rev Range` box on one of the motors.
4. Arm the rover in [Manual Mode](../flight_modes_rover/manual.md#manual-mode) and use the trottle stick to drive forwards.
If the rover drives backwards instead, invert the `Rev Range` checkboxes on **both** motors.
5. To configure the servo motor, assign the populated PWM channel to `Steering`.
Set the minimum value to `800`, the maximum to `2200` and the disarm value to `1500`.
![Servo Setup](../../assets/airframes/rover/hiwonder_rovers/hiwonder_ackermann_servo.png)
6. Arm the rover in [Manual Mode](../flight_modes_rover/manual.md#manual-mode) and use the steering stick to move the servo.
If the rover steers in the wrong direction check the `Rev Range` checkbox of the servo.
You have now successfully setup your rover and can start testing all [driving modes](../flight_modes_rover/index.md) PX4 has to offer!
@@ -0,0 +1,106 @@
# Hiwonder Mecanum
<Badge type="tip" text="PX4 v1.18" />
The [Hiwonder Mecanum](https://www.hiwonder.com/products/large-metal-4wd-vehicle-chassis-green) rover is a bare-bones platform including a chassis, four [mecanum wheels](https://www.hiwonder.com/products/97mm-mecanum-wheel), four [motors with encoders](https://www.hiwonder.com/products/hall-encoder-dc-geared-motor?variant=40451123675223) and a [motor driver board](https://www.hiwonder.com/products/4-channel-encoder-motor-driver).
The chassis offers many mounting points, providing the flexibility to attach your own flight controller, sensors and other payload.
This documentation illustrates the setup of the rover and the configuration of the actuators.
![Hiwonder Mecanum](../../assets/airframes/rover/hiwonder_rovers/hiwonder_mecanum.png)
## 配件列表
:::tip
The hardware below is just an example — use whatever you have available.
Make sure all parts are compatible with your flight controller's ports, and adjust the wiring as needed.
Alternatives are listed in:
- [Flight Controllers](../flight_controller/index.md)
- [PX4-Compatible Receivers](../getting_started/rc_transmitter_receiver.md#px4-compatible-receivers-compatible_receivers)
- [Data Links](../data_links/index.md)
- [Global Navigation Satellite Systems (GNSS)](../gps_compass/index.md#supported-gnss) or [RTK GNSS](../gps_compass/rtk_gps.md)
:::
The following parts are used in this build:
- Frame: [Hiwonder Mecanum Chassis](https://www.hiwonder.com/products/large-metal-4wd-vehicle-chassis-green)
- Flight Controller: [Auterion Skynode S](https://auterion.com/product/skynode-s/)
::: info
The flight controller and motor driver board used in this build are both directly supplied at the same 3S battery voltage (~11V).
Many flight controllers require a lower voltage power supply, so if you are using a different controller you may need a DC-to-DC converter to power it from the battery — see [Power Modules & Power Distribution Boards](../power_module/index.md).
:::
- Receiver: [TBS Crossfire Nano RX](https://www.team-blacksheep.com/products/prod:crossfire_nano_rx?srsltid=AfmBOopvPF1mhPRIS11amSwdKf4OFZlt2ibj7XJwu05kVWt4S_L-ZNuD)
- Power: 3S Lipo Battery
- GNSS: [Holybro RTK F9P GPS](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md)
- I2C Splitter
::: info
This part is only necessary if your flight controller has only one I2C port (we need one for the motor driver board and one for the compass in the GNSS module).
Many boards will have a dedicated GPS port (which often includes an I2C port) and one or more separate I2C ports for additional peripherals.
:::
- LTE Dongle: Used to establish a data link between the vehicle and the ground control station.
## Wiring and Assembly
The following images shows the wiring of the various components of this build.
The connections from the motors to the motor controller board are not shown.
![Hiwonder Wiring](../../assets/airframes/rover/hiwonder_rovers/hiwonder_wiring_annotated.png)
:::info
This image only serves as an example for the wiring process, with your hardware this can look very different.
Check the documentation of your parts to ensure that you connect to correct pins.
:::
To assemble your rover connect the motors to the chassis using the supplied screws, mount the wheels to the motor shafts (there are 2 different types of mecanum wheels, make sure you mount them to the correct motor!) and securely attach your hardware.
:::tip
For the initial build you might attach components using double sided tape.
For a longer term solution we highly recommend 3d printing mounts that you attach to the chassis using the mounting points.
:::
## Building the Firmware
This frame works with the usual Rover firmware variants on most flight controllers.
You can use either prebuilt versions or build the firmware yourself (see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build) and [Building Rover](../config_rover/index.md#building-rover) in _Rover Configuration/Tuning_).
A few boards may omit the [`hiwonder_emm` driver](../modules/modules_driver.md#hiwonder_emm) for the [Hiwonder 4-Channel Encoder Motor Module](../peripherals/hiwonder_emm.md) used by this vehicle.
If your board does not ship with it you will need a custom build — see [Hiwonder 4-Channel Encoder Motor Module > Building the Firmware](../peripherals/hiwonder_emm.md#building-the-firmware) for instructions.
## PX4 配置
Use _QGroundControl_ for rover configuration:
1. [Flash the rover build](../config_rover/index.md#flashing-the-rover-build) onto your flight controller with the following adjustments:
2. In the [Basic Configuration](../config/index.md) section, select the [Airframe](../config/airframe.md) tab.
3. Choose **Hiwonder Mecanum** under the **Rover** category (Alternatively you can set the parameter `SYS_AUTOSTART` to `52001`).
Then configure the actuators:
1. Navigate to [Actuators Configuration & Testing](../config/actuators.md) in QGroundControl.
2. Select the Hiwonder EMM driver from the list of _Actuator Outputs_.
Assign the channels to the corresponding motor.
The channels are noted on the motor controller board (alternatively randomly assign the channels and use the actuator testing tab to find the correct assignments).
Now ensure that the motors are all spinning in the same direction.
If that is not the case check the `Rev Range` box on the ones that are spinning in the opposite direction.
![Motor Setup](../../assets/airframes/rover/hiwonder_rovers/hiwonder_mecanum_motors.png)
3. Arm the rover in [Manual Mode](../flight_modes_rover/manual.md#manual-mode) and use the trottle stick to drive forwards.
If the rover drives backwards instead, invert the `Rev Range` checkboxes on **all** motors.
You have now successfully setup your rover and can start testing all [driving modes](../flight_modes_rover/index.md) PX4 has to offer!
@@ -0,0 +1,104 @@
# Hiwonder Tracked
<Badge type="tip" text="PX4 v1.18" />
The [Hiwonder Tracked](https://www.hiwonder.com/products/suspended-shock-absorbing-tracked-chassis?variant=40378709835863) rover is a bare-bones platform including a chassis, two tracks, two [motors with encoders](https://www.hiwonder.com/products/hall-encoder-dc-geared-motor?variant=40451123675223) and a [motor driver board](https://www.hiwonder.com/products/4-channel-encoder-motor-driver).
The chassis offers many mounting points, providing the flexibility to attach your own flight controller, sensors and other payload.
This documentation illustrates the setup of the rover and the configuration of the actuators.
![Hiwonder Tracked](../../assets/airframes/rover/hiwonder_rovers/hiwonder_tracked.png)
## 配件列表
:::tip
The hardware below is just an example — use whatever you have available.
Make sure all parts are compatible with your flight controller's ports, and adjust the wiring as needed.
Alternatives are listed in:
- [Flight Controllers](../flight_controller/index.md)
- [PX4-Compatible Receivers](../getting_started/rc_transmitter_receiver.md#px4-compatible-receivers-compatible_receivers)
- [Data Links](../data_links/index.md)
- [Global Navigation Satellite Systems (GNSS)](../gps_compass/index.md#supported-gnss) or [RTK GNSS](../gps_compass/rtk_gps.md)
:::
The following parts are used in this build:
- Frame: [Hiwonder Tracked Chassis](https://www.hiwonder.com/products/suspended-shock-absorbing-tracked-chassis?variant=40378709835863)
- Flight Controller: [Auterion Skynode S](https://auterion.com/product/skynode-s/)
::: info
The flight controller and motor driver board used in this build are both directly supplied at the same 3S battery voltage (~11V).
Many flight controllers require a lower voltage power supply, so if you are using a different controller you may need a DC-to-DC converter to power it from the battery — see [Power Modules & Power Distribution Boards](../power_module/index.md).
:::
- Receiver: [TBS Crossfire Nano RX](https://www.team-blacksheep.com/products/prod:crossfire_nano_rx?srsltid=AfmBOopvPF1mhPRIS11amSwdKf4OFZlt2ibj7XJwu05kVWt4S_L-ZNuD)
- Power: 3S Lipo Battery
- GNSS: [Holybro RTK F9P GPS](../gps_compass/rtk_gps_holybro_h-rtk-f9p.md)
- I2C Splitter
::: info
This part is only necessary if your flight controller has only one I2C port (we need one for the motor driver board and one for the compass in the GNSS module).
Many boards will have a dedicated GPS port (which often includes an I2C port) and one or more separate I2C ports for additional peripherals.
:::
- LTE Dongle: Used to establish a data link between the vehicle and the ground control station.
## Wiring and Assembly
The following images shows the wiring of the various components of this build.
The connections from the motors to the motor controller board are not shown.
![Hiwonder Wiring](../../assets/airframes/rover/hiwonder_rovers/hiwonder_wiring_annotated.png)
:::info
This image only serves as an example for the wiring process, with your hardware this can look very different.
Check the documentation of your parts to ensure that you connect to correct pins.
:::
With the wiring complete, you can now securely attach your hardware to the chassis.
:::tip
For the initial build you might attach components using double sided tape.
For a longer term solution we highly recommend 3d printing mounts that you attach to the chassis using the mounting points.
:::
## Building the Firmware
This frame works with the usual Rover firmware variants on most flight controllers.
You can use either prebuilt versions or build the firmware yourself (see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build) and [Building Rover](../config_rover/index.md#building-rover) in _Rover Configuration/Tuning_).
A few boards may omit the [`hiwonder_emm` driver](../modules/modules_driver.md#hiwonder_emm) for the [Hiwonder 4-Channel Encoder Motor Module](../peripherals/hiwonder_emm.md) used by this vehicle.
If your board does not ship with it you will need a custom build — see [Hiwonder 4-Channel Encoder Motor Module > Building the Firmware](../peripherals/hiwonder_emm.md#building-the-firmware) for instructions.
## PX4 配置
Use _QGroundControl_ for rover configuration:
1. [Flash your custom rover build](../config_rover/index.md#flashing-the-rover-build) onto your flight controller.
2. In the [Basic Configuration](../config/index.md) section, select the [Airframe](../config/airframe.md) tab.
3. Choose **Hiwonder Tracked** under the **Rover** category (Alternatively you can set the parameter `SYS_AUTOSTART` to `50002`).
Then configure the actuators:
1. Navigate to [Actuators Configuration & Testing](../config/actuators.md) in QGroundControl.
2. Select the Hiwonder EMM driver from the list of _Actuator Outputs_.
Assign one of the populated channels of the motor controller board to the `Left Motor` and one to the `Right Motor`. The channels are noted on the motor controller board (alternatively randomly assign the channels and use the actuator testing tab to find the correct assignments).
Now ensure that both motors are spinning in the same direction. If that is not the case check the `Rev Range` box on one of the motors.
![Motor Setup](../../assets/airframes/rover/hiwonder_rovers/hiwonder_tracked_motors.png)
3. Arm the rover in [Manual Mode](../flight_modes_rover/manual.md#manual-mode) and use the trottle stick to drive forwards.
If the rover drives backwards instead, invert the `Rev Range` checkboxes on **both** motors.
You have now successfully setup your rover and can start testing all [driving modes](../flight_modes_rover/index.md) PX4 has to offer!
+13 -2
View File
@@ -1,5 +1,16 @@
# Complete Vehicles (Rover)
This section contains information about fully assembled vehicles that use PX4:
The following guides exemplify the build process for various hardware setups and can be used as reference for your own rover:
1. [Aion Robotics R1 UGV (Differential Rover)](../complete_vehicles_rover/aion_r1.md)
## Ackermann
1. [Hiwonder Ackermann Chassis](../complete_vehicles_rover/hiwonder_ackermann.md)
## Differential
1. [Hiwonder Tracked Chassis](../complete_vehicles_rover/hiwonder_tracked.md)
2. [(Discontinued) Aion Robotics R1 UGV](../complete_vehicles_rover/aion_r1.md)
## Mecanum
1. [Hiwonder Mecanum Chassis](../complete_vehicles_rover/hiwonder_mecanum.md)
+2 -2
View File
@@ -30,7 +30,7 @@ To install PX4:
:::
4. Select the **PX4 Pro Stable Release vX.x.x** option to install the latest stable version of PX4 _for your flight controller_ (autodetected).
4. Select the **PX4 Stable Release vX.x.x** option to install the latest stable version of PX4 _for your flight controller_ (autodetected).
![Install PX4 default](../../assets/qgc/setup/firmware/firmware_connected_default_px4.png)
@@ -56,7 +56,7 @@ Next you will need to specify the [vehicle airframe](../config/airframe.md) (and
To install a different version of PX4:
1. Connect the vehicle as above, and select **PX4 Pro Stable Release vX.x.x**.
1. Connect the vehicle as above, and select **PX4 Stable Release vX.x.x**.
![Install PX4 version](../../assets/qgc/setup/firmware/qgc_choose_firmware.png)
2. Check **Advanced settings** and select the version from the dropdown list:
- **Standard Version (stable):** The default version (i.e. no need to use advanced settings to install this!)
+10
View File
@@ -280,6 +280,16 @@ The failsafe action and arming behaviour are both configured by the `COM_ARM_ODI
| ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="COM_ARM_ODID"></a>[COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) | Remote ID arming check and in-flight failsafe. `0`: Disabled (default), `1`: Warning only, `2`: Error only (prevents arming), `3`: Return, `4`: Land, `5`: Terminate.<br><br>On failsafe:<br>- `Error`, `Return`, `Land` and `Terminate` prevent arming.<br>- `Return`, `Land` and `Terminate` start the associated action/mode when airborne. |
## Parachute Health Failsafe
<Badge type="tip" text="PX4 v1.18" />
The parachute health failsafe is triggered when a [MAVLink parachute](../peripherals/parachute.md) system is missing or unhealthy while the vehicle is armed or airborne.
| 参数 | 描述 |
| ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <a id="COM_PARACHUTE"></a>[COM_PARACHUTE](../advanced_config/parameter_reference.md#COM_PARACHUTE) | Parachute system monitoring and failsafe action.<br>`0`: Disabled (default), `1`: [Warning](#act_warn), `2`: [Return](#act_return), `3`: [Land](#act_land).<br><br>- Everything but `Disabled` prevents arming with a failing check.<br>- [Return](#act_return) and [Land](#act_land) start the associated action when a failure happens in-flight. |
## Quad-chute Failsafe
Failsafe for when a VTOL vehicle can no longer fly in fixed-wing mode, perhaps due to the failure of a pusher motor, airspeed sensor, or control surface.
+7 -7
View File
@@ -76,13 +76,13 @@ You might have to adjust the per-motor pole count (`DSHOT_MOT_POL1``DSHOT_MOT
The following parameters should be set to enable and configure dynamic notch filters:
| 参数 | 描述 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="IMU_GYRO_DNF_EN"></a>[IMU_GYRO_DNF_EN](../advanced_config/parameter_reference.md#IMU_GYRO_DNF_EN) | Enable IMU gyro dynamic notch filtering. `0`: ESC RPM, `1`: Onboard FFT. |
| <a id="IMU_GYRO_FFT_EN"></a>[IMU_GYRO_FFT_EN](../advanced_config/parameter_reference.md#IMU_GYRO_FFT_EN) | Enable onboard FFT (required if `IMU_GYRO_DNF_EN` is set to `1`). |
| <a id="IMU_GYRO_DNF_MIN"></a>[IMU_GYRO_DNF_MIN](../advanced_config/parameter_reference.md#IMU_GYRO_DNF_MIN) | Minimum dynamic notch frequency in Hz. |
| <a id="IMU_GYRO_DNF_BW"></a>[IMU_GYRO_DNF_BW](../advanced_config/parameter_reference.md#IMU_GYRO_DNF_BW) | Bandwidth for each notch filter in Hz. |
| <a id="IMU_GYRO_DNF_HMC"></a>[IMU_GYRO_DNF_HMC](../advanced_config/parameter_reference.md#IMU_GYRO_NF0_BW) | Number of harmonics to filter. |
| 参数 | 描述 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="IMU_GYRO_DNF_EN"></a>[IMU_GYRO_DNF_EN](../advanced_config/parameter_reference.md#IMU_GYRO_DNF_EN) | Enable IMU gyro dynamic notch filtering (bitmask). Bit `0`: ESC RPM, Bit `1`: Onboard FFT. |
| <a id="IMU_GYRO_FFT_EN"></a>[IMU_GYRO_FFT_EN](../advanced_config/parameter_reference.md#IMU_GYRO_FFT_EN) | Enable onboard FFT (required if bit `1` of `IMU_GYRO_DNF_EN` is set). |
| <a id="IMU_GYRO_DNF_MIN"></a>[IMU_GYRO_DNF_MIN](../advanced_config/parameter_reference.md#IMU_GYRO_DNF_MIN) | Minimum dynamic notch frequency in Hz. |
| <a id="IMU_GYRO_DNF_BW"></a>[IMU_GYRO_DNF_BW](../advanced_config/parameter_reference.md#IMU_GYRO_DNF_BW) | Bandwidth for each notch filter in Hz. |
| <a id="IMU_GYRO_DNF_HMC"></a>[IMU_GYRO_DNF_HMC](../advanced_config/parameter_reference.md#IMU_GYRO_NF0_BW) | Number of harmonics to filter. |
### Low-pass Filter
+7 -6
View File
@@ -13,7 +13,7 @@ Unlike for other vehicle types you will need to install it as custom firmware.
For more information see [Flashing the Rover Build](../config_rover/index.md#flashing-the-rover-build).
:::
![Rovers](../../assets/airframes/rover/rovers.png)
![Rovers](../../assets/airframes/rover/hiwonder_rovers/hiwonder_rovers.png)
PX4 provides support for the three most common types of rovers:
@@ -32,12 +32,12 @@ The supported frames can be seen in [Airframes Reference > Rover](../airframes/a
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.
![Ackermann rover](../../assets/airframes/rover/hiwonder_rovers/hiwonder_ackermann.png)
:::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/axial_trail_honcho.png)
## Differential
<Badge type="tip" text="PX4 v1.16" /> <Badge type="warning" text="Experimental" />
@@ -46,7 +46,7 @@ A differential rover's motion is controlled using a differential drive mechanism
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)
![Tracked Rover](../../assets/airframes/rover/hiwonder_rovers/hiwonder_tracked.png)
:::info
The differential setup also work for rovers with skid or tank steering.
@@ -56,10 +56,11 @@ The differential setup also work for rovers with skid or tank steering.
<Badge type="tip" text="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.
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.
![Mecanum rover](../../assets/airframes/rover/rover_mecanum.png)
![Mecanum rover](../../assets/airframes/rover/hiwonder_rovers/hiwonder_mecanum.png)
## 另见
+188 -188
View File
@@ -96,210 +96,210 @@ They are not build into the module, and hence are neither published or subscribe
:::details
See messages
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [Event](../msg_docs/Event.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [LedControl](../msg_docs/LedControl.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [RegisterExtComponentRequestV1](../msg_docs/RegisterExtComponentRequestV1.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [InputRc](../msg_docs/InputRc.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [EscReport](../msg_docs/EscReport.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [RangingBeacon](../msg_docs/RangingBeacon.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [VehicleStatusV3](../msg_docs/VehicleStatusV3.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [LedControl](../msg_docs/LedControl.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [EstimatorFusionControl](../msg_docs/EstimatorFusionControl.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [VehicleStatusV3](../msg_docs/VehicleStatusV3.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [EscReport](../msg_docs/EscReport.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [Ping](../msg_docs/Ping.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [EventV0](../msg_docs/EventV0.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [Vtx](../msg_docs/Vtx.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [Gripper](../msg_docs/Gripper.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [Rpm](../msg_docs/Rpm.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [Ping](../msg_docs/Ping.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [EstimatorFusionControl](../msg_docs/EstimatorFusionControl.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [Mission](../msg_docs/Mission.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [RangingBeacon](../msg_docs/RangingBeacon.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [Vtx](../msg_docs/Vtx.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [InputRc](../msg_docs/InputRc.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [RegisterExtComponentRequestV1](../msg_docs/RegisterExtComponentRequestV1.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [Gripper](../msg_docs/Gripper.md)
- [Rpm](../msg_docs/Rpm.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [Event](../msg_docs/Event.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [EventV0](../msg_docs/EventV0.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [Mission](../msg_docs/Mission.md)
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
:::
-5
View File
@@ -104,11 +104,6 @@ To start the agent with settings for connecting to the uXRCE-DDS client running
micro-xrce-dds-agent udp4 -p 8888
```
:::info
At time of writing the stable of version installed from snap connects to PX4 but reports errors creating topics.
The development version, fetched using `--edge` above, does work.
:::
### Build/Run within ROS 2 Workspace
The agent can be built and launched within a ROS 2 workspace (or build standalone and launched from a workspace).
+17 -6
View File
@@ -438,7 +438,16 @@ Source: [drivers/hiwonder_emm](https://github.com/PX4/PX4-Autopilot/tree/main/sr
### 描述
Hiwonder encoder motor module driver for PX4.
I2C driver for the Hiwonder 4-Channel Encoder Motor Module (EMM), a small motor controller that drives up to
four brushed DC motors with on-board encoder feedback. Communicates with the EMM on the first external I2C
bus at address 0x34.
To use this driver, the board configuration must include `CONFIG_DRIVERS_HIWONDER_EMM=y` so the driver is
compiled into the firmware. At runtime, the driver is enabled by setting the `HIWONDER_EMM_EN` parameter to
`1` and reboot. It is then started automatically by the rover startup script (`rc.rover`) for ackermann, differential,
and mecanum rover airframes.
The command to start this driver manually is: `$ hiwonder_emm start`
### Usage {#hiwonder_emm_usage}
@@ -802,7 +811,7 @@ msp_osd <command> [arguments...]
channel Change VTX channel
```
## newpixel
## neopixel
Source: [drivers/lights/neopixel](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/neopixel)
@@ -820,10 +829,10 @@ neopixel -n 8
To drive all available leds.
### Usage {#newpixel_usage}
### Usage {#neopixel_usage}
```
newpixel <command> [arguments...]
neopixel <command> [arguments...]
Commands:
stop
@@ -1084,7 +1093,7 @@ px4io <command> [arguments...]
## rgbled
Source: [drivers/lights/rgbled](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled)
Source: [drivers/lights/rgbled_ncp5623c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled_ncp5623c)
### Usage {#rgbled_usage}
@@ -1099,7 +1108,9 @@ rgbled <command> [arguments...]
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 85
default: 57
[-o <val>] RGB PWM Assignment
default: 123
stop
@@ -29,8 +29,6 @@ afbrs50 <command> [arguments...]
Commands:
start Start driver
-d <val> Serial device
[-r <val>] Sensor rotation - downward facing by default
default: 25
stop Stop driver
```
@@ -1,5 +1,31 @@
# Modules Reference: Magnetometer (Driver)
## af9838
Source: [drivers/magnetometer/voltafield/af9838](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/magnetometer/voltafield/af9838)
### Usage {#af9838_usage}
```
af9838 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 12
[-R <val>] Rotation
default: 0
stop
status print status info
```
## ak09916
Source: [drivers/magnetometer/akm/ak09916](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/magnetometer/akm/ak09916)
@@ -26,6 +52,32 @@ ak09916 <command> [arguments...]
status print status info
```
## ak09940a
Source: [drivers/magnetometer/akm/ak09940a](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/magnetometer/akm/ak09940a)
### Usage {#ak09940a_usage}
```
ak09940a <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 12
[-R <val>] Rotation
default: 0
stop
status print status info
```
## ak8963
Source: [drivers/magnetometer/akm/ak8963](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/magnetometer/akm/ak8963)
@@ -17,6 +17,8 @@ crsf_rc <command> [arguments...]
[-d <val>] RC device
values: <file:dev>, default: /dev/ttyS3
bind Send a CRSF bind command (not available on singlewire)
inject Inject frame data bytes (for testing)
stop
+6
View File
@@ -131,6 +131,12 @@ commander <command> [arguments...]
on|off [on] to activate safety, [off] to deactivate safety and allow
control surface movements
actuator_group_test Drive a functional actuator group (torque/thrust/tilt)
for a brief preflight check
roll|pitch|yaw|tilt|xthrust|ythrust|zthrust Group
[value] Normalized command [-1.0, +1.0]; default 1.0 for torque/tilt,
0.1 for thrust
arm
[-f] Force arming (do not run preflight checks)
+15 -12
View File
@@ -8,16 +8,17 @@ pageClass: is-wide-page
## Fields
| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 |
| ----------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | | | time since system start (microseconds) |
| torque_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D torque setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. |
| unallocated_torque | `float32[3]` | | | Unallocated torque. Equal to 0 if the setpoint was achieved. |
| thrust_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D thrust setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. |
| unallocated_thrust | `float32[3]` | | | Unallocated thrust. Equal to 0 if the setpoint was achieved. |
| actuator_saturation | `int8[16]` | | | Indicates actuator saturation status. |
| handled_motor_failure_mask | `uint16` | | | Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector |
| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection |
| 参数名 | 类型 | Unit [Frame] | Range/Enum | 描述 |
| ------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | | | time since system start (microseconds) |
| torque_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D torque setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. |
| unallocated_torque | `float32[3]` | | | Unallocated torque. Equal to 0 if the setpoint was achieved. |
| thrust_setpoint_achieved | `bool` | | | Boolean indicating whether the 3D thrust setpoint was correctly allocated to actuators. 0 if not achieved, 1 if achieved. |
| unallocated_thrust | `float32[3]` | | | Unallocated thrust. Equal to 0 if the setpoint was achieved. |
| actuator_saturation | `int8[16]` | | | Indicates actuator saturation status. |
| handled_motor_failure_mask | `uint16` | | | Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector |
| motor_stop_mask | `uint16` | | | Bitmaks of motors stopped by failure injection |
| actuator_group_preflight_check_active | `bool` | | | True while an actuator group preflight check (VEHICLE_CMD_ACTUATOR_GROUP_TEST) is overriding the torque/thrust setpoint or collective-tilt |
## Constants
@@ -57,8 +58,10 @@ int8[16] actuator_saturation # Indicates actuator saturation status.
# Note 1: actuator saturation does not necessarily imply that the thrust setpoint or the torque setpoint were not achieved.
# Note 2: an actuator with limited dynamics can be indicated as upper-saturated even if it as not reached its maximum value.
uint16 handled_motor_failure_mask # Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector
uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection
uint16 handled_motor_failure_mask # Bitmask of failed motors that were removed from the allocation / effectiveness matrix. Not necessarily identical to the report from FailureDetector
uint16 motor_stop_mask # Bitmaks of motors stopped by failure injection
bool actuator_group_preflight_check_active # True while an actuator group preflight check (VEHICLE_CMD_ACTUATOR_GROUP_TEST) is overriding the torque/thrust setpoint or collective-tilt
```
:::
+4 -4
View File
@@ -13,8 +13,8 @@ pageClass: is-wide-page
| timestamp | `uint64` | | | time since system start (microseconds) |
| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles |
| len | `uint16` | | | length of data |
| flags | `uint8` | | | LSB: 1=fragmented |
| data | `uint8[300]` | | | data to write to GPS device (RTCM message) |
| flags | `uint8` | | | LSB: 1=fragmented across multiple uORB publications |
| data | `uint8[300]` | | | data chunk to write to GPS device (RTCM message) |
## Constants
@@ -36,8 +36,8 @@ uint64 timestamp # time since system start (microseconds)
uint32 device_id # unique device ID for the sensor that does not change between power cycles
uint16 len # length of data
uint8 flags # LSB: 1=fragmented
uint8[300] data # data to write to GPS device (RTCM message)
uint8 flags # LSB: 1=fragmented across multiple uORB publications
uint8[300] data # data chunk to write to GPS device (RTCM message)
uint8 ORB_QUEUE_LENGTH = 8
+48
View File
@@ -1024,6 +1024,20 @@ Start running a mission.
| 6 | | | ? |
| 7 | | | ? |
### VEHICLE_CMD_ACTUATOR_GROUP_TEST (309)
Test groups of related actuators (e.g. all actuators contributing to roll torque).
| Param | 单位 (Units) | Range/Enum | 描述 |
| ----- | ----------------------------- | ------------------------------------------------------------------------------------- | ------ |
| 1 | | [ACTUATOR_TEST_GROUP](#ACTUATOR_TEST_GROUP) | Group |
| 2 | | [-1 : 1] | 值 |
| 3 | | | Unused |
| 4 | | | Unused |
| 5 | | | Unused |
| 6 | | | Unused |
| 7 | | | Unused |
### VEHICLE_CMD_ACTUATOR_TEST (310)
Actuator testing command.
@@ -1552,6 +1566,18 @@ Change mode by specifying nav_state directly.
| 参数名 | 类型 | 值 | 描述 |
| --- | -- | - | -- |
### ACTUATOR_TEST_GROUP {#ACTUATOR_TEST_GROUP}
| 参数名 | 类型 | 值 | 描述 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | - | -- |
| <a id="#ACTUATOR_TEST_GROUP_ROLL_TORQUE"></a> ACTUATOR_TEST_GROUP_ROLL_TORQUE | `uint8` | 0 | |
| <a id="#ACTUATOR_TEST_GROUP_PITCH_TORQUE"></a> ACTUATOR_TEST_GROUP_PITCH_TORQUE | `uint8` | 1 | |
| <a id="#ACTUATOR_TEST_GROUP_YAW_TORQUE"></a> ACTUATOR_TEST_GROUP_YAW_TORQUE | `uint8` | 2 | |
| <a id="#ACTUATOR_TEST_GROUP_COLLECTIVE_TILT"></a> ACTUATOR_TEST_GROUP_COLLECTIVE_TILT | `uint8` | 3 | |
| <a id="#ACTUATOR_TEST_GROUP_X_THRUST"></a> ACTUATOR_TEST_GROUP_X_THRUST | `uint8` | 4 | |
| <a id="#ACTUATOR_TEST_GROUP_Y_THRUST"></a> ACTUATOR_TEST_GROUP_Y_THRUST | `uint8` | 5 | |
| <a id="#ACTUATOR_TEST_GROUP_Z_THRUST"></a> ACTUATOR_TEST_GROUP_Z_THRUST | `uint8` | 6 | |
## Constants
| 参数名 | 类型 | 值 | 描述 |
@@ -1605,6 +1631,11 @@ Change mode by specifying nav_state directly.
| <a id="#FAILURE_TYPE_SLOW"></a> FAILURE_TYPE_SLOW | `uint8` | 5 | |
| <a id="#FAILURE_TYPE_DELAYED"></a> FAILURE_TYPE_DELAYED | `uint8` | 6 | |
| <a id="#FAILURE_TYPE_INTERMITTENT"></a> FAILURE_TYPE_INTERMITTENT | `uint8` | 7 | |
| <a id="#RC_TYPE_SPEKTRUM"></a> RC_TYPE_SPEKTRUM | `uint8` | 0 | |
| <a id="#RC_TYPE_CRSF"></a> RC_TYPE_CRSF | `uint8` | 1 | |
| <a id="#RC_SUB_TYPE_SPEKTRUM_DSM2"></a> RC_SUB_TYPE_SPEKTRUM_DSM2 | `uint8` | 0 | |
| <a id="#RC_SUB_TYPE_SPEKTRUM_DSMX"></a> RC_SUB_TYPE_SPEKTRUM_DSMX | `uint8` | 1 | |
| <a id="#RC_SUB_TYPE_SPEKTRUM_DSMX8"></a> RC_SUB_TYPE_SPEKTRUM_DSMX8 | `uint8` | 2 | |
| <a id="#ARMING_ACTION_DISARM"></a> ARMING_ACTION_DISARM | `int8` | 0 | |
| <a id="#ARMING_ACTION_ARM"></a> ARMING_ACTION_ARM | `int8` | 1 | |
| <a id="#GRIPPER_ACTION_RELEASE"></a> GRIPPER_ACTION_RELEASE | `uint8` | 0 | |
@@ -1702,6 +1733,7 @@ uint16 VEHICLE_CMD_DO_SET_STANDARD_MODE=262 # Enable the specified standard MAVL
uint16 VEHICLE_CMD_GIMBAL_DEVICE_INFORMATION = 283 # Command to ask information about a low level gimbal.
uint16 VEHICLE_CMD_MISSION_START = 300 # Start running a mission. |first_item: the first mission item to run|last_item: the last mission item to run (after this item is run, the mission ends)|
uint16 VEHICLE_CMD_ACTUATOR_GROUP_TEST = 309 # Test groups of related actuators (e.g. all actuators contributing to roll torque). |[@enum ACTUATOR_TEST_GROUP] Group|[@range -1,1] Value|Unused|Unused|Unused|Unused|Unused|
uint16 VEHICLE_CMD_ACTUATOR_TEST = 310 # Actuator testing command. |[@range -1,1] value|[s] timeout|Unused|Unused|output function|
uint16 VEHICLE_CMD_CONFIGURE_ACTUATOR = 311 # Actuator configuration command. |configuration|Unused|Unused|Unused|output function|
uint16 VEHICLE_CMD_ESC_REQUEST_EEPROM = 312 # Request EEPROM data from an ESC. |ESC Index|Firmware Type|Unused|Unused|Unused|
@@ -1815,6 +1847,13 @@ uint8 ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3
uint8 ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4
uint8 ORBIT_YAW_BEHAVIOUR_UNCHANGED = 5
# Used as param1&2 in CMD_START_RX_PAIR.
uint8 RC_TYPE_SPEKTRUM = 0
uint8 RC_TYPE_CRSF = 1
uint8 RC_SUB_TYPE_SPEKTRUM_DSM2 = 0
uint8 RC_SUB_TYPE_SPEKTRUM_DSMX = 1
uint8 RC_SUB_TYPE_SPEKTRUM_DSMX8 = 2
# Used as param1 in ARM_DISARM command.
int8 ARMING_ACTION_DISARM = 0
int8 ARMING_ACTION_ARM = 1
@@ -1827,6 +1866,15 @@ uint8 GRIPPER_ACTION_GRAB = 1
uint8 SAFETY_OFF = 0
uint8 SAFETY_ON = 1
# param1 in VEHICLE_CMD_ACTUATOR_GROUP_TEST (matches MAVLink ACTUATOR_TEST_GROUP enum)
uint8 ACTUATOR_TEST_GROUP_ROLL_TORQUE = 0
uint8 ACTUATOR_TEST_GROUP_PITCH_TORQUE = 1
uint8 ACTUATOR_TEST_GROUP_YAW_TORQUE = 2
uint8 ACTUATOR_TEST_GROUP_COLLECTIVE_TILT = 3
uint8 ACTUATOR_TEST_GROUP_X_THRUST = 4
uint8 ACTUATOR_TEST_GROUP_Y_THRUST = 5
uint8 ACTUATOR_TEST_GROUP_Z_THRUST = 6
uint8 ORB_QUEUE_LENGTH = 8
float32 param1 # Parameter 1, as defined by MAVLink uint16 VEHICLE_CMD enum.
+41 -4
View File
@@ -3,7 +3,7 @@
The [Hiwonder 4-Channel Encoder Motor Driver](https://www.hiwonder.com/products/4-channel-encoder-motor-driver) is a small I2C motor controller with integrated encoder feedback for up to four brushed DC motors.
It is well suited to small wheeled rovers (differential, ackermann, or mecanum) where size, weight, and a low channel count make a full-size ESC overkill.
PX4 supports the board via the `hiwonder_emm` I2C driver.
PX4 supports the board via the [`hiwonder_emm`](../modules/modules_driver#hiwonder-emm) I2C driver.
## 特性
@@ -29,14 +29,41 @@ The driver auto-detects the four channels but the motor type is selected in firm
The shipped default is `JGB37-520-12V-110RPM`; change [`HiwonderEMM.cpp`](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/hiwonder_emm/HiwonderEMM.cpp) (`set_motor_type`) if you use a different model.
:::
## Building the Firmware
To use the EMM, the `hiwonder_emm` driver must be compiled into the firmware and started on boot.
1. Add the following line to the `rover.px4board` file of your board (for Skynode S this would be in [boards/auterion/fmu-v6s/rover.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/boards/auterion/fmu-v6s/rover.px4board)) so the driver is compiled in:
```txt
CONFIG_DRIVERS_HIWONDER_EMM=y
```
2. Make sure the driver is started on boot when the [HIWONDER_EMM_EN](../advanced_config/parameter_reference.md#HIWONDER_EMM_EN) parameter is `1`.
For rover airframes (ackermann, differential, mecanum) this is already done by the shared rover startup script [`rc.rover`](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/rc.rover), which contains:
```sh
if param compare HIWONDER_EMM_EN 1
then
hiwonder_emm start
fi
```
For other airframes that should use the EMM, add the same block to your board's `rc.board_sensors` file (for Skynode S this would be in [boards/auterion/fmu-v6s/init/rc.board_sensors](https://github.com/PX4/PX4-Autopilot/blob/main/boards/auterion/fmu-v6s/init/rc.board_sensors)).
3. Build and flash the firmware for your board.
:::info
Many flight controllers already enable `CONFIG_DRIVERS_HIWONDER_EMM=y` in their `rover.px4board` configuration, so the default rover build is sufficient and step 1 is not required.
:::
## Flight Controller Setup
### Enable the Driver
Set the [HIWONDER_EMM_EN](../advanced_config/parameter_reference.md#HIWONDER_EMM_EN) parameter to `1` and reboot.
The driver is started automatically by the rover startup script ([`rc.rover`](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/rc.rover)), which runs for every ackermann, differential, and mecanum airframe.
It is compiled into builds that enable `CONFIG_DRIVERS_HIWONDER_EMM` in the board configuration.
On the next boot the driver is started by the startup script (see [Building the Firmware](#building-the-firmware)).
### Actuator Allocation
@@ -46,6 +73,16 @@ In [Actuator Configuration](../config/actuators.md), assign the rover wheel outp
The output range is fixed in firmware to `0..255` (the EMM's protocol range, internally mapped to a signed `[-128, 127]` speed command — `128` is stop, values below are reverse, values above are forward).
`EMM_DIS{i}` (disarmed) and `EMM_FAIL{i}` (failsafe) per-channel parameters are user-tunable in the standard range.
## 支持的载具
The EMM is used on the reference Hiwonder rover frames:
- `50002` — Hiwonder differential rover
- `51003` — Hiwonder ackermann rover
- `52001` — Hiwonder mecanum rover
See [Rovers](../frames_rover/index.md) for vehicle-side configuration.
## 更多信息
- Driver source: [`src/drivers/hiwonder_emm`](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/hiwonder_emm)
+4 -2
View File
@@ -76,11 +76,13 @@ You then need to ensure that the parachute pin will be set to a value that will
PX4 will trigger a connected and healthy parachute on failsafe by sending the command [MAV_CMD_DO_PARACHUTE](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_PARACHUTE) with the [PARACHUTE_RELEASE](https://mavlink.io/en/messages/common.html#PARACHUTE_ACTION) action.
MAVLink parachute support is enabled by setting the parameter [COM_PARACHUTE=1](../advanced_config/parameter_reference.md#COM_PARACHUTE).
MAVLink parachute support is enabled by setting the parameter [COM_PARACHUTE](../advanced_config/parameter_reference.md#COM_PARACHUTE) to a non-zero value.
The parameter also configures the arming check and in-flight failsafe action when the parachute system is missing or unhealthy, see [Parachute Health Failsafe](../config/safety.md#parachute-health-failsafe).
PX4 will then indicate parachute status using the [MAV_SYS_STATUS_RECOVERY_SYSTEM](https://mavlink.io/en/messages/common.html#MAV_SYS_STATUS_RECOVERY_SYSTEM) bit in the [SYS_STATUS](https://mavlink.io/en/messages/common.html#SYS_STATUS) extended onboard control sensors fields:
- `SYS_STATUS.onboard_control_sensors_present_extended`: MAVLink parachute present (based on heartbeat detection).
- `SYS_STATUS.onboard_control_sensors_enabled_extended`: ?
- `SYS_STATUS.onboard_control_sensors_enabled_extended`: MAVLink parachute is enabled ([`COM_PARACHUTE > 0`](../advanced_config/parameter_reference.md#COM_PARACHUTE)).
- `SYS_STATUS.onboard_control_sensors_health_extended`: MAVLink parachute healthy (based on heartbeat detection).
A MAVLink parachute is required to emit a [HEARTBEAT](https://mavlink.io/en/messages/common.html#HEARTBEAT) with `HEARTBEAT.type` of [MAV_TYPE_PARACHUTE](https://mavlink.io/en/messages/common.html#MAV_TYPE_PARACHUTE).
+1
View File
@@ -53,6 +53,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
### 安全
- Rotary-wing vehicles now support uncommanded altitude loss detection: if the vehicle descends more than [FD_ALT_LOSS](../advanced_config/parameter_reference.md#FD_ALT_LOSS) meters below its setpoint in altitude-controlled flight, flight termination (and parachute deployment) is triggered. See [Altitude Loss Trigger](../config/safety.md#altitude-loss-trigger). ([PX4-Autopilot#26837](https://github.com/PX4/PX4-Autopilot/pull/26837))
- [Parachute health failsafe](../peripherals/parachute.md): extended [COM_PARACHUTE](../advanced_config/parameter_reference.md#COM_PARACHUTE) from a boolean into a configurable in-flight failsafe action (Return or Land) parameter. The previously enabled value `COM_PARACHUTE=1` causes a warning like before. ([PX4-Autopilot#26918](https://github.com/PX4/PX4-Autopilot/pull/26918))
- [GNSS check failsafe](../config/safety.md#gnss-check-failsafe): new failsafe that monitors the number of usable GNSS receivers with a 3D fix and their position consistency. The required number of receivers is set via [SYS_HAS_NUM_GNSS](../advanced_config/parameter_reference.md#SYS_HAS_NUM_GNSS) and the failsafe action via [COM_GNSSLOSS_ACT](../advanced_config/parameter_reference.md#COM_GNSSLOSS_ACT). ([PX4-Autopilot#26863](https://github.com/PX4/PX4-Autopilot/pull/26863))
### Estimation
+2 -2
View File
@@ -24,7 +24,7 @@ Create the `offb_node.cpp` file in your ROS package (by also adding it to your `
```cpp
/**
* @file offb_node.cpp
* @brief Offboard control example node, written with MAVROS version 0.19.x, PX4 Pro Flight
* @brief Offboard control example node, written with MAVROS version 0.19.x, PX4 Flight
* Stack and tested in Gazebo Classic SITL
*/
@@ -173,7 +173,7 @@ pose.pose.position.y = 0;
pose.pose.position.z = 2;
```
尽管PX4在航空航天常用的NED坐标系下操控飞机,但MAVROS将自动将该坐标系切换至常规的ENU坐标系下,反之亦然。
Even though the PX4 Flight Stack operates in the aerospace NED coordinate frame, MAVROS translates these coordinates to the standard ENU frame and vice-versa.
This is why we set `z` to positive 2.
```cpp
+1 -1
View File
@@ -39,7 +39,7 @@ To use the [ROS 2](../ros2/user_guide.md) over XRCE-DDS / Zenoh effectively, you
- [ROS 2 用户指南](../ros2/user_guide.md): PX4 视角下的 ROS 2,包括安装、设置和如何构建与 PX4 通信的 ROS 2 应用。
- [ROS 2 离板控制实例](../ros2/offboard_control.md):一个 C++ 教程示例显示如何在 [离板模式] (../flight_modes/offboard.md) 中使用 ROS 2 节点进行位置控制。
- [ROS 2 多载具模拟](../ros2/multi_vehicle.md):通过单独的ROS2 代理商连接到多极PX4 模拟的说明。
- [ROS 2 Multi Vehicle Simulation](../ros2/multi_vehicle.md): Instructions for connecting to multiple PX4 simulations via single ROS 2 agent.
- [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md): A C++ library that simplifies interacting with PX4 from ROS 2.
Can be used to create and register flight modes written using ROS2 and send position estimates from ROS2 applications such as a VIO system.
- [ROS 2 Message Translation Node](../ros2/px4_ros2_msg_translation_node.md): A ROS 2 message translation node that enables communication between PX4 and ROS 2 applications that were compiled with different sets of messages versions.
+2 -1
View File
@@ -32,7 +32,8 @@ VectorNav IMU/AHRS, GNSS/INS, and Dual GNSS/INS solutions are available directly
### 布线
Connect any unused flight controller serial interface, such as a spare `GPS` or `TELEM` port, to the VectorNav UART2 port (required by PX4).
Connect any unused flight controller serial interface, such as a spare `GPS` or `TELEM` port, to the VectorNav `UART2` port (default).
Note that you can also connect to the VectorNav `UART1` port, but in this case you must set [VN_PORT](../advanced_config/parameter_reference.md#VN_PORT) to `1`.
### Mounting
-1
View File
@@ -11,6 +11,5 @@ Test topics include:
- [Integration Testing](../test_and_ci/integration_testing.md)
- [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md)
- [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md)
- [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated)
- [Docker](../test_and_ci/docker.md)
- [Maintenance](../test_and_ci/maintenance.md)
@@ -7,7 +7,3 @@ The tests are run in [Continuous Integration (CI)](../test_and_ci/continous_inte
- [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) - MAVSDK-based test framework for PX4.
_This is the recommended framework for writing new Integration tests_
- [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md) - Integration Tests for the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md).
The following framework should only be used for tests that require ROS 1:
- [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated)