From 10e3c15c548cd6c40ee8cc2110b63ad2d7b391c5 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 11 Mar 2026 16:58:59 +1100 Subject: [PATCH] docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#26690) Co-authored-by: Crowdin Bot --- docs/zh/SUMMARY.md | 1 + docs/zh/contribute/code.md | 49 ++- docs/zh/contribute/git_examples.md | 6 +- docs/zh/dev_setup/building_px4.md | 8 +- docs/zh/flight_controller/pixhawk_series.md | 2 +- docs/zh/frames_plane/wing_wing_z84.md | 6 +- ...dplane_falcon_vertigo_hybrid_rtf_dropix.md | 11 +- docs/zh/mavlink/index.md | 1 + docs/zh/mavlink/message_signing.md | 126 ++++++ docs/zh/mavlink/protocols.md | 1 + docs/zh/middleware/dds_topics.md | 366 +++++++++--------- docs/zh/modules/hello_sky.md | 104 ++--- docs/zh/modules/module_template.md | 11 +- docs/zh/modules/modules_driver.md | 2 +- docs/zh/modules/modules_driver_imu.md | 26 ++ docs/zh/releases/main.md | 2 +- docs/zh/sim_sih/index.md | 6 + docs/zh/vtx/index.md | 3 +- 18 files changed, 451 insertions(+), 280 deletions(-) create mode 100644 docs/zh/mavlink/message_signing.md diff --git a/docs/zh/SUMMARY.md b/docs/zh/SUMMARY.md index c763b75b38..5b7c7d624b 100644 --- a/docs/zh/SUMMARY.md +++ b/docs/zh/SUMMARY.md @@ -779,6 +779,7 @@ - [Streaming Messages](mavlink/streaming_messages.md) - [Receiving Messages](mavlink/receiving_messages.md) - [Custom MAVLink Messages](mavlink/custom_messages.md) + - [Message Signing](mavlink/message_signing.md) - [Protocols/Microservices](mavlink/protocols.md) - [Standard Modes Protocol](mavlink/standard_modes.md) - [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](middleware/uxrce_dds.md) diff --git a/docs/zh/contribute/code.md b/docs/zh/contribute/code.md index 793a629099..b3e8c253ac 100644 --- a/docs/zh/contribute/code.md +++ b/docs/zh/contribute/code.md @@ -151,36 +151,35 @@ else { ## Commits and Commit Messages -Use descriptive, multi-paragraph commit messages for all non-trivial changes. -Structure them well so they make sense in the one-line summary but also provide full detail. +PX4 uses [conventional commits](https://www.conventionalcommits.org/) for all commit messages and PR titles. -```plain -Component: Explain the change in one sentence. Fixes #1234 +### Format -Prepend the software component to the start of the summary -line, either by the module name or a description of it. -(e.g. "mc_att_ctrl" or "multicopter attitude controller"). - -If the issue number is appended as , Github -will automatically close the issue when the commit is -merged to the master branch. - -The body of the message can contain several paragraphs. -Describe in detail what you changed. Link issues and flight -logs either related to this fix or to the testing results -of this commit. - -Describe the change and why you changed it, avoid to -paraphrase the code change (Good: "Adds an additional -safety check for vehicles with low quality GPS reception". -Bad: "Add gps_reception_check() function"). - -Reported-by: Name +``` +type(scope): short description of the change ``` -**Use **`git commit -s`** to sign off on all of your commits.** This will add `signed-off-by:` with your name and email as the last line. +Where **type** is the category of change (`feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `build`, `ci`, `style`, `chore`, `revert`) and **scope** is the module or area affected (e.g. `ekf2`, `mavlink`, `navigator`). See the full [types and scopes tables](https://github.com/PX4/PX4-Autopilot/blob/main/CONTRIBUTING.md#commit-message-convention) in CONTRIBUTING.md. -This commit guide is based on best practices for the Linux Kernel and other [projects maintained](https://github.com/torvalds/subsurface-for-dirk/blob/a48494d2fbed58c751e9b7e8fbff88582f9b2d02/README#L88-L115) by Linus Torvalds. +Append `!` before the colon to mark a breaking change: `feat(ekf2)!: remove deprecated API`. + +### 示例 + +``` +feat(ekf2): add height fusion timeout. Fixes #1234 + +The previous implementation did not handle the case where +height fusion data stops arriving mid-flight. This adds a +configurable timeout that falls back to barometric height. + +Tested in SITL with simulated sensor dropout. + +Signed-off-by: Your Name +``` + +The body of the message can contain several paragraphs. Describe in detail what you changed and why. Link related issues and flight logs. Describe the change and why you made it, rather than paraphrasing the code change. + +**Use `git commit -s` to sign off on all of your commits.** This adds `Signed-off-by:` with your name and email as the last line. ## Pull Requests diff --git a/docs/zh/contribute/git_examples.md b/docs/zh/contribute/git_examples.md index 3f39d953a0..c0e13539fa 100644 --- a/docs/zh/contribute/git_examples.md +++ b/docs/zh/contribute/git_examples.md @@ -49,15 +49,15 @@ Adding a feature to PX4 follows a defined workflow. In order to share your contr git add ``` - If you prefer having a GUI to add your files see [Gitk](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces) or [`git add -p`](https://nuclearsquid.com/writings/git-add/). + If you prefer having a GUI to add your files see [Gitk](https://git-scm.com/book/en/v2/Git-in-Other-Environments-Graphical-Interfaces) or [`git add -p`](https://nuclearsquid.com/writings/git-add/). - 提交添加的文件, 并顺便记录一条有意义的消息, 解释您的更改 ```sh - git commit -m "" + git commit -s -m "feat(ekf2): add height fusion timeout" ``` - For a good commit message, please refer to the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section. + Use [conventional commits](https://www.conventionalcommits.org/) format: `type(scope): description`. For details on types and scopes, see the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section. - Some time might have passed and the [upstream main](https://github.com/PX4/PX4-Autopilot) has changed. PX4 prefers a linear commit history and uses [git rebase](https://git-scm.com/book/en/v2/Git-Branching-Rebasing). diff --git a/docs/zh/dev_setup/building_px4.md b/docs/zh/dev_setup/building_px4.md index 9ca4157ec9..bf949a3e7d 100644 --- a/docs/zh/dev_setup/building_px4.md +++ b/docs/zh/dev_setup/building_px4.md @@ -136,13 +136,13 @@ From the PX4-Autopilot directory: - [mRo Pixhawk (FMUv3)](../flight_controller/mro_pixhawk.md): `make px4_fmu-v3_default` (支持 2MB Flash) -- [Holybro pix32 (FMUv2)](../flight_controller/holybro_pix32.md): `make px4_fmu-v2_default` +- [Holybro pix32 (FMUv2)](../flight_controller/autopilot_discontinued.md): `make px4_fmu-v2_default` - Discontinued -- [Pixfalcon (FMUv2)](../flight_controller/pixfalcon.md): `make px4_fmu-v2_default` +- [Pixfalcon (FMUv2)](../flight_controller/autopilot_discontinued.md): `make px4_fmu-v2_default` - Discontinued -- [Dropix (FMUv2)](../flight_controller/dropix.md): `make px4_fmu-v2_default` +- [Dropix (FMUv2)](../flight_controller/autopilot_discontinued.md): `make px4_fmu-v2_default` - Discontinued -- [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default` +- [Pixhawk 1 (FMUv2)](../flight_controller/autopilot_discontinued.md): `make px4_fmu-v2_default` - Discontinued :::warning You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build. diff --git a/docs/zh/flight_controller/pixhawk_series.md b/docs/zh/flight_controller/pixhawk_series.md index 20b01255b5..c2967e8d6e 100644 --- a/docs/zh/flight_controller/pixhawk_series.md +++ b/docs/zh/flight_controller/pixhawk_series.md @@ -71,7 +71,7 @@ PX4 _developers_ need to know the FMU version of their board, as this is require At very high level, the main differences are: -- **FMUv2:** Single board with STM32427VI processor ([Pixhawk 1 (Discontinued)](../flight_controller/pixhawk.md), [pix32](../flight_controller/holybro_pix32.md), [Pixfalcon](../flight_controller/pixfalcon.md), [Drotek DroPix](../flight_controller/dropix.md)) +- **FMUv2:** Single board with STM32427VI processor (Pixhawk 1 (discontinued), Holybro pix32 (discontinued), Pixfalcon (discontinued), Drotek DroPix (discontinued)) - **FMUv3:** Identical to FMUv2, but usable flash doubled to 2MB ([Hex Cube Black](../flight_controller/pixhawk-2.md),[CUAV Pixhack v3](../flight_controller/pixhack_v3.md),[mRo Pixhawk](../flight_controller/mro_pixhawk.md), [Pixhawk Mini (Discontinued)](../flight_controller/pixhawk_mini.md)) - **FMUv4:** Increased RAM. Faster CPU. More serial ports. No IO processor ([Pixracer](../flight_controller/pixracer.md)) - **FMUv4-PRO:** Slightly increased RAM. More serial ports. IO processor ([Pixhawk 3 Pro](../flight_controller/pixhawk3_pro.md)) diff --git a/docs/zh/frames_plane/wing_wing_z84.md b/docs/zh/frames_plane/wing_wing_z84.md index 43ce23d989..7b8ce4563c 100644 --- a/docs/zh/frames_plane/wing_wing_z84.md +++ b/docs/zh/frames_plane/wing_wing_z84.md @@ -6,7 +6,7 @@ It is small, rugged and just large enough to host a [Pixracer](../flight_control Key information: - **Frame:** Wing Wing Z-84 -- **Flight controller:** Pixracer +- **Flight controller:** Pixracer (Discontinued) ![Wing Wing Z-84 build](../../assets/airframes/fw/wing_wing/wing_wing_build11.jpg) @@ -31,8 +31,8 @@ Any small (>=12A) ESC will do: - [Pixracer](../flight_controller/pixracer.md) kit (including GPS and power module) - FrSky D4R-II receiver or equivalent (jumpered to PPM sum output according to its manual) -- [Mini telemetry set](../flight_controller/pixfalcon.md#availability) for Holybro pix32 -- [Digital airspeed sensor](../flight_controller/pixfalcon.md#availability) for Holybro pix32 / Pixfalcon +- _Mini telemetry set_ for Holybro pix32 +- _Digital airspeed sensor_ for Holybro pix32 / Pixfalcon - 1800 mAh 2S LiPo Battery - e.g. Team Orion 1800mAh 7.4V 50C 2S1P with XT 60 plug. ### Recommended spare parts diff --git a/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md b/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md index 6827876cff..f36294f7f9 100644 --- a/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md +++ b/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md @@ -3,6 +3,7 @@ :::warning Discontinued The Falcon Venturi FPV Wing frame on which this vehicle is based is no longer available. +The Dropix FC used by this vehicle is discontinued. ::: The _Falcon Vertigo Hybrid VTOL_ is a quadplane VTOL aircraft that has been designed to work with PX4 and the Dropix (Pixhawk compatible) flight controller. It can carry a small GoPro camera. @@ -13,7 +14,7 @@ The components can also be purchased separately. Key information: - **Frame:** Falcon Vertigo Hybrid VTOL -- **Flight controller:** Dropix +- **Flight controller:** Dropix (Discontineud) - **Wing span:** 1.3m ![Falcon Vertigo Hybrid VTOL RTF](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_complete.jpg) @@ -115,10 +116,6 @@ This kit includes Dropix flight controller with most of the required electronics -:::info -General information about connecting Dropix can be found in [Dropix Flight Controller](../flight_controller/dropix.md). -::: - #### Connect the ESC power connector and pass the signals cables to the flight controller 1. Connect the ESC to the power module using the XT60 connector @@ -146,7 +143,7 @@ For example, you might wire it up like this example (orientation as if "sitting | AUX 2 | Right aileron | | AUX 3 | Elevator | | AUX 4 | Rudder | -| AUX 5 | 油门 | +| AUX 5 | Throttle | @@ -267,7 +264,7 @@ The final assembly step is to check the vehicle is stable and that the motors ha Perform the normal [Basic Configuration](../config/index.md). -备注: +Notes: 1. For [Airframe](../config/airframe.md) select the vehicle group/type as _Standard VTOL_ and the specific vehicle as [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) as shown below. diff --git a/docs/zh/mavlink/index.md b/docs/zh/mavlink/index.md index 10d3334061..81784591ca 100644 --- a/docs/zh/mavlink/index.md +++ b/docs/zh/mavlink/index.md @@ -11,6 +11,7 @@ It also links instructions for how you can add PX4 support for: - [Streaming MAVLink messages](../mavlink/streaming_messages.md) - [Handling incoming MAVLink messages (and writing to a uORB topic)](../mavlink/receiving_messages.md) - [Custom MAVLink Messages](../mavlink/custom_messages.md) +- [Message Signing](../mavlink/message_signing.md) - [Protocols/Microservices](../mavlink/protocols.md) :::info diff --git a/docs/zh/mavlink/message_signing.md b/docs/zh/mavlink/message_signing.md new file mode 100644 index 0000000000..72c77a112f --- /dev/null +++ b/docs/zh/mavlink/message_signing.md @@ -0,0 +1,126 @@ +# MAVLink Message Signing + +[MAVLink 2 message signing](https://mavlink.io/en/guide/message_signing.html) allows PX4 to cryptographically verify that incoming MAVLink messages originate from a trusted source (authentication). + +:::info +This mechanism does not _encrypt_ the message payload. +::: + +## 综述 + +When signing is enabled, PX4 appends a 13-byte [signature](https://mavlink.io/en/guide/message_signing.html#signature) to every outgoing MAVLink 2 message. + +Incoming messages are checked against the shared secret key, and unsigned or incorrectly signed messages are rejected (with [exceptions for safety-critical messages](#unsigned-message-allowlist)). + +The signing implementation is built into the MAVLink module and is always available — no special build flags are required. +It is enabled and disabled at runtime through the [MAV_SIGN_CFG](../advanced_config/parameter_reference.md#MAV_SIGN_CFG) parameter. + +## Enable/Disable Signing + +The [MAV_SIGN_CFG](../advanced_config/parameter_reference.md#MAV_SIGN_CFG) parameter controls whether signing is active: + +| 值 | 模式 | 描述 | +| - | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| 0 | Disabled (default) | No signing. All messages are accepted regardless of signature. | +| 1 | Non-USB | Signing is enabled on all links **except** USB serial connections. USB links accept unsigned messages. | +| 2 | Always | Signing is enforced on all links, including USB. | + +:::warning +Setting `MAV_SIGN_CFG` alone does not enable signing — a secret key must also be present (see [Key Provisioning](#key-provisioning) below). +If no key has been set (or the key is all zeros with a zero timestamp), all messages are accepted regardless of this parameter. +::: + +To **disable** signing, set `MAV_SIGN_CFG` to zero. + +## Key Provisioning + +The signing key is set by sending the MAVLink [SETUP_SIGNING](https://mavlink.io/en/messages/common.html#SETUP_SIGNING) message (ID 256) to PX4. +This message contains: + +- A 32-byte secret key +- A 64-bit initial timestamp + +:::warning +For security, PX4 only accepts `SETUP_SIGNING` messages received on a **USB** connection. +The message is silently ignored on all other link types (telemetry radios, network, and so on). +This ensures that an attacker cannot remotely change the signing key. +::: + +## Key Storage + +The secret key and timestamp are stored on the SD card at: + +```txt +/mavlink/mavlink-signing-key.bin +``` + +The file is a 40-byte binary file: + +| Offset | Size | Content | +| ------ | -------- | -------------------------------------------------------- | +| 0 | 32 bytes | Secret key | +| 32 | 8 bytes | Timestamp (`uint64_t`, little-endian) | + +The file is created with mode `0600` (owner read/write only), and the containing `/mavlink/` directory is created with mode `0700` (owner only). + +On startup, PX4 reads the key from this file. +If the file exists and contains a non-zero key or timestamp, signing is initialized automatically. + +:::info +The timestamp in the file is set when `SETUP_SIGNING` is received. +A graceful shutdown also writes the current timestamp back, but in practice most vehicles are powered off by pulling the battery, so the on-disk timestamp will typically remain at the value from the last key provisioning. +::: + +:::info +Storage of the key on the SD card means that signing can be disabled by removing the card. +Note that this requires physical access to the vehicle, and therefore provides the same level of security as allowing signing to be modified via the USB channel. +::: + +## How It Works + +### Initialization + +1. The MAVLink module calls `MavlinkSignControl::start()` during startup. +2. The `/mavlink/` directory is created if it doesn't exist. +3. The `mavlink-signing-key.bin` file is opened (or created empty). +4. If a valid key is found (non-zero key or timestamp), signing is marked as initialized. +5. The `accept_unsigned` callback is registered with the MAVLink library. + +### Outgoing Messages + +When signing is initialized, the `MAVLINK_SIGNING_FLAG_SIGN_OUTGOING` flag is set, which causes the MAVLink library to automatically append a [SHA-256 based signature](https://mavlink.io/en/guide/message_signing.html#signature) to every outgoing MAVLink 2 message. + +### Incoming Messages + +For each incoming message, the MAVLink library checks whether a valid signature is present. +If the message is unsigned or has an invalid signature, the library calls the `accept_unsigned` callback, which decides whether to accept or reject the message based on: + +1. **Signing not initialized** — If no key has been loaded, all messages are accepted. +2. **Allowlisted message** — Certain [safety-critical messages](#unsigned-message-allowlist) are always accepted. +3. **Sign mode** — The `MAV_SIGN_CFG` parameter determines behavior: + - Mode 0 (disabled): All unsigned messages are accepted. + - Mode 1 (non-USB): Unsigned messages are accepted only on USB links. + - Mode 2 (always): Unsigned messages are rejected on all links. + +## Unsigned Message Allowlist + +The following messages are **always** accepted unsigned, regardless of the signing mode. +These are safety-critical messages that may originate from systems that don't support signing: + +| 消息 | ID | Reason | +| -------------------------------------------------------------------------------------------- | --- | -------------------------------------------------------- | +| [RADIO_STATUS](https://mavlink.io/en/messages/common.html#RADIO_STATUS) | 109 | Radio link status from SiK radios and other radio modems | +| [ADSB_VEHICLE](https://mavlink.io/en/messages/common.html#ADSB_VEHICLE) | 246 | ADS-B traffic information for collision avoidance | +| [COLLISION](https://mavlink.io/en/messages/common.html#COLLISION) | 247 | Collision threat warnings | + +## Security Considerations + +- **Physical access required for key setup**: The `SETUP_SIGNING` message is only accepted over USB, so an attacker must have physical access to the vehicle to provision or change the key. +- **Key not exposed via parameters**: The secret key is stored in a separate file on the SD card, not as a MAVLink parameter, so it cannot be read back through the parameter protocol. +- **SD card access**: Anyone with physical access to the SD card can read or modify the `mavlink-signing-key.bin` file, or just remove the card. + Ensure physical security of the vehicle if signing is used as a security control. +- **Replay protection**: The MAVLink signing protocol includes a timestamp that prevents replay attacks. + The on-disk timestamp is updated when a new key is provisioned via `SETUP_SIGNING`. + A graceful shutdown also persists the current timestamp, but since most vehicles are powered off by pulling the battery, the timestamp will typically reset to the value from the last key provisioning on reboot. +- **No encryption**: Message signing provides authentication and integrity, but messages are still sent in plaintext. + An eavesdropper can read message contents but cannot forge or modify them without the key. diff --git a/docs/zh/mavlink/protocols.md b/docs/zh/mavlink/protocols.md index 9dac078fb9..5105df2344 100644 --- a/docs/zh/mavlink/protocols.md +++ b/docs/zh/mavlink/protocols.md @@ -30,6 +30,7 @@ These services are known to be supported in some form: - [Landing Target Protocol](https://mavlink.io/en/services/landing_target.html) - [Manual Control (Joystick) Protocol](https://mavlink.io/en/services/manual_control.html) - [MAVLink Id Assignment (sysid, compid)](https://mavlink.io/en/services/mavlink_id_assignment.html) +- [Message Signing](../mavlink/message_signing.md) ([MAVLink spec](https://mavlink.io/en/guide/message_signing.html)) - [Mission Protocol](https://mavlink.io/en/services/mission.html) - [Offboard Control Protocol](https://mavlink.io/en/services/offboard_control.html) - [Remote ID](../peripherals/remote_id.md) ([Open Drone ID Protocol](https://mavlink.io/en/services/opendroneid.html)) diff --git a/docs/zh/middleware/dds_topics.md b/docs/zh/middleware/dds_topics.md index 7073cd438c..b91da25225 100644 --- a/docs/zh/middleware/dds_topics.md +++ b/docs/zh/middleware/dds_topics.md @@ -96,203 +96,203 @@ They are not build into the module, and hence are neither published or subscribe :::details See messages -- [GpioConfig](../msg_docs/GpioConfig.md) -- [MavlinkLog](../msg_docs/MavlinkLog.md) -- [Event](../msg_docs/Event.md) -- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) -- [MagWorkerData](../msg_docs/MagWorkerData.md) -- [OrbTest](../msg_docs/OrbTest.md) -- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) - [EventV0](../msg_docs/EventV0.md) -- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) -- [EstimatorBias](../msg_docs/EstimatorBias.md) -- [QshellRetval](../msg_docs/QshellRetval.md) -- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) -- [GpioIn](../msg_docs/GpioIn.md) -- [Px4ioStatus](../msg_docs/Px4ioStatus.md) -- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) -- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) -- [Airspeed](../msg_docs/Airspeed.md) -- [SensorMag](../msg_docs/SensorMag.md) -- [QshellReq](../msg_docs/QshellReq.md) -- [RcChannels](../msg_docs/RcChannels.md) -- [FuelTankStatus](../msg_docs/FuelTankStatus.md) -- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) -- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) -- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) -- [TecsStatus](../msg_docs/TecsStatus.md) -- [CameraStatus](../msg_docs/CameraStatus.md) -- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) -- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) -- [DatamanRequest](../msg_docs/DatamanRequest.md) -- [SensorAccel](../msg_docs/SensorAccel.md) -- [HomePositionV0](../msg_docs/HomePositionV0.md) -- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) -- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) -- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) -- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md) -- [OrbitStatus](../msg_docs/OrbitStatus.md) -- [RcParameterMap](../msg_docs/RcParameterMap.md) -- [PowerButtonState](../msg_docs/PowerButtonState.md) -- [GpioRequest](../msg_docs/GpioRequest.md) -- [VehicleRoi](../msg_docs/VehicleRoi.md) -- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) -- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) -- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) -- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) -- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) -- [EscStatus](../msg_docs/EscStatus.md) -- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) -- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) -- [SensorHygrometer](../msg_docs/SensorHygrometer.md) -- [GpioOut](../msg_docs/GpioOut.md) -- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) -- [ActionRequest](../msg_docs/ActionRequest.md) -- [GimbalControls](../msg_docs/GimbalControls.md) -- [MountOrientation](../msg_docs/MountOrientation.md) -- [LedControl](../msg_docs/LedControl.md) -- [UlogStreamAck](../msg_docs/UlogStreamAck.md) - [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md) -- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) -- [VehicleConstraints](../msg_docs/VehicleConstraints.md) -- [VehicleAirData](../msg_docs/VehicleAirData.md) -- [BatteryInfo](../msg_docs/BatteryInfo.md) -- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) -- [RaptorInput](../msg_docs/RaptorInput.md) -- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) -- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) -- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) -- [VehicleImu](../msg_docs/VehicleImu.md) -- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) -- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) -- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) -- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) -- [SensorUwb](../msg_docs/SensorUwb.md) -- [LogMessage](../msg_docs/LogMessage.md) -- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) -- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md) -- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) -- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) -- [LandingGearWheel](../msg_docs/LandingGearWheel.md) -- [SensorTemp](../msg_docs/SensorTemp.md) -- [SensorGyro](../msg_docs/SensorGyro.md) -- [PowerMonitor](../msg_docs/PowerMonitor.md) -- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) -- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) -- [HeaterStatus](../msg_docs/HeaterStatus.md) -- [SensorAirflow](../msg_docs/SensorAirflow.md) -- [TakeoffStatus](../msg_docs/TakeoffStatus.md) -- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) -- [LoggerStatus](../msg_docs/LoggerStatus.md) -- [TuneControl](../msg_docs/TuneControl.md) -- [GpsDump](../msg_docs/GpsDump.md) -- [WheelEncoders](../msg_docs/WheelEncoders.md) -- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) -- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) -- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) -- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) -- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) -- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) -- [HealthReport](../msg_docs/HealthReport.md) -- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) -- [GpsInjectData](../msg_docs/GpsInjectData.md) -- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) -- [EscReport](../msg_docs/EscReport.md) -- [DebugKeyValue](../msg_docs/DebugKeyValue.md) -- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) -- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) -- [LandingTargetPose](../msg_docs/LandingTargetPose.md) -- [GeofenceStatus](../msg_docs/GeofenceStatus.md) -- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) -- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) -- [SensorCorrection](../msg_docs/SensorCorrection.md) -- [ParameterUpdate](../msg_docs/ParameterUpdate.md) -- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) -- [DifferentialPressure](../msg_docs/DifferentialPressure.md) -- [PositionSetpoint](../msg_docs/PositionSetpoint.md) -- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) -- [OrbTestMedium](../msg_docs/OrbTestMedium.md) -- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) -- [EstimatorStatus](../msg_docs/EstimatorStatus.md) -- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md) +- [UlogStreamAck](../msg_docs/UlogStreamAck.md) - [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md) -- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) -- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md) -- [EstimatorStates](../msg_docs/EstimatorStates.md) -- [CameraCapture](../msg_docs/CameraCapture.md) -- [RadioStatus](../msg_docs/RadioStatus.md) -- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) -- [SensorsStatus](../msg_docs/SensorsStatus.md) -- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) -- [NeuralControl](../msg_docs/NeuralControl.md) -- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) -- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) -- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) -- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) -- [GeofenceResult](../msg_docs/GeofenceResult.md) +- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md) +- [PositionSetpoint](../msg_docs/PositionSetpoint.md) +- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) +- [GimbalControls](../msg_docs/GimbalControls.md) - [SystemPower](../msg_docs/SystemPower.md) -- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) - [VehicleImuStatus](../msg_docs/VehicleImuStatus.md) -- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) -- [CameraTrigger](../msg_docs/CameraTrigger.md) -- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) -- [RoverRateStatus](../msg_docs/RoverRateStatus.md) -- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [EscReport](../msg_docs/EscReport.md) +- [IrlockReport](../msg_docs/IrlockReport.md) - [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md) -- [VelocityLimits](../msg_docs/VelocityLimits.md) -- [Gripper](../msg_docs/Gripper.md) -- [Mission](../msg_docs/Mission.md) -- [RtlStatus](../msg_docs/RtlStatus.md) -- [GainCompression](../msg_docs/GainCompression.md) -- [DatamanResponse](../msg_docs/DatamanResponse.md) -- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) -- [SensorGyroFft](../msg_docs/SensorGyroFft.md) -- [DeviceInformation](../msg_docs/DeviceInformation.md) -- [UlogStream](../msg_docs/UlogStream.md) -- [SensorSelection](../msg_docs/SensorSelection.md) -- [DebugVect](../msg_docs/DebugVect.md) -- [PpsCapture](../msg_docs/PpsCapture.md) +- [GpioConfig](../msg_docs/GpioConfig.md) +- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md) +- [GpioRequest](../msg_docs/GpioRequest.md) +- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md) +- [ParameterUpdate](../msg_docs/ParameterUpdate.md) +- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md) +- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md) +- [MissionResult](../msg_docs/MissionResult.md) +- [GeofenceResult](../msg_docs/GeofenceResult.md) - [OrbTestLarge](../msg_docs/OrbTestLarge.md) -- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) -- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) -- [FigureEightStatus](../msg_docs/FigureEightStatus.md) -- [ActuatorArmed](../msg_docs/ActuatorArmed.md) -- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) -- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) -- [FollowTarget](../msg_docs/FollowTarget.md) -- [DebugArray](../msg_docs/DebugArray.md) +- [LandingGearWheel](../msg_docs/LandingGearWheel.md) +- [MavlinkLog](../msg_docs/MavlinkLog.md) - [DebugValue](../msg_docs/DebugValue.md) -- [Rpm](../msg_docs/Rpm.md) -- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) -- [CellularStatus](../msg_docs/CellularStatus.md) -- [ButtonEvent](../msg_docs/ButtonEvent.md) -- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) -- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) - [PwmInput](../msg_docs/PwmInput.md) -- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) -- [RaptorStatus](../msg_docs/RaptorStatus.md) -- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) -- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md) +- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md) +- [PowerButtonState](../msg_docs/PowerButtonState.md) +- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md) +- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md) +- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md) +- [VehicleRoi](../msg_docs/VehicleRoi.md) +- [SensorHygrometer](../msg_docs/SensorHygrometer.md) +- [WheelEncoders](../msg_docs/WheelEncoders.md) +- [UlogStream](../msg_docs/UlogStream.md) +- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md) +- [ButtonEvent](../msg_docs/ButtonEvent.md) +- [RoverRateStatus](../msg_docs/RoverRateStatus.md) +- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md) +- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md) +- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md) +- [NavigatorStatus](../msg_docs/NavigatorStatus.md) +- [GainCompression](../msg_docs/GainCompression.md) +- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md) +- [RcParameterMap](../msg_docs/RcParameterMap.md) +- [DeviceInformation](../msg_docs/DeviceInformation.md) +- [Rpm](../msg_docs/Rpm.md) +- [NeuralControl](../msg_docs/NeuralControl.md) +- [Event](../msg_docs/Event.md) +- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md) +- [PpsCapture](../msg_docs/PpsCapture.md) +- [FollowTarget](../msg_docs/FollowTarget.md) +- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md) +- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md) +- [TaskStackInfo](../msg_docs/TaskStackInfo.md) +- [CameraTrigger](../msg_docs/CameraTrigger.md) +- [Airspeed](../msg_docs/Airspeed.md) +- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md) +- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md) +- [ActuatorTest](../msg_docs/ActuatorTest.md) +- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md) +- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [LedControl](../msg_docs/LedControl.md) +- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md) +- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md) +- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md) +- [MagWorkerData](../msg_docs/MagWorkerData.md) +- [Px4ioStatus](../msg_docs/Px4ioStatus.md) +- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) +- [DebugKeyValue](../msg_docs/DebugKeyValue.md) +- [DebugVect](../msg_docs/DebugVect.md) +- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md) +- [CellularStatus](../msg_docs/CellularStatus.md) +- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md) +- [QshellRetval](../msg_docs/QshellRetval.md) +- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) - [SensorBaro](../msg_docs/SensorBaro.md) -- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [DatamanResponse](../msg_docs/DatamanResponse.md) +- [OrbTestMedium](../msg_docs/OrbTestMedium.md) +- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md) +- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md) +- [GpsInjectData](../msg_docs/GpsInjectData.md) +- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md) +- [SensorUwb](../msg_docs/SensorUwb.md) +- [CameraCapture](../msg_docs/CameraCapture.md) +- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) +- [DatamanRequest](../msg_docs/DatamanRequest.md) +- [GpioIn](../msg_docs/GpioIn.md) +- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md) +- [Mission](../msg_docs/Mission.md) +- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md) +- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md) +- [DebugArray](../msg_docs/DebugArray.md) +- [GeneratorStatus](../msg_docs/GeneratorStatus.md) +- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md) +- [SensorGyro](../msg_docs/SensorGyro.md) - [InputRc](../msg_docs/InputRc.md) - [AirspeedWind](../msg_docs/AirspeedWind.md) -- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md) +- [LandingTargetPose](../msg_docs/LandingTargetPose.md) +- [OrbitStatus](../msg_docs/OrbitStatus.md) - [Vtx](../msg_docs/Vtx.md) -- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md) -- [SatelliteInfo](../msg_docs/SatelliteInfo.md) -- [TaskStackInfo](../msg_docs/TaskStackInfo.md) -- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) -- [GeneratorStatus](../msg_docs/GeneratorStatus.md) -- [MissionResult](../msg_docs/MissionResult.md) -- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md) -- [ActuatorTest](../msg_docs/ActuatorTest.md) -- [IrlockReport](../msg_docs/IrlockReport.md) -- [AdcReport](../msg_docs/AdcReport.md) -- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md) -- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md) -- [Ping](../msg_docs/Ping.md) +- [LoggerStatus](../msg_docs/LoggerStatus.md) +- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md) +- [GeofenceStatus](../msg_docs/GeofenceStatus.md) +- [Gripper](../msg_docs/Gripper.md) +- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md) +- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md) +- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md) +- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md) +- [EstimatorStatus](../msg_docs/EstimatorStatus.md) +- [RaptorInput](../msg_docs/RaptorInput.md) +- [GpioOut](../msg_docs/GpioOut.md) +- [CameraStatus](../msg_docs/CameraStatus.md) - [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md) +- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md) +- [LogMessage](../msg_docs/LogMessage.md) +- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md) +- [RaptorStatus](../msg_docs/RaptorStatus.md) +- [SensorCorrection](../msg_docs/SensorCorrection.md) +- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md) +- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md) +- [OrbTest](../msg_docs/OrbTest.md) +- [SensorGyroFft](../msg_docs/SensorGyroFft.md) +- [PowerMonitor](../msg_docs/PowerMonitor.md) +- [VehicleConstraints](../msg_docs/VehicleConstraints.md) +- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md) +- [SensorAirflow](../msg_docs/SensorAirflow.md) +- [TecsStatus](../msg_docs/TecsStatus.md) +- [EstimatorBias](../msg_docs/EstimatorBias.md) +- [SensorMag](../msg_docs/SensorMag.md) +- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md) +- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md) +- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md) +- [ActuatorArmed](../msg_docs/ActuatorArmed.md) +- [ActionRequest](../msg_docs/ActionRequest.md) +- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) +- [MountOrientation](../msg_docs/MountOrientation.md) +- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md) +- [QshellReq](../msg_docs/QshellReq.md) +- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md) +- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md) +- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md) +- [EscStatus](../msg_docs/EscStatus.md) +- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md) - [Cpuload](../msg_docs/Cpuload.md) +- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md) +- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md) +- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md) +- [DifferentialPressure](../msg_docs/DifferentialPressure.md) +- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md) +- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md) +- [SensorsStatus](../msg_docs/SensorsStatus.md) +- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md) +- [SensorAccel](../msg_docs/SensorAccel.md) +- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md) +- [HomePositionV0](../msg_docs/HomePositionV0.md) +- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md) +- [FigureEightStatus](../msg_docs/FigureEightStatus.md) +- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md) +- [HealthReport](../msg_docs/HealthReport.md) +- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md) +- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md) +- [SensorSelection](../msg_docs/SensorSelection.md) +- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md) +- [FuelTankStatus](../msg_docs/FuelTankStatus.md) +- [RtlStatus](../msg_docs/RtlStatus.md) +- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md) +- [BatteryInfo](../msg_docs/BatteryInfo.md) +- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md) +- [AdcReport](../msg_docs/AdcReport.md) +- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md) +- [TakeoffStatus](../msg_docs/TakeoffStatus.md) +- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md) +- [VehicleImu](../msg_docs/VehicleImu.md) +- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md) +- [HeaterStatus](../msg_docs/HeaterStatus.md) +- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md) +- [TuneControl](../msg_docs/TuneControl.md) +- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md) +- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md) +- [VehicleAirData](../msg_docs/VehicleAirData.md) +- [RadioStatus](../msg_docs/RadioStatus.md) +- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md) +- [VelocityLimits](../msg_docs/VelocityLimits.md) +- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md) +- [EstimatorStates](../msg_docs/EstimatorStates.md) +- [Ping](../msg_docs/Ping.md) +- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md) +- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md) +- [GpsDump](../msg_docs/GpsDump.md) +- [SensorTemp](../msg_docs/SensorTemp.md) +- [RcChannels](../msg_docs/RcChannels.md) +- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md) +- [SatelliteInfo](../msg_docs/SatelliteInfo.md) +- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md) ::: diff --git a/docs/zh/modules/hello_sky.md b/docs/zh/modules/hello_sky.md index 87e4ebffa4..48007499ea 100644 --- a/docs/zh/modules/hello_sky.md +++ b/docs/zh/modules/hello_sky.md @@ -12,13 +12,15 @@ These are covered in [Application/Module Template](../modules/module_template.md 以下内容是您需要提前准备的: -- [PX4 SITL Simulator](../simulation/index.md) _or_ a [PX4-compatible flight controller](../flight_controller/index.md). +- [Gazebo Simulator](../sim_gazebo_gz/index.md) (or another [PX4 SITL Simulator](../simulation/index.md)) _or_ a [PX4-compatible flight controller](../flight_controller/index.md). - [PX4 Development Toolchain](../dev_setup/dev_env.md) for the desired target. - [Download the PX4 Source Code](../dev_setup/building_px4.md#download-the-px4-source-code) from Github The source code [PX4-Autopilot/src/examples/px4_simple_app](https://github.com/PX4/PX4-Autopilot/tree/main/src/examples/px4_simple_app) directory contains a completed version of this tutorial that you can review if you get stuck. -- Rename (or delete) the **px4_simple_app** directory. +:::tip +Rename (or delete) the **px4_simple_app** directory. +::: ## 最小的应用程序 @@ -34,7 +36,7 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too ```c /**************************************************************************** * - * Copyright (c) 2012-2022 PX4 Development Team. All rights reserved. + * Copyright (c) 2012-2026 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -67,7 +69,7 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too ``` - 将下面的代码复制到头部注释的下方, - 该注释应出现在所有贡献的文件中! + Similar code should be present in all contributed files! ```c /** @@ -150,6 +152,9 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too ) ``` + Note that in your own modules you'd use the current copyright year! + We're using `2015` here to match the example. + The `px4_add_module()` method builds a static library from a module description. - The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`). @@ -170,7 +175,7 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too 4. Create and open a new _Kconfig_ definition file named **Kconfig** and define your symbol for naming (see [Kconfig naming convention](../hardware/porting_guide_config.md#px4-kconfig-symbol-naming-convention)). 复制下面的文本: - ```text + ```txt menuconfig EXAMPLES_PX4_SIMPLE_APP bool "px4_simple_app" default n @@ -185,27 +190,34 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too Applications are added to the build/firmware in the appropriate board-level _px4board_ file for your target: - PX4 SITL (Simulator): [PX4-Autopilot/boards/px4/sitl/default.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/sitl/default.px4board) -- Pixhawk v1/2: [PX4-Autopilot/boards/px4/fmu-v2/default.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v2/default.px4board) -- Pixracer (px4/fmu-v4): [PX4-Autopilot/boards/px4/fmu-v4/default.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v4/default.px4board) +- Pixhawk 6X (px4/fmu-v6x): [PX4-Autopilot/boards/px4/fmu-v6x/default.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board) - _px4board_ files for other boards can be found in [PX4-Autopilot/boards/](https://github.com/PX4/PX4-Autopilot/tree/main/boards) -To enable the compilation of the application into the firmware add the corresponding Kconfig key `CONFIG_EXAMPLES_PX4_SIMPLE_APP=y` in the _px4board_ file or run [boardconfig](../hardware/porting_guide_config.md#px4-menuconfig-setup) `make px4_fmu-v4_default boardconfig`: +To enable the compilation of the application into the firmware add the corresponding Kconfig key `CONFIG_EXAMPLES_PX4_SIMPLE_APP=y` in the _px4board_ file or run [boardconfig](../hardware/porting_guide_config.md#px4-menuconfig-setup). +For example, to edit the board config for FMUv6x you would do: + +```sh +make fmu-v6x_default boardconfig ``` + +And then enable the app in the _boardconfig_ UI as shown: + +```txt examples ---> [x] PX4 Simple app ---- ``` :::info -The line will already be present for most files, because the examples are included in firmware by default. +Examples are opt-in and not included in firmware by default (although they are in SITL). +You must explicitly enable them as shown above. ::: 使用特定板的命令构建示例: -- jMAVSim Simulator: `make px4_sitl_default jmavsim` -- Pixhawk v1/2: `make px4_fmu-v2_default` (or just `make px4_fmu-v2`) -- Pixhawk v3: `make px4_fmu-v4_default` -- Other boards: [Building the Code](../dev_setup/building_px4.md#building-for-nuttx) +- Gazebo Simulator: `make px4_sitl gz_x500` +- Pixhawk 6X: `make px4_fmu-v6x_default` +- Other boards: [Building the Code](../dev_setup/building_px4.md) ## 测试应用(硬件) @@ -213,8 +225,7 @@ The line will already be present for most files, because the examples are includ 启用上传器,然后重启飞控板: -- Pixhawk v1/2: `make px4_fmu-v2_default upload` -- Pixhawk v3: `make px4_fmu-v4_default upload` +- Pixhawk 6X: `make px4_fmu-v6x_default upload` 在您重启飞控板之前,它应该打印一些编译消息,并在最后打印: @@ -299,14 +310,14 @@ The benefits of the PX4 hardware abstraction comes into play here! 无需以任何方式与传感器驱动程序交互,如果板或传感器更新,也无需更新您的应用程序。 ::: -Individual message channels between applications are called [topics](../middleware/uorb.md). For this tutorial, we are interested in the [SensorCombined](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg) topic, which holds the synchronized sensor data of the complete system. +Individual message channels between applications are called [topics](../middleware/uorb.md). For this tutorial, we are interested in the [VehicleAcceleration](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAcceleration.msg) topic, which holds the filtered vehicle acceleration data. 订阅主题很简单: ```cpp -#include +#include .. -int sensor_sub_fd = orb_subscribe(ORB_ID(sensor_combined)); +int sensor_sub_fd = orb_subscribe(ORB_ID(vehicle_acceleration)); ``` The `sensor_sub_fd` is a topic handle and can be used to very efficiently perform a blocking wait for new data. @@ -317,9 +328,9 @@ Adding `poll()` to the subscription looks like (_pseudocode, look for the full i ```cpp #include -#include +#include .. -int sensor_sub_fd = orb_subscribe(ORB_ID(sensor_combined)); +int sensor_sub_fd = orb_subscribe(ORB_ID(vehicle_acceleration)); /* one could wait for multiple topics with this technique, just using one here */ px4_pollfd_struct_t fds[] = { @@ -327,26 +338,26 @@ px4_pollfd_struct_t fds[] = { }; while (true) { - /* wait for sensor update of 1 file descriptor for 1000 ms (1 second) */ - int poll_ret = px4_poll(fds, 1, 1000); - .. - if (fds[0].revents & POLLIN) { - /* obtained data for the first file descriptor */ - struct sensor_combined_s raw; - /* copy sensors raw data into local buffer */ - orb_copy(ORB_ID(sensor_combined), sensor_sub_fd, &raw); - PX4_INFO("Accelerometer:\t%8.4f\t%8.4f\t%8.4f", - (double)raw.accelerometer_m_s2[0], - (double)raw.accelerometer_m_s2[1], - (double)raw.accelerometer_m_s2[2]); - } +/* wait for sensor update of 1 file descriptor for 1000 ms (1 second) */ +int poll_ret = px4_poll(fds, 1, 1000); +.. +if (fds[0].revents & POLLIN) { + /* obtained data for the first file descriptor */ + struct vehicle_acceleration_s accel; + /* copy sensors raw data into local buffer */ + orb_copy(ORB_ID(vehicle_acceleration), sensor_sub_fd, &accel); + PX4_INFO("Accelerometer:\t%8.4f\t%8.4f\t%8.4f", + (double)accel.xyz[0], + (double)accel.xyz[1], + (double)accel.xyz[2]); +} } ``` 再次编译应用程序可以输入: ```sh -make +make px4_sitl_default ``` ### 测试 uORB 消息订阅 @@ -405,7 +416,7 @@ The [complete example code](https://github.com/PX4/PX4-Autopilot/blob/main/src/e ```c /**************************************************************************** * - * Copyright (c) 2012-2019 PX4 Development Team. All rights reserved. + * Copyright (c) 2012-2026 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -454,7 +465,7 @@ The [complete example code](https://github.com/PX4/PX4-Autopilot/blob/main/src/e #include #include -#include +#include #include __EXPORT int px4_simple_app_main(int argc, char *argv[]); @@ -463,8 +474,8 @@ int px4_simple_app_main(int argc, char *argv[]) { PX4_INFO("Hello Sky!"); - /* subscribe to sensor_combined topic */ - int sensor_sub_fd = orb_subscribe(ORB_ID(sensor_combined)); + /* subscribe to vehicle_acceleration topic */ + int sensor_sub_fd = orb_subscribe(ORB_ID(vehicle_acceleration)); /* limit the update rate to 5 Hz */ orb_set_interval(sensor_sub_fd, 200); @@ -505,20 +516,20 @@ int px4_simple_app_main(int argc, char *argv[]) if (fds[0].revents & POLLIN) { /* obtained data for the first file descriptor */ - struct sensor_combined_s raw; + struct vehicle_acceleration_s accel; /* copy sensors raw data into local buffer */ - orb_copy(ORB_ID(sensor_combined), sensor_sub_fd, &raw); + orb_copy(ORB_ID(vehicle_acceleration), sensor_sub_fd, &accel); PX4_INFO("Accelerometer:\t%8.4f\t%8.4f\t%8.4f", - (double)raw.accelerometer_m_s2[0], - (double)raw.accelerometer_m_s2[1], - (double)raw.accelerometer_m_s2[2]); + (double)accel.xyz[0], + (double)accel.xyz[1], + (double)accel.xyz[2]); /* set att and publish this information for other apps the following does not have any meaning, it's just an example */ - att.q[0] = raw.accelerometer_m_s2[0]; - att.q[1] = raw.accelerometer_m_s2[1]; - att.q[2] = raw.accelerometer_m_s2[2]; + att.q[0] = accel.xyz[0]; + att.q[1] = accel.xyz[1]; + att.q[2] = accel.xyz[2]; orb_publish(ORB_ID(vehicle_attitude), att_pub, &att); } @@ -530,7 +541,6 @@ int px4_simple_app_main(int argc, char *argv[]) } PX4_INFO("exiting"); - return 0; } ``` diff --git a/docs/zh/modules/module_template.md b/docs/zh/modules/module_template.md index fc69875c01..cf840f6cf8 100644 --- a/docs/zh/modules/module_template.md +++ b/docs/zh/modules/module_template.md @@ -22,7 +22,8 @@ PX4-Autopilot contains a template for writing a new application (module) that ru 总结: 1. Specify the dependency on the work queue library in the cmake definition file ([CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/examples/work_item/CMakeLists.txt)): - ``` + + ```txt ... DEPENDS px4_work_queue @@ -48,9 +49,11 @@ PX4-Autopilot contains a template for writing a new application (module) that ru 4. Implement the `ScheduledWorkItem::Run()` method to perform "work". -5. Implement the `task_spawn` method, specifying that the task is a work queue (using the `task_id_is_work_queue` id. +5. Implement the `task_spawn` method, specifying that the task is a work queue (using the `task_id_is_work_queue` id). -6. Schedule the work queue task using one of the scheduling methods (in the example we use `ScheduleOnInterval` from within the `init` method). +6. Schedule the work queue task using one of the scheduling methods. + In the example, `init()` calls `registerCallback()` on a uORB subscription so that `Run()` is triggered whenever a new `sensor_accel` message is published. + `ScheduleOnInterval` is an alternative for fixed-rate scheduling. ## 任务 @@ -66,6 +69,6 @@ PX4/PX4-Autopilot contains a template for writing a new application (module) tha [startup script](../concept/system_startup.md). - 命令行参数解析。 - Documentation: the `PRINT_MODULE_*` methods serve two purposes (the API is - documented [in the source code](https://github.com/PX4/PX4-Autopilot/blob/v1.8.0/src/platforms/px4_module.h#L381)): + documented [in the source code](https://github.com/PX4/PX4-Autopilot/blob/v1.17/platforms/common/include/px4_platform_common/module.h)): - They are used to print the command-line usage when entering `module help` on the console. - They are automatically extracted via script to generate the [Modules & Commands Reference](../modules/modules_main.md) page. diff --git a/docs/zh/modules/modules_driver.md b/docs/zh/modules/modules_driver.md index 3649f20f06..2190ddcb74 100644 --- a/docs/zh/modules/modules_driver.md +++ b/docs/zh/modules/modules_driver.md @@ -926,7 +926,7 @@ that can be accepted by most ESCs and servos. It is typically started with: ``` -pca9685_pwm_out start -a 0x40 -b 1 +pca9685_pwm_out start -X -a 0x40 -b 1 ``` ### Usage {#pca9685_pwm_out_usage} diff --git a/docs/zh/modules/modules_driver_imu.md b/docs/zh/modules/modules_driver_imu.md index 67f9a2713b..945e19cd43 100644 --- a/docs/zh/modules/modules_driver_imu.md +++ b/docs/zh/modules/modules_driver_imu.md @@ -130,6 +130,32 @@ adis16507 [arguments...] status print status info ``` +## adis16607 + +Source: [drivers/imu/analog_devices/adis16607](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/imu/analog_devices/adis16607) + +### Usage {#adis16607_usage} + +``` +adis16607 [arguments...] + Commands: + start + [-s] Internal SPI bus(es) + [-S] External SPI bus(es) + [-b ] board-specific bus (default=all) (external SPI: n-th bus + (default=1)) + [-c ] chip-select pin (for internal SPI) or index (for external SPI) + [-m ] SPI mode + [-f ] bus frequency in kHz + [-q] quiet startup (no message if no device found) + [-R ] Rotation + default: 0 + + stop + + status print status info +``` + ## bmi055 Source: [drivers/imu/bosch/bmi055](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/imu/bosch/bmi055) diff --git a/docs/zh/releases/main.md b/docs/zh/releases/main.md index 4856a34687..e3878d4c6a 100644 --- a/docs/zh/releases/main.md +++ b/docs/zh/releases/main.md @@ -59,7 +59,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### 仿真 -- TBD +- SIH: Add option to set wind velocity ([PX4-Autopilot#26467](https://github.com/PX4-Autopilot/pull/26467))