mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-14 06:30:05 +08:00
Compare commits
61 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bbd6d9794f | |||
| 695e2c7caa | |||
| 627072b811 | |||
| d651d9e8e2 | |||
| 574295998b | |||
| 71807c93d8 | |||
| 59ded6affd | |||
| 4a33fb169f | |||
| 11700382f6 | |||
| 3f0ddf9793 | |||
| 400bb253bd | |||
| d6e31f59cf | |||
| 3ed2f23d9c | |||
| ab6c9b7909 | |||
| b0d061b0b7 | |||
| 23613e7e4a | |||
| eeb251aa52 | |||
| 7b3fe3478b | |||
| 7aa28de922 | |||
| a9461c4d1a | |||
| fb9f8d1835 | |||
| 6361b4cd7e | |||
| 8bb82c70ee | |||
| 0071699348 | |||
| 54df6d64a6 | |||
| 7207c34c5b | |||
| 270ad06e5f | |||
| 8bafcfbac7 | |||
| 2ff83e7e7c | |||
| 035ccc8395 | |||
| 7d84911668 | |||
| 4e279b16c2 | |||
| c5652b2084 | |||
| 03fc051c29 | |||
| 96c5c7ba02 | |||
| e9874b6f05 | |||
| 15f5a18629 | |||
| b2ea7ffab6 | |||
| 9f978b05f3 | |||
| 71ac74827a | |||
| aa998d88b8 | |||
| 7e776a7b9c | |||
| 57cf570bb4 | |||
| 55b62e5f2b | |||
| 8d99569643 | |||
| 7c1dee0b41 | |||
| 70e98f17ff | |||
| e3e26b4bfd | |||
| 41e1ee6023 | |||
| 51b56a7390 | |||
| 05d94b9820 | |||
| a38cf4d9e6 | |||
| d72d99f2d8 | |||
| a2808a991c | |||
| 20ded97d8a | |||
| e5071beaa3 | |||
| 2c337b77ab | |||
| a36334de50 | |||
| 02d9c32645 | |||
| 10e3c15c54 | |||
| 359b43e575 |
@@ -150,10 +150,8 @@ Checks: '*,
|
||||
-readability-convert-member-functions-to-static,
|
||||
-readability-make-member-function-const,
|
||||
-bugprone-implicit-widening-of-multiplication-result,
|
||||
-bugprone-macro-parentheses,
|
||||
-bugprone-multi-level-implicit-pointer-conversion,
|
||||
-bugprone-signed-char-misuse,
|
||||
-bugprone-too-small-loop-variable,
|
||||
-cppcoreguidelines-avoid-non-const-global-variables,
|
||||
-cppcoreguidelines-use-default-member-init,
|
||||
-hicpp-multiway-paths-covered,
|
||||
|
||||
@@ -34,13 +34,13 @@ jobs:
|
||||
upload_sources: false
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
commit_message: New Crowdin translations - ${{ matrix.lc }}
|
||||
commit_message: 'docs(i18n): PX4 guide translations (Crowdin) - ${{ matrix.lc }}'
|
||||
localization_branch_name: l10n_crowdin_docs_translations_${{ matrix.lc }}
|
||||
crowdin_branch_name: main
|
||||
create_pull_request: true
|
||||
pull_request_base_branch_name: 'main'
|
||||
pull_request_title: New PX4 guide translations (Crowdin) - ${{ matrix.lc }}
|
||||
pull_request_body: 'New PX4 guide Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action) for ${{ matrix.lc }}'
|
||||
pull_request_title: 'docs(i18n): PX4 guide translations (Crowdin) - ${{ matrix.lc }}'
|
||||
pull_request_body: 'docs(i18n): PX4 guide Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action) for ${{ matrix.lc }}'
|
||||
pull_request_labels: 'Documentation 📑'
|
||||
pull_request_reviewers: hamishwillee
|
||||
download_language: ${{ matrix.lc }}
|
||||
|
||||
+21
-1
@@ -16,7 +16,13 @@ git checkout -b mydescriptivebranchname
|
||||
|
||||
## Edit and build the code
|
||||
|
||||
The [developer guide](https://docs.px4.io/main/en/development/development.html) explains how to set up the development environment on Mac OS, Linux or Windows. Please take note of our [coding style](https://docs.px4.io/main/en/contribute/code.html) when editing files.
|
||||
The [developer guide](https://docs.px4.io/main/en/development/development.html) explains how to set up the development environment on Mac OS, Linux or Windows.
|
||||
|
||||
### Coding standards
|
||||
|
||||
All C/C++ code must follow the [PX4 coding style](https://docs.px4.io/main/en/contribute/code.html). Formatting is enforced by [astyle](http://astyle.sourceforge.net/) in CI (`make check_format`). Code quality checks run via [clang-tidy](https://clang.llvm.org/extra/clang-tidy/). Pull requests that fail either check will not be merged.
|
||||
|
||||
Python code is checked with [mypy](https://mypy-lang.org/) and [flake8](https://flake8.pycqa.org/).
|
||||
|
||||
## Commit message convention
|
||||
|
||||
@@ -141,6 +147,20 @@ git push --force-with-lease
|
||||
|
||||
## Test your changes
|
||||
|
||||
PX4 is safety-critical software. All contributions must include adequate testing where practical:
|
||||
|
||||
- **New features** must include unit tests and/or integration tests that exercise the new functionality, where practical. Hardware-dependent changes that cannot be tested in SITL should include bench test or flight test evidence.
|
||||
- **Bug fixes** must include a regression test where practical. When automated testing is not feasible (hardware-specific issues, race conditions, etc.), provide a link to a flight log demonstrating the fix and the reproduction steps for the original bug.
|
||||
- **Reviewers** will verify that tests or test evidence exist before approving a pull request.
|
||||
|
||||
### Types of tests
|
||||
|
||||
| Test type | When to use | How to run |
|
||||
|-----------|-------------|------------|
|
||||
| **Unit tests** (gtest) | Module-level logic, math, parsing | `make tests` |
|
||||
| **SITL integration tests** (MAVSDK) | Flight behavior, failsafes, missions | `test/mavsdk_tests/` |
|
||||
| **Bench tests / flight logs** | Hardware-dependent changes | Upload logs to [Flight Review](https://logs.px4.io) |
|
||||
|
||||
Since we care about safety, we will regularly ask you for test results. Best is to do a test flight (or bench test where it applies) and upload the log file from it (on the microSD card in the logs directory) to Google Drive or Dropbox and share the link.
|
||||
|
||||
## Push your changes
|
||||
|
||||
@@ -44,8 +44,6 @@ param set-default FW_T_SINK_MIN 3
|
||||
|
||||
param set-default FW_W_EN 1
|
||||
|
||||
param set-default FD_ESCS_EN 0
|
||||
|
||||
param set-default MIS_TAKEOFF_ALT 30
|
||||
|
||||
param set-default NAV_ACC_RAD 15
|
||||
|
||||
@@ -104,4 +104,3 @@ param set-default VT_FWD_THRUST_EN 4
|
||||
param set-default VT_PITCH_MIN -5
|
||||
param set-default VT_F_TRANS_THR 1
|
||||
param set-default VT_TYPE 2
|
||||
param set-default FD_ESCS_EN 0
|
||||
|
||||
@@ -26,7 +26,6 @@ param set-default SENS_EN_GPSSIM 1
|
||||
param set-default SENS_EN_BAROSIM 1
|
||||
param set-default SENS_EN_MAGSIM 1
|
||||
param set-default COM_ARM_CHK_ESCS 0 # We don't have ESCs
|
||||
param set-default FD_ESCS_EN 0 # We don't have ESCs - but maybe we need this later?
|
||||
|
||||
# Set proper failsafes
|
||||
param set-default COM_ACT_FAIL_ACT 0
|
||||
|
||||
@@ -28,7 +28,6 @@ param set-default SIM_GZ_EN 1
|
||||
|
||||
param set-default SENS_EN_MAGSIM 1
|
||||
param set-default COM_ARM_CHK_ESCS 0 # We don't have ESCs
|
||||
param set-default FD_ESCS_EN 0
|
||||
|
||||
param set-default CA_AIRFRAME 14
|
||||
param set-default MAV_TYPE 45
|
||||
|
||||
@@ -28,7 +28,6 @@ param set-default SIM_GZ_EN 1
|
||||
|
||||
param set-default SENS_EN_MAGSIM 1
|
||||
param set-default COM_ARM_CHK_ESCS 0 # We don't have ESCs
|
||||
param set-default FD_ESCS_EN 0
|
||||
|
||||
param set-default CA_AIRFRAME 14
|
||||
param set-default MAV_TYPE 45
|
||||
|
||||
+28
-12
@@ -2,24 +2,40 @@
|
||||
|
||||
## Supported Versions
|
||||
|
||||
The following is a list of versions the development team is currently supporting.
|
||||
The following versions receive security updates:
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 1.4.x | :white_check_mark: |
|
||||
| 1.3.3 | :white_check_mark: |
|
||||
| < 1.3 | :x: |
|
||||
| 1.16.x | :white_check_mark: |
|
||||
| < 1.16 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We currently only receive security vulnerability reports through GitHub.
|
||||
We receive security vulnerability reports through GitHub Security Advisories.
|
||||
|
||||
To begin a report, please go to the top-level repository, for example, PX4/PX4-Autopilot,
|
||||
and click on the Security tab. If you are on mobile, click the ... dropdown menu, and then click Security.
|
||||
To begin a report, go to the [PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) repository
|
||||
and click on the **Security** tab. If you are on mobile, click the **...** dropdown menu, then click **Security**.
|
||||
|
||||
Click Report a Vulnerability to open the advisory form. Fill in the advisory details form.
|
||||
Make sure your title is descriptive, and the development team can find all of the relevant details needed
|
||||
to verify on the description box. We recommend you add as much data as possible. We welcome logs,
|
||||
screenshots, photos, and videos, anything that can help us verify and identify the issues being reported.
|
||||
Click **Report a Vulnerability** to open the advisory form. Fill in the advisory details form.
|
||||
Make sure your title is descriptive and the description contains all relevant details needed
|
||||
to verify the issue. We welcome logs, screenshots, photos, and videos.
|
||||
|
||||
At the bottom of the form, click Submit report. The maintainer team will be notified and will get back to you ASAP.
|
||||
At the bottom of the form, click **Submit report**.
|
||||
|
||||
## Response Process
|
||||
|
||||
1. **Acknowledgment**: The maintainer team will acknowledge your report within **7 days**.
|
||||
2. **Triage**: We will assess severity and impact and communicate next steps.
|
||||
3. **Disclosure**: We coordinate disclosure with the reporter. We follow responsible disclosure practices and will credit reporters in the advisory unless they request anonymity.
|
||||
|
||||
If you do not receive acknowledgment within 7 days, please follow up by emailing the [release managers](MAINTAINERS.md).
|
||||
|
||||
## Secure Development Practices
|
||||
|
||||
The PX4 development team applies the following practices to reduce security risk:
|
||||
|
||||
- **Code review**: All changes require peer review before merging.
|
||||
- **Static analysis**: [clang-tidy](https://clang.llvm.org/extra/clang-tidy/) runs on every pull request with warnings treated as errors.
|
||||
- **Fuzzing**: A daily fuzzing pipeline using [Google fuzztest](https://github.com/google/fuzztest) tests MAVLink message handling and GNSS driver protocol parsing.
|
||||
- **Input validation**: All external inputs (MAVLink messages, RC signals, sensor data) are validated against expected ranges before use.
|
||||
- **Compiler hardening**: Builds use `-Wall -Werror`, stack protectors, and other hardening flags where supported by the target platform.
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd boards/modalai/voxl2/libfc-sensor-api
|
||||
rm -fR build
|
||||
mkdir build
|
||||
cd build
|
||||
CC=/home/4.1.0.4/tools/linaro64/bin/aarch64-linux-gnu-gcc cmake ..
|
||||
make
|
||||
cd ../../../../..
|
||||
@@ -29,10 +29,12 @@ if /bin/ls /usr/lib/rfsa/adsp/testsig-*.so &> /dev/null; then
|
||||
/bin/echo "Found DSP signature file"
|
||||
else
|
||||
/bin/echo "[WARNING] Could not find DSP signature file"
|
||||
# Look for the DSP signature generation script
|
||||
if [ -f /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh ]; then
|
||||
/bin/echo "[INFO] Attempting to generate the DSP signature file"
|
||||
# Automatically generate the test signature so that px4 can run on SLPI DSP
|
||||
# Look for the DSP signature generation script (platform-specific)
|
||||
if [ -f /share/modalai/qcs6490-slpi-test-sig/generate-test-sig.sh ]; then
|
||||
/bin/echo "[INFO] Attempting to generate the DSP signature file (qcs6490)"
|
||||
/share/modalai/qcs6490-slpi-test-sig/generate-test-sig.sh
|
||||
elif [ -f /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh ]; then
|
||||
/bin/echo "[INFO] Attempting to generate the DSP signature file (qrb5165)"
|
||||
/share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh
|
||||
else
|
||||
/bin/echo "[ERROR] Could not find the DSP signature file generation script"
|
||||
|
||||
@@ -6,10 +6,12 @@ if /bin/ls /usr/lib/rfsa/adsp/testsig-*.so &> /dev/null; then
|
||||
/bin/echo "Found DSP signature file"
|
||||
else
|
||||
/bin/echo "[WARNING] Could not find DSP signature file"
|
||||
# Look for the DSP signature generation script
|
||||
if [ -f /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh ]; then
|
||||
/bin/echo "[INFO] Attempting to generate the DSP signature file"
|
||||
# Automatically generate the test signature so that px4 can run on SLPI DSP
|
||||
# Look for the DSP signature generation script (platform-specific)
|
||||
if [ -f /share/modalai/qcs6490-slpi-test-sig/generate-test-sig.sh ]; then
|
||||
/bin/echo "[INFO] Attempting to generate the DSP signature file (qcs6490)"
|
||||
/share/modalai/qcs6490-slpi-test-sig/generate-test-sig.sh
|
||||
elif [ -f /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh ]; then
|
||||
/bin/echo "[INFO] Attempting to generate the DSP signature file (qrb5165)"
|
||||
/share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh
|
||||
else
|
||||
/bin/echo "[ERROR] Could not find the DSP signature file generation script"
|
||||
|
||||
@@ -302,4 +302,28 @@ done
|
||||
# marked as optional will only be logged if they have been advertised when
|
||||
# this is started. By starting it last it makes sure to see those
|
||||
# advertisements as the other modules are starting before it.
|
||||
logger start
|
||||
#
|
||||
# Set logger mode based on SDLOG_MODE parameter:
|
||||
# 0: log when armed until disarm (default)
|
||||
# 1: log from boot until disarm
|
||||
# 2: log from boot until shutdown
|
||||
# 3: log based on AUX1 RC channel
|
||||
# 4: log from first armed until shutdown
|
||||
LOGGER_ARGS=""
|
||||
if param compare SDLOG_MODE 1
|
||||
then
|
||||
LOGGER_ARGS="-e"
|
||||
fi
|
||||
if param compare SDLOG_MODE 2
|
||||
then
|
||||
LOGGER_ARGS="-f"
|
||||
fi
|
||||
if param compare SDLOG_MODE 3
|
||||
then
|
||||
LOGGER_ARGS="-x"
|
||||
fi
|
||||
if param compare SDLOG_MODE 4
|
||||
then
|
||||
LOGGER_ARGS="-a"
|
||||
fi
|
||||
logger start $LOGGER_ARGS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Stack: PX4 Pro
|
||||
# Vehicle: Amovlab F410
|
||||
# Version: 1.15.4
|
||||
# Version: 1.15.4
|
||||
# Git Revision: 99c40407ff000000
|
||||
#
|
||||
# Vehicle-Id Component-Id Name Value Type
|
||||
@@ -479,11 +479,6 @@
|
||||
1 1 EKF2_WIND_NSD 0.050000000745058060 9
|
||||
1 1 EV_TSK_RC_LOSS 0 6
|
||||
1 1 EV_TSK_STAT_DIS 0 6
|
||||
1 1 FD_ACT_EN 1 6
|
||||
1 1 FD_ACT_MOT_C2T 2.000000000000000000 9
|
||||
1 1 FD_ACT_MOT_THR 0.200000002980232239 9
|
||||
1 1 FD_ACT_MOT_TOUT 100 6
|
||||
1 1 FD_ESCS_EN 1 6
|
||||
1 1 FD_EXT_ATS_EN 0 6
|
||||
1 1 FD_EXT_ATS_TRIG 1900 6
|
||||
1 1 FD_FAIL_P 60 6
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 118 KiB |
@@ -759,6 +759,7 @@
|
||||
- [Receiving Messages](mavlink/receiving_messages.md)
|
||||
- [Custom MAVLink Messages](mavlink/custom_messages.md)
|
||||
- [Message Signing](mavlink/message_signing.md)
|
||||
- [Security Hardening](mavlink/security_hardening.md)
|
||||
- [Protocols/Microservices](mavlink/protocols.md)
|
||||
- [Standard Modes Protocol](mavlink/standard_modes.md)
|
||||
- [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](middleware/uxrce_dds.md)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -413,7 +413,6 @@ They recommend sensors, power systems, and other components from the same manufa
|
||||
- [Holybro Pixhawk 6X Wiring Quickstart](../assembly/quick_start_pixhawk6x.md)
|
||||
- [Holybro Pixhawk 5X Wiring Quickstart](../assembly/quick_start_pixhawk5x.md)
|
||||
- [Holybro Pixhawk 4 Wiring Quickstart](../assembly/quick_start_pixhawk4.md)
|
||||
- [Holybro Pixhawk 4 Mini (Discontinued) Wiring Quickstart](../assembly/quick_start_pixhawk4_mini.md)
|
||||
- [Holybro Durandal Wiring Quickstart](../assembly/quick_start_durandal.md)
|
||||
- [Holybro Pix32 v5 Wiring Quickstart](../assembly/quick_start_holybro_pix32_v5.md)
|
||||
- [Cube Wiring Quickstart](../assembly/quick_start_cube.md) (All cube variants)
|
||||
|
||||
@@ -1,161 +0,0 @@
|
||||
# _Pixhawk 4 Mini_ Wiring Quick Start
|
||||
|
||||
:::warning
|
||||
PX4 does not manufacture this (or any) autopilot.
|
||||
Contact the [manufacturer](https://holybro.com/) for hardware support or compliance issues.
|
||||
:::
|
||||
|
||||
This quick start guide shows how to power the [_Pixhawk<sup>®</sup> 4 Mini_](../flight_controller/pixhawk4_mini.md) flight controller and connect its most important peripherals.
|
||||
|
||||

|
||||
|
||||
## Wiring Chart Overview
|
||||
|
||||
The image below shows where to connect the most important sensors and peripherals (except for motors and servos).
|
||||
|
||||

|
||||
|
||||
:::tip
|
||||
More information about available ports can be found here: [_Pixhawk 4 Mini_ > Interfaces](../flight_controller/pixhawk4_mini.md#interfaces).
|
||||
:::
|
||||
|
||||
## Mount and Orient Controller
|
||||
|
||||
_Pixhawk 4 Mini_ should be mounted on your frame using vibration-damping foam pads (included in the kit).
|
||||
It should be positioned as close to your vehicle’s center of gravity as possible, oriented top-side up with the arrow pointing towards the front of the vehicle.
|
||||
|
||||

|
||||
|
||||
::: info
|
||||
If the controller cannot be mounted in the recommended/default orientation (e.g. due to space constraints) you will need to configure the autopilot software with the orientation that you actually used: [Flight Controller Orientation](../config/flight_controller_orientation.md).
|
||||
:::
|
||||
|
||||
## GPS + Compass + Buzzer + Safety Switch + LED
|
||||
|
||||
Attach the provided GPS with integrated compass, safety switch, buzzer, and LED to the **GPS MODULE** port. The GPS/Compass should be [mounted on the frame](../assembly/mount_gps_compass.md) as far away from other electronics as possible, with the direction marker towards the front of the vehicle (separating the compass from other electronics will reduce interference).
|
||||
|
||||

|
||||
|
||||
::: info
|
||||
The GPS module's integrated safety switch is enabled _by default_ (when enabled, PX4 will not let you arm the vehicle).
|
||||
To disable the safety press and hold the safety switch for 1 second.
|
||||
You can press the safety switch again to enable safety and disarm the vehicle (this can be useful if, for whatever reason, you are unable to disarm the vehicle from your remote control or ground station).
|
||||
:::
|
||||
|
||||
## Power
|
||||
|
||||
The Power Management Board (PMB) serves the purpose of a power module as well as a power distribution board.
|
||||
In addition to providing regulated power to _Pixhawk 4 Mini_ and the ESCs, it sends information to the autopilot about the battery’s voltage and current draw.
|
||||
|
||||
Connect the output of the PMB that comes with the kit to the **POWER** port of the _Pixhawk 4 Mini_ using a 6-wire cable.
|
||||
The connections of the PMB, including power supply and signal connections to the ESCs and servos, are explained in the image below.
|
||||
|
||||

|
||||
|
||||
::: info
|
||||
The image above only shows the connection of a single ESC and a single servo.
|
||||
Connect the remaining ESCs and servos similarly.
|
||||
:::
|
||||
|
||||
| Pin(s) or Connector | Function |
|
||||
| ------------------- | -------------------------------------------------------------------------- |
|
||||
| B+ | Connect to ESC B+ to power the ESC |
|
||||
| GND | Connect to ESC Ground |
|
||||
| PWR | JST-GH 6-pin Connector, 5V 3A output<br> connect to _Pixhawk 4 Mini_ POWER |
|
||||
| BAT | Power Input, connect to 2~12s LiPo Battery |
|
||||
|
||||
The pinout of the _Pixhawk 4 Mini_ **POWER** port is shown below.
|
||||
The `CURRENT` signal should carry an analog voltage from 0-3.3V for 0-120A as default.
|
||||
The `VOLTAGE` signal should carry an analog voltage from 0-3.3V for 0-60V as default.
|
||||
The VCC lines have to offer at least 3A continuous and should default to 5.1V. A lower voltage of 5V is still acceptable, but discouraged.
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| -------- | ------- | ----- |
|
||||
| 1(red) | VCC | +5V |
|
||||
| 2(black) | VCC | +5V |
|
||||
| 3(black) | CURRENT | +3.3V |
|
||||
| 4(black) | VOLTAGE | +3.3V |
|
||||
| 5(black) | GND | GND |
|
||||
| 6(black) | GND | GND |
|
||||
|
||||
::: info
|
||||
If using a plane or rover, the 8 pin power (+) rail of **MAIN OUT** will need to be separately powered in order to drive servos for rudders, elevons, etc.
|
||||
To do this, the power rail needs to be connected to a BEC equipped ESC, a standalone 5V BEC, or a 2S LiPo battery.
|
||||
Be careful with the voltage of servo you are going to use here.
|
||||
:::
|
||||
|
||||
<!--In the future, when Pixhawk 4 kit is available, add wiring images/videos for different airframes.-->
|
||||
|
||||
::: info
|
||||
Using the Power Module that comes with the kit you will need to configure the _Number of Cells_ in the [Power Settings](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/power.html) but you won't need to calibrate the _voltage divider_.
|
||||
You will have to update the _voltage divider_ if you are using any other power module (e.g. the one from the Pixracer).
|
||||
:::
|
||||
|
||||
## Radio Control
|
||||
|
||||
A remote control (RC) radio system is required if you want to _manually_ control your vehicle (PX4 does not require a radio system for autonomous flight modes).
|
||||
|
||||
You will need to [select a compatible transmitter/receiver](../getting_started/rc_transmitter_receiver.md) and then _bind_ them so that they communicate (read the instructions that come with your specific transmitter/receiver).
|
||||
|
||||
The instructions below show how to connect the different types of receivers to _Pixhawk 4 Mini_:
|
||||
|
||||
- Spektrum/DSM or S.BUS receivers connect to the **DSM/SBUS RC** input.
|
||||
|
||||

|
||||
|
||||
- PPM receivers connect to the **PPM RC** input port.
|
||||
|
||||

|
||||
|
||||
- PPM and PWM receivers that have an _individual wire for each channel_ must connect to the **PPM RC** port _via a PPM encoder_ [like this one](https://www.getfpv.com/radios/radio-accessories/holybro-ppm-encoder-module.html) (PPM-Sum receivers use a single signal wire for all channels).
|
||||
|
||||
For more information about selecting a radio system, receiver compatibility, and binding your transmitter/receiver pair, see: [Remote Control Transmitters & Receivers](../getting_started/rc_transmitter_receiver.md).
|
||||
|
||||
## Telemetry Radio (Optional)
|
||||
|
||||
Telemetry radios may be used to communicate and control a vehicle in flight from a ground station (for example, you can direct the UAV to a particular position, or upload a new mission).
|
||||
|
||||
The vehicle-based radio should be connected to the **TELEM1** port as shown below (if connected to this port, no further configuration is required).
|
||||
The other radio is connected to your ground station computer or mobile device (usually by USB).
|
||||
|
||||

|
||||
|
||||
## microSD Card (Optional)
|
||||
|
||||
SD cards are highly recommended as they are needed to [log and analyse flight details](../getting_started/flight_reporting.md), to run missions, and to use UAVCAN-bus hardware.
|
||||
Insert the card (included in the kit) into _Pixhawk 4 Mini_ as shown below.
|
||||
|
||||

|
||||
|
||||
:::tip
|
||||
For more information see [Basic Concepts > SD Cards (Removable Memory)](../getting_started/px4_basic_concepts.md#sd-cards-removable-memory).
|
||||
:::
|
||||
|
||||
## Motors
|
||||
|
||||
Motors/servos are connected to the **MAIN OUT** ports in the order specified for your vehicle in the [Airframe Reference](../airframes/airframe_reference.md). See [_Pixhawk 4 Mini_ > Supported Platforms](../flight_controller/pixhawk4_mini.md#supported-platforms) for more information.
|
||||
|
||||
::: info
|
||||
This reference lists the output port to motor/servo mapping for all supported air and ground frames (if your frame is not listed in the reference then use a "generic" airframe of the correct type).
|
||||
:::
|
||||
|
||||
:::warning
|
||||
The mapping is not consistent across frames (e.g. you can't rely on the throttle being on the same output for all plane frames).
|
||||
Make sure to use the correct mapping for your vehicle.
|
||||
:::
|
||||
|
||||
## Other Peripherals
|
||||
|
||||
The wiring and configuration of optional/less common components is covered within the topics for individual [peripherals](../peripherals/index.md).
|
||||
|
||||
## Configuration
|
||||
|
||||
General configuration information is covered in: [Autopilot Configuration](../config/index.md).
|
||||
|
||||
QuadPlane specific configuration is covered here: [QuadPlane VTOL Configuration](../config_vtol/vtol_quad_configuration.md)
|
||||
|
||||
<!-- Nice to have detailed wiring infographic and instructions for different vehicle types. -->
|
||||
|
||||
## Further information
|
||||
|
||||
- [_Pixhawk 4 Mini_](../flight_controller/pixhawk4_mini.md)
|
||||
@@ -28,7 +28,7 @@ In addition you will need:
|
||||
The _Kopis 2_ comes preinstalled with Betaflight.
|
||||
|
||||
Before loading PX4 firmware you must first install the PX4 bootloader.
|
||||
Instructions for installing the bootloader can be found in the [Kakute F7](../flight_controller/kakutef7.md#bootloader) topic (this is the flight controller board on the _Kopis 2_).
|
||||
Download the [kakutef7_bl.hex](https://raw.githubusercontent.com/PX4/PX4-Autopilot/release/1.17/docs/assets/flight_controller/kakutef7/kakutef7_bl_0b3fbe2da0.hex?download=true) bootloader binary and read [PX4 Bootloader Flashing onto Betaflight Systems](../advanced_config/bootloader_update_from_betaflight.md) for flashing instructions.
|
||||
|
||||
:::tip
|
||||
You can always [reinstall Betaflight](../advanced_config/bootloader_update_from_betaflight.md#reinstall-betaflight) later if you want!
|
||||
|
||||
@@ -23,16 +23,10 @@ The sections below outline/link to the wiring and system console information for
|
||||
|
||||
### Board-Specific Wiring
|
||||
|
||||
The System Console UART pinouts/debug ports are typically documented in [autopilot overview pages](../flight_controller/index.md) (some are linked below):
|
||||
The System Console UART pinouts/debug ports are typically documented in the affected [autopilot overview pages](../flight_controller/index.md).
|
||||
For example, see [mRo Pixhawk](../flight_controller/mro_pixhawk.md#console-port) and [Pixracer](../flight_controller/pixracer.md#debug-port).
|
||||
|
||||
- [3DR Pixhawk v1 Flight Controller](../flight_controller/pixhawk.md#console-port) (also applies to
|
||||
[mRo Pixhawk](../flight_controller/mro_pixhawk.md#debug-ports), [Holybro pix32](../flight_controller/holybro_pix32.md#debug-port))
|
||||
- [Pixhawk 3](../flight_controller/pixhawk3_pro.md#debug-port)
|
||||
- [Pixracer](../flight_controller/pixracer.md#debug-port)
|
||||
|
||||
<a id="pixhawk_debug_port"></a>
|
||||
|
||||
### Pixhawk Debug Port
|
||||
### Pixhawk Debug Port {#pixhawk_debug_port}
|
||||
|
||||
Pixhawk flight controllers usually come with a [Pixhawk Connector Standard Debug Port](../debug/swd_debug.md#pixhawk-connector-standard-debug-ports) which will be either the 10 pin [Pixhawk Debug Full](../debug/swd_debug.md#pixhawk-debug-full) or 6 pin [Pixhawk Debug Mini](../debug/swd_debug.md#pixhawk-debug-mini) port.
|
||||
|
||||
|
||||
@@ -14,10 +14,11 @@ They are listed because you may be using them in an existing drone, and because
|
||||
- _CUAV Pixhack v3_ (FMUv3) — last published in [PX4 v1.15](https://docs.px4.io/v1.15/en/flight_controller/pixhack_v3) <!-- 202603 removed doc -->
|
||||
- _Aerotenna OcPoC-Zynq Mini_ — last published in [PX4v1.11](https://docs.px4.io/v1.11/en/flight_controller/ocpoc_zynq#aerotenna-ocpoc-zynq-mini-flight-controller) <!-- 202603 removed doc -->
|
||||
- _Holybro Pixhawk 4 Mini_ (FMUv5) -— last published in [PX4 v1.16](https://docs.px4.io/v1.16/en/flight_controller/pixhawk4_mini) <!-- 202603 removed doc -->
|
||||
- _Holybro Kakute F7_ — last published in [PX4 v1.15](https://docs.px4.io/v1.15/en/flight_controller/kakutef7) <!-- 202603 removed doc -->
|
||||
- _Holybro Pixhawk Mini_ (FMUv3) — last published in [PX4 v1.15](https://docs.px4.io/v1.15/en/flight_controller/pixhawk_mini) <!-- 202603 removed doc -->
|
||||
- _Holybro Kakute F7_ — Marked as discontinued in PX4 v1.15.
|
||||
Last published in [PX4 v1.17](https://docs.px4.io/v1.17/en/flight_controller/kakutef7). <!-- 202603 removed doc -->
|
||||
- _Holybro Pixhawk Mini_ (FMUv3) — last published in [PX4 v1.16](https://docs.px4.io/v1.16/en/flight_controller/pixhawk_mini) <!-- 202603 removed doc -->
|
||||
- _Holybro Pixfalcon_ (Pixhawk FMUv2) — last published in [PX4 v1.16](https://docs.px4.io/v1.16/en/flight_controller/pixfalcon) <!-- Discontinued around v1.15/2024. -->
|
||||
- _Holybro Pix32_ (FMUv2) — last published in [PX4 v1.15](https://docs.px4.io/v1.15/en/flight_controller/holybro_pix32) <!-- 202603 removed doc -->
|
||||
- _Holybro Pix32_ (FMUv2) — last published in [PX4 v1.16](https://docs.px4.io/v1.16/en/flight_controller/holybro_pix32) <!-- 202603 removed doc -->
|
||||
- _ModalAI VOXL Flight_ — last published in [PX4 v1.16](https://docs.px4.io/v1.16/en/flight_controller/modalai_voxl_flight) <!-- 202603 removed doc -->
|
||||
- _ModalAI Flight Core v1_ — last published in [PX4 v1.11](https://docs.px4.io/v1.11/en/flight_controller/modalai_fc_v1) <!-- 202603 removed doc -->
|
||||
- _mRobotics-X2.1_ (FMUv2) — last published in [PX4 v1.16](https://docs.px4.io/v1.16/en/flight_controller/mro_x2.1) <!-- 202507 removed doc -->
|
||||
|
||||
@@ -75,11 +75,172 @@ make px4_fmu-v3_default
|
||||
|
||||
## Debug Ports
|
||||
|
||||
See [3DR Pixhawk 1 > Debug Ports](../flight_controller/pixhawk.md#debug-ports)
|
||||
### Console Port
|
||||
|
||||
The [PX4 System Console](../debug/system_console.md) runs on the port labeled [SERIAL4/5](#serial-4-5-port).
|
||||
|
||||
::: tip
|
||||
A convenient way to connect to the console is to use a [Zubax BugFace BF1](https://github.com/Zubax/bugface_bf1), as it comes with connectors that can be used with several different Pixhawk devices.
|
||||
Simply connect the 6-pos DF13 1:1 cable on the [Zubax BugFace BF1](https://github.com/Zubax/bugface_bf1) to the Pixhawk `SERIAL4/5` port.
|
||||
|
||||

|
||||
:::
|
||||
|
||||
The pinout is standard serial pinout, designed to connect to a [3.3V FTDI](https://www.digikey.com/en/products/detail/TTL-232R-3V3/768-1015-ND/1836393) cable (5V tolerant).
|
||||
|
||||
| 3DR Pixhawk 1 | | FTDI | |
|
||||
| ------------- | --------- | ---- | ---------------- |
|
||||
| 1 | +5V (red) | | N/C |
|
||||
| 2 | S4 Tx | | N/C |
|
||||
| 3 | S4 Rx | | N/C |
|
||||
| 4 | S5 Tx | 5 | FTDI RX (yellow) |
|
||||
| 5 | S5 Rx | 4 | FTDI TX (orange) |
|
||||
| 6 | GND | 1 | FTDI GND (black) |
|
||||
|
||||
The wiring for an FTDI cable to a 6-pos DF13 1:1 connector is shown in the figure below.
|
||||
|
||||

|
||||
|
||||
The complete wiring is shown below.
|
||||
|
||||

|
||||
|
||||
::: info
|
||||
For information on how to _use_ the console see: [System Console](../debug/system_console.md).
|
||||
:::
|
||||
|
||||
### SWD Port
|
||||
|
||||
The [SWD](../debug/swd_debug.md) (JTAG) ports are hidden under the cover (which must be removed for hardware debugging).
|
||||
There are separate ports for FMU and IO, as highlighted below.
|
||||
|
||||

|
||||
|
||||
The ports are ARM 10-pin JTAG connectors, which you will probably have to solder.
|
||||
The pinout for the ports is shown below (the square markers in the corners above indicates pin 1).
|
||||
|
||||

|
||||
|
||||
::: info
|
||||
All Pixhawk FMUv2 boards have a similar SWD port.
|
||||
:::
|
||||
|
||||
## Pinouts
|
||||
|
||||
See [3DR Pixhawk 1 > Pinouts](../flight_controller/pixhawk.md#pinouts)
|
||||
#### TELEM1, TELEM2 ports
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | --------- | ----- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | TX (OUT) | +3.3V |
|
||||
| 3 (blk) | RX (IN) | +3.3V |
|
||||
| 4 (blk) | CTS (IN) | +3.3V |
|
||||
| 5 (blk) | RTS (OUT) | +3.3V |
|
||||
| 6 (blk) | GND | GND |
|
||||
|
||||
#### GPS port
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | -------- | ----- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | TX (OUT) | +3.3V |
|
||||
| 3 (blk) | RX (IN) | +3.3V |
|
||||
| 4 (blk) | CAN2 TX | +3.3V |
|
||||
| 5 (blk) | CAN2 RX | +3.3V |
|
||||
| 6 (blk) | GND | GND |
|
||||
|
||||
#### SERIAL 4/5 port
|
||||
|
||||
Due to space constraints two ports are on one connector.
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------- | ----- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | TX (#4) | +3.3V |
|
||||
| 3 (blk) | RX (#4) | +3.3V |
|
||||
| 4 (blk) | TX (#5) | +3.3V |
|
||||
| 5 (blk) | RX (#5) | +3.3V |
|
||||
| 6 (blk) | GND | GND |
|
||||
|
||||
#### ADC 6.6V
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------ | ----------- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | ADC IN | up to +6.6V |
|
||||
| 3 (blk) | GND | GND |
|
||||
|
||||
#### ADC 3.3V
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------ | ----------- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | ADC IN | up to +3.3V |
|
||||
| 3 (blk) | GND | GND |
|
||||
| 4 (blk) | ADC IN | up to +3.3V |
|
||||
| 5 (blk) | GND | GND |
|
||||
|
||||
#### I2C
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------ | -------------- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | SCL | +3.3 (pullups) |
|
||||
| 3 (blk) | SDA | +3.3 (pullups) |
|
||||
| 4 (blk) | GND | GND |
|
||||
|
||||
#### CAN
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------ | ---- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | CAN_H | +12V |
|
||||
| 3 (blk) | CAN_L | +12V |
|
||||
| 4 (blk) | GND | GND |
|
||||
|
||||
#### SPI
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------------ | ---- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | SPI_EXT_SCK | +3.3 |
|
||||
| 3 (blk) | SPI_EXT_MISO | +3.3 |
|
||||
| 4 (blk) | SPI_EXT_MOSI | +3.3 |
|
||||
| 5 (blk) | !SPI_EXT_NSS | +3.3 |
|
||||
| 6 (blk) | !GPIO_EXT | +3.3 |
|
||||
| 7 (blk) | GND | GND |
|
||||
|
||||
#### POWER
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | ------- | ----- |
|
||||
| 1 (red) | VCC | +5V |
|
||||
| 2 (blk) | VCC | +5V |
|
||||
| 3 (blk) | CURRENT | +3.3V |
|
||||
| 4 (blk) | VOLTAGE | +3.3V |
|
||||
| 5 (blk) | GND | GND |
|
||||
| 6 (blk) | GND | GND |
|
||||
|
||||
#### SWITCH
|
||||
|
||||
| Pin | Signal | Volt |
|
||||
| ------- | -------------- | ----- |
|
||||
| 1 (red) | VCC | +3.3V |
|
||||
| 2 (blk) | !IO_LED_SAFETY | GND |
|
||||
| 3 (blk) | SAFETY | GND |
|
||||
|
||||
## Serial Port Mapping
|
||||
|
||||
| UART | Device | Port |
|
||||
| ------ | ---------- | --------------------- |
|
||||
| UART1 | /dev/ttyS0 | IO debug |
|
||||
| USART2 | /dev/ttyS1 | TELEM1 (flow control) |
|
||||
| USART3 | /dev/ttyS2 | TELEM2 (flow control) |
|
||||
| UART4 | |
|
||||
| UART7 | CONSOLE |
|
||||
| UART8 | SERIAL4 |
|
||||
|
||||
<!-- Note: Got ports using https://github.com/PX4/PX4-user_guide/pull/672#issuecomment-598198434 -->
|
||||
|
||||
## Serial Port Mapping
|
||||
|
||||
|
||||
@@ -93,8 +93,8 @@ Order from [Holybro](https://holybro.com/products/pixhawk-6c-mini).
|
||||
|
||||
## Assembly/Setup
|
||||
|
||||
The Pixhawk 4 Mini's port is very similar to the Pixhawk 6C Mini's port.
|
||||
Please refer to the [Pixhawk 4 Mini Wiring Quick Start](../assembly/quick_start_pixhawk4_mini.md) as it provides instructions on how to assemble required/important peripherals including GPS, Power Module etc.
|
||||
The Pixhawk 6C Mini's ports are very similar to the Pixhawk 4 Mini's ports.
|
||||
Please refer to the [Pixhawk 4 Mini Wiring Quick Start](https://docs.px4.io/v1.16/en/assembly/quick_start_pixhawk4_mini) (Discontinued) as it provides instructions on how to assemble required/important peripherals including GPS, Power Module etc.
|
||||
|
||||
## Pinouts
|
||||
|
||||
@@ -199,7 +199,7 @@ The complete set of supported configurations can be seen in the [Airframes Refer
|
||||
## See Also
|
||||
|
||||
- [Holybro Docs](https://docs.holybro.com/) (Holybro)
|
||||
- [Pixhawk 4 Mini Wiring Quick Start](../assembly/quick_start_pixhawk4_mini.md) (and [Pixhawk 6C Wiring QuickStart](../assembly/quick_start_pixhawk6c.md))
|
||||
- [Pixhawk 6C Wiring QuickStart](../assembly/quick_start_pixhawk6c.md)
|
||||
- [PM02 Power Module](../power_module/holybro_pm02.md)
|
||||
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
||||
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
||||
|
||||
@@ -169,7 +169,7 @@ As we have no ground or positive BEC voltage connections we connect our `PWM` ES
|
||||
### GPS / External Magnetometer
|
||||
|
||||
I took the GPS cable which fits the connector of the used GPS and came with the Pixracer set.
|
||||
Sadly the pin assignment was completely wrong and I rewired the connector again using tweezers according to the [3DR Pixhawk Mini user manual](../flight_controller/pixhawk_mini.md#connector-pin-assignments-pin-outs) GPS port.
|
||||
Sadly the pin assignment was completely wrong and I rewired the connector again using tweezers according to the [3DR Pixhawk Mini user manual](https://docs.px4.io/v1.16/en/flight_controller/pixhawk_mini#connector-pin-assignments-pin-outs) GPS port.
|
||||
|
||||
#### Pixracer GPS/I2C Port
|
||||
|
||||
|
||||
@@ -14,6 +14,10 @@ It also links instructions for how you can add PX4 support for:
|
||||
- [Message Signing](../mavlink/message_signing.md)
|
||||
- [Protocols/Microservices](../mavlink/protocols.md)
|
||||
|
||||
::: warning
|
||||
MAVLink messages are unauthenticated by default. Without [message signing](../mavlink/message_signing.md) enabled, any device that can send MAVLink messages to the vehicle can execute commands including shell access, file operations, and flight termination. Production deployments must enable signing and follow the [Security Hardening](../mavlink/security_hardening.md) guide.
|
||||
:::
|
||||
|
||||
::: info
|
||||
We do not yet cover _command_ handling and sending, or how to implement your own microservices.
|
||||
:::
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
# MAVLink Security Hardening for Production Deployments
|
||||
|
||||
<Badge type="tip" text="PX4 v1.17" />
|
||||
|
||||
MAVLink is an open communication protocol designed for lightweight, low-latency communication between drones and ground stations.
|
||||
By default, all MAVLink messages are unauthenticated.
|
||||
This is intentional for development and testing, but **production deployments must enable [message signing](message_signing.md)** to prevent unauthorized access.
|
||||
|
||||
::: warning
|
||||
Without message signing enabled, any device that can send MAVLink messages to the vehicle (via radio, network, or serial) can execute any command, including shell access, file operations, parameter changes, mission uploads, arming, and flight termination.
|
||||
:::
|
||||
|
||||
## What Is at Risk
|
||||
|
||||
When MAVLink signing is not enabled, an attacker within communication range can:
|
||||
|
||||
| Capability | MAVLink mechanism |
|
||||
| ---------------------------- | ------------------------------------------------ |
|
||||
| Execute shell commands | `SERIAL_CONTROL` with `SERIAL_CONTROL_DEV_SHELL` |
|
||||
| Read, write, or delete files | MAVLink FTP protocol |
|
||||
| Change any flight parameter | `PARAM_SET` / `PARAM_EXT_SET` |
|
||||
| Upload or overwrite missions | Mission protocol |
|
||||
| Arm or disarm motors | `MAV_CMD_COMPONENT_ARM_DISARM` |
|
||||
| Terminate flight (crash) | `MAV_CMD_DO_FLIGHTTERMINATION` |
|
||||
| Trigger emergency landing | Spoofed `BATTERY_STATUS` |
|
||||
| Reboot the vehicle | `MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN` |
|
||||
|
||||
All of these are standard MAVLink capabilities used by ground control stations.
|
||||
Without signing, there is no distinction between a legitimate GCS and an unauthorized sender.
|
||||
|
||||
## Hardening Checklist
|
||||
|
||||
### 1. Enable Message Signing
|
||||
|
||||
Message signing provides cryptographic authentication for all MAVLink communication.
|
||||
See [Message Signing](message_signing.md) for full details.
|
||||
|
||||
Steps:
|
||||
|
||||
1. Connect the vehicle via **USB** (key provisioning only works over USB).
|
||||
2. Provision a 32-byte secret key using the [SETUP_SIGNING](https://mavlink.io/en/messages/common.html#SETUP_SIGNING) message.
|
||||
3. Set [MAV_SIGN_CFG](../advanced_config/parameter_reference.md#MAV_SIGN_CFG) to **1** (signing enabled on all links except USB) or **2** (signing on all links including USB).
|
||||
4. Provision the same key on all ground control stations and companion computers that need to communicate with the vehicle.
|
||||
5. Verify that unsigned messages from unknown sources are rejected.
|
||||
|
||||
::: info
|
||||
`MAV_SIGN_CFG=1` is recommended for most deployments.
|
||||
This enforces signing on telemetry radios and network links while allowing unsigned access over USB for maintenance.
|
||||
USB connections require physical access to the vehicle, which provides equivalent security to physical key access.
|
||||
:::
|
||||
|
||||
### 2. Secure Physical Access
|
||||
|
||||
- Protect access to the SD card. The signing key is stored at `/mavlink/mavlink-signing-key.bin` and can be read or removed by anyone with physical access.
|
||||
- USB connections bypass signing when `MAV_SIGN_CFG=1`. Ensure USB ports are not exposed in deployed configurations.
|
||||
|
||||
### 3. Secure Network Links
|
||||
|
||||
- Do not expose MAVLink UDP/TCP ports to untrusted networks or the internet.
|
||||
- Place MAVLink communication links behind firewalls or VPNs.
|
||||
- Segment MAVLink networks from business or public networks.
|
||||
- When using companion computers, audit which network interfaces MAVLink is bound to.
|
||||
|
||||
### 4. Understand the Limitations
|
||||
|
||||
- **No encryption**: Message signing provides authentication and integrity, but messages are sent in plaintext. An eavesdropper can read telemetry and commands but cannot forge them.
|
||||
- **Allowlisted messages**: A small set of [safety-critical messages](message_signing.md#unsigned-message-allowlist) (RADIO_STATUS, ADSB_VEHICLE, COLLISION) are always accepted unsigned.
|
||||
- **Key management**: There is no automatic key rotation. Keys must be reprovisioned manually via USB if compromised.
|
||||
|
||||
## Integrator Responsibility
|
||||
|
||||
PX4 is open-source flight controller firmware used by manufacturers and system integrators to build commercial and custom drone platforms.
|
||||
|
||||
Securing the communication links for a specific deployment is the responsibility of the system integrator.
|
||||
This includes:
|
||||
|
||||
- Choosing appropriate radio hardware and link security
|
||||
- Enabling and managing MAVLink message signing
|
||||
- Restricting network access to MAVLink interfaces
|
||||
- Applying firmware updates that address security issues
|
||||
- Evaluating whether the default configuration meets the security requirements of the target application
|
||||
|
||||
PX4 provides the tools for securing MAVLink communication.
|
||||
Integrators must enable and configure them for their deployment context.
|
||||
+192
-192
@@ -95,202 +95,202 @@ They are not build into the module, and hence are neither published or subscribe
|
||||
|
||||
::: details See messages
|
||||
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
:::
|
||||
|
||||
@@ -22,11 +22,11 @@ Published by the vehicle's allocation and consumed by the ESC protocol drivers e
|
||||
|
||||
## Constants
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| --------------------------------------------------------------- | -------- | ----- | ----------- |
|
||||
| Name | Type | Value | Description |
|
||||
| --------------------------------------------------------------- | -------- | ----- | --------------------------------- |
|
||||
| <a id="#MESSAGE_VERSION"></a> MESSAGE_VERSION | `uint32` | 0 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR1"></a> ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 |
|
||||
| <a id="#NUM_CONTROLS"></a> NUM_CONTROLS | `uint8` | 12 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR1"></a> ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | output_functions.yaml Motor.start |
|
||||
| <a id="#NUM_CONTROLS"></a> NUM_CONTROLS | `uint8` | 12 | output_functions.yaml Motor.count |
|
||||
|
||||
## Source Message
|
||||
|
||||
@@ -47,9 +47,9 @@ uint64 timestamp_sample # [us] Sampling timestamp of the data this control respo
|
||||
|
||||
uint16 reversible_flags # [-] Bitset indicating which motors are configured to be reversible
|
||||
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101 # output_functions.yaml Motor.start
|
||||
|
||||
uint8 NUM_CONTROLS = 12
|
||||
uint8 NUM_CONTROLS = 12 # output_functions.yaml Motor.count
|
||||
float32[12] control # [@range -1, 1] Normalized thrust. Where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors)
|
||||
```
|
||||
|
||||
|
||||
@@ -29,17 +29,7 @@ pageClass: is-wide-page
|
||||
| Name | Type | Value | Description |
|
||||
| --------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------------------- |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR1"></a> ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR2"></a> ACTUATOR_FUNCTION_MOTOR2 | `uint8` | 102 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR3"></a> ACTUATOR_FUNCTION_MOTOR3 | `uint8` | 103 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR4"></a> ACTUATOR_FUNCTION_MOTOR4 | `uint8` | 104 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR5"></a> ACTUATOR_FUNCTION_MOTOR5 | `uint8` | 105 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR6"></a> ACTUATOR_FUNCTION_MOTOR6 | `uint8` | 106 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR7"></a> ACTUATOR_FUNCTION_MOTOR7 | `uint8` | 107 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR8"></a> ACTUATOR_FUNCTION_MOTOR8 | `uint8` | 108 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR9"></a> ACTUATOR_FUNCTION_MOTOR9 | `uint8` | 109 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR10"></a> ACTUATOR_FUNCTION_MOTOR10 | `uint8` | 110 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR11"></a> ACTUATOR_FUNCTION_MOTOR11 | `uint8` | 111 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR12"></a> ACTUATOR_FUNCTION_MOTOR12 | `uint8` | 112 |
|
||||
| <a id="#ACTUATOR_FUNCTION_MOTOR_MAX"></a> ACTUATOR_FUNCTION_MOTOR_MAX | `uint8` | 112 | output_functions.yaml Motor.start + Motor.count - 1 |
|
||||
| <a id="#FAILURE_OVER_CURRENT"></a> FAILURE_OVER_CURRENT | `uint8` | 0 | (1 << 0) |
|
||||
| <a id="#FAILURE_OVER_VOLTAGE"></a> FAILURE_OVER_VOLTAGE | `uint8` | 1 | (1 << 1) |
|
||||
| <a id="#FAILURE_MOTOR_OVER_TEMPERATURE"></a> FAILURE_MOTOR_OVER_TEMPERATURE | `uint8` | 2 | (1 << 2) |
|
||||
@@ -72,19 +62,8 @@ uint8 esc_cmdcount # Counter of number of commands
|
||||
uint8 esc_state # State of ESC - depend on Vendor
|
||||
|
||||
uint8 actuator_function # actuator output function (one of Motor1...MotorN)
|
||||
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR2 = 102
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR3 = 103
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR4 = 104
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR5 = 105
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR6 = 106
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR7 = 107
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR8 = 108
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR9 = 109
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR10 = 110
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR11 = 111
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR12 = 112
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR_MAX = 112 # output_functions.yaml Motor.start + Motor.count - 1
|
||||
|
||||
uint16 failures # Bitmask to indicate the internal ESC faults
|
||||
int8 esc_power # Applied power 0-100 in % (negative values reserved)
|
||||
|
||||
@@ -26,6 +26,8 @@ This power module has integrated power distribution board and provides regulated
|
||||
|
||||
## Wiring/Connections
|
||||
|
||||
Wiring and connection examples can be found in: [Pixhawk 4 Mini > Power](../assembly/quick_start_pixhawk4_mini.md#power).
|
||||

|
||||
|
||||
<img src="../../assets/hardware/power_module/holybro_pm06/pm06_pin_map.jpg" width="450px" title="pm06" />
|
||||
This image shows the wiring and connections for the [Pixhawk 4 Mini](https://docs.px4.io/v1.16/en/assembly/quick_start_pixhawk4_mini#power) (discontinued).
|
||||
|
||||

|
||||
|
||||
@@ -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)
|
||||
|
||||
+24
-25
@@ -151,36 +151,35 @@ else {
|
||||
|
||||
## 커밋과 커밋 메시지
|
||||
|
||||
Use descriptive, multi-paragraph commit messages for all non-trivial changes.
|
||||
쉽게 이해할 수 있는 한 줄 요약과 자세한 세부정보도 기록하십시오.
|
||||
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 <Fixes #1234>, 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 <email@px4.io>
|
||||
```
|
||||
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 <your@email.com>
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -49,15 +49,15 @@ PX4 기능 추가 절차는 다음과 같습니다. 다음 예제를 따라 PX4
|
||||
git add <file name>
|
||||
```
|
||||
|
||||
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 "<your commit message>"
|
||||
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).
|
||||
|
||||
@@ -136,13 +136,13 @@ The following list shows the build commands for the [Pixhawk standard](../flight
|
||||
|
||||
- [mRo Pixhawk (FMUv3)](../flight_controller/mro_pixhawk.md): `make px4_fmu-v3_default` (supports 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.
|
||||
|
||||
@@ -71,7 +71,7 @@ PX4 _developers_ need to know the FMU version of their board, as this is require
|
||||
|
||||
주요 차이점은 아래와 같습니다.
|
||||
|
||||
- **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. 더 빨라진 CPU. 더 많은 직렬 포트. No IO processor ([Pixracer](../flight_controller/pixracer.md))
|
||||
- **FMUv4-PRO:** Slightly increased RAM. 더 많은 직렬 포트. IO processor ([Pixhawk 3 Pro](../flight_controller/pixhawk3_pro.md))
|
||||
|
||||
@@ -6,7 +6,7 @@ It is small, rugged and just large enough to host a [Pixracer](../flight_control
|
||||
주요 정보:
|
||||
|
||||
- **Frame:** Wing Wing Z-84
|
||||
- **Flight controller:** Pixracer
|
||||
- **Flight controller:** Pixracer (Discontinued)
|
||||
|
||||

|
||||
|
||||
@@ -31,8 +31,8 @@ Any small (>=12A) ESC will do:
|
||||
|
||||
- [Pixracer](../flight_controller/pixracer.md) kit (including GPS and power module)
|
||||
- FrSky D4R-II 수신기 또는 동급 (설명서에 따라 PPM 합계 출력으로 점퍼됨)
|
||||
- [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.
|
||||
|
||||
### 권장 예비 부품
|
||||
|
||||
@@ -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. 소형 GoPro 카메라를 장착할 수 있습니다.
|
||||
@@ -13,7 +14,7 @@ RTF 키트에는 RC 수신기와 텔레메트리를 제외하고, 시스템에
|
||||
주요 정보:
|
||||
|
||||
- **Frame:** Falcon Vertigo Hybrid VTOL
|
||||
- **Flight controller:** Dropix
|
||||
- **Flight controller:** Dropix (Discontineud)
|
||||
- **Wing span:** 1.3m
|
||||
|
||||

|
||||
@@ -115,21 +116,17 @@ RTF 키트는 아래와 같이 조립하여야 합니다.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_23_dropix_and_other_electronics.jpg" width="500px" title="Falcon Vertigo 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
|
||||
|
||||
#### ESC 전원 커넥터를 연결하고, 신호 케이블을 비행 컨트롤러에 연결합니다.
|
||||
|
||||
1. XT60 커넥터를 사용하여 ESC를 전원 모듈에 연결합니다.
|
||||
1. Connect the ESC to the power module using the XT60 connector
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_25_aileron_esc_connections.jpg" width="500px" title="" />
|
||||
|
||||
2. 신호 케이블을 비행 컨트롤러로 연결합니다.
|
||||
2. Pass the signals cables through to the flight controller
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_27_gps_esc_servo_connections.jpg" width="500px" title="GPS, ESC, Servo connections" />
|
||||
|
||||
#### 모터 배선
|
||||
#### Motor Wiring
|
||||
|
||||
Motor and servo wiring is nearly entirely up to you, but should match the [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) configuration, as shown in the airframe reference.
|
||||
The geometry and output assignment can be configured in the [Actuators Configuration](../config/actuators.md#actuator-outputs)
|
||||
@@ -139,81 +136,81 @@ For example, you might wire it up like this example (orientation as if "sitting
|
||||
| 포트 | 연결 |
|
||||
| ------ | ---------------------- |
|
||||
| MAIN 1 | Front right motor, CCW |
|
||||
| MAIN 2 | 후방 촤즉 모터, 반시계 방향 |
|
||||
| MAIN 3 | 전방 좌측 모터, 시계방향 |
|
||||
| MAIN 4 | 후방 우측 모터, 시계 방향 |
|
||||
| AUX 1 | 좌측 보조익 |
|
||||
| AUX 2 | 우측 보조익 |
|
||||
| AUX 3 | 승강타 |
|
||||
| AUX 4 | 방향타 |
|
||||
| AUX 5 | 스로틀 |
|
||||
| MAIN 2 | Back left motor, CCW |
|
||||
| MAIN 3 | Front left motor, CW |
|
||||
| MAIN 4 | Back right motor, CW |
|
||||
| AUX 1 | Left aileron |
|
||||
| AUX 2 | Right aileron |
|
||||
| AUX 3 | Elevator |
|
||||
| AUX 4 | Rudder |
|
||||
| AUX 5 | Throttle |
|
||||
|
||||
<a id="dropix_back"></a>
|
||||
|
||||
#### 비행 컨트롤러 연결 : 모터, 서보, RC 수신기, 전류 센서
|
||||
#### Flight Controller Connections: Motors, Servos, RC receiver, current sensor
|
||||
|
||||
아래 이미지는 dropix 비행 컨트롤러의 뒷면을 보여, 주며 쿼드 모터 케이블, 에일러론 신호 케이블, 스로틀 모터, 전류 센서 및 수신기 (RC IN) 입력 핀을 연결하기위한 출력 핀을 강조하여 표시합니다.
|
||||
The image below shows back of the dropix flight controller, highlighting the outputs pins to connect quad motors cables, aileron signal cables, throttle motor, and the current sensor and receiver (RC IN) input pins.
|
||||
|
||||
<img id="dropix_outputs" src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_33_dropix_outputs.jpg" width="500px" title="Dropix motor/servo outputs" />
|
||||
|
||||
1. 쿼드 모터 신호 케이블을 연결합니다.
|
||||
1. Connect quad motors signal cables.
|
||||
|
||||
2. 보조 출력에 에일러론 케이블과 스로틀 모터를 연결합니다.
|
||||
2. Connect the aileron cables and throttle motor in the auxiliary outputs.
|
||||
|
||||
3. ESC의 스로틀 모터 신호 케이블을 적절한 비행 컨트롤러 보조 포트에 연결합니다. ESC를 스로틀 모터에 연결합니다.
|
||||
3. Connect the throttle motor signal cable from the ESC to the appropriate flight controller auxiliary port. Connect the ESC to the throttle motor.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_37_connect_throttle_motor.jpg" width="500px" title="Connect throttle motor" />
|
||||
|
||||
4. 수신기를 RC IN에 연결합니다.
|
||||
4. Connect the receiver (RC IN).
|
||||
|
||||
<a id="dropix_front"></a>
|
||||
|
||||
#### 비행 컨트롤러 연결 : 원격 측정, 대기 속도 센서, GPS, 부저 및 안전 스위치
|
||||
#### Flight Controller Connections: Telemetry, Airspeed Sensor, GPS, Buzzer and Safety Switch
|
||||
|
||||
센서 입력, 원격 측정, 부저 및 안전 스위치는 아래 연결 다이어그램과 같이 비행 컨트롤러의 전면에 위치합니다.
|
||||
The sensor inputs, telemetry, buzzer and safety switch are located in the front of the flight controller, as shown in the connection diagram below.
|
||||
|
||||
<img src="../../assets/flight_controller/dropix/dropix_connectors_front.jpg" width="500px" alt="Dropix connectors front" title="Dropix connectors front" />
|
||||
|
||||
1. 그림과 같이 원격 측정, 대기 속도 센서, GPS, 부저 및 안전 스위치를 연결합니다.
|
||||
1. Connect the telemetry, airspeed sensor, GPS, buzzer and safety switch as shown.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_39_connect_sensors.jpg" width="500px" title="Connect sensors" />
|
||||
|
||||
#### 비행 컨트롤러 : 전원 모듈 및 외부 USB 연결
|
||||
#### Flight Controller: Connect power module and external USB
|
||||
|
||||
USB 포트, 전원 모듈 및 외부 USB에 대한 입력은 비행 컨트롤러의 오른쪽에 있습니다.
|
||||
The inputs for the USB port, power module and external USB are located on the right side of the flight controller.
|
||||
|
||||
1. 그림과 같이 전원과 USB를 연결합니다.
|
||||
1. Connect power and USB as shown
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_41_connect_power_module_usb.jpg" width="500px" title="Connect power module and USB" />
|
||||
|
||||
:::tip
|
||||
The external USB is optional.
|
||||
비행 컨트롤러를 장착 후, USB 포트에 액세스하기 어려운 경우에 사용하여야 합니다.
|
||||
It should be used if access to the USB port is difficult once the flight controller is mounted.
|
||||
:::
|
||||
|
||||
#### -- 피토 튜브 (대기 속도 센서) 설치
|
||||
#### Install the pitot tube (airspeed sensor)
|
||||
|
||||
피토 튜브는 비행기 전면에 설치되며 튜브를 통해 대기 속도 센서에 연결됩니다.
|
||||
The pitot tube is installed on the front of the plane and connected to the airspeed sensor via a tube.
|
||||
|
||||
:::warning
|
||||
It is important that nothing obstructs airflow to the Pitot tube. 이것은 고정익 비행과 쿼드에서 비행기로의 전환에 매우 중요합니다.
|
||||
It is important that nothing obstructs airflow to the Pitot tube. This is critical for fixed-wing flight and for transitioning from quad to plane.
|
||||
:::
|
||||
|
||||
1. 비행기 전면에 피토 튜브를 설치합니다
|
||||
1. Install the Pitot tube in the front of the plane
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_43_airspeed_sensor_mounting.jpg" width="500px" title="Airspeed sensor mounting" />
|
||||
|
||||
2. 연결 튜브를 고정하고 구부러 지거나 꼬이지 않았는 지 확인합니다.
|
||||
2. Secure the connecting tubing and ensure that it is not bent/kinked.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_45_airspeed_sensor_tubing.jpg" width="500px" title="Airspeed sensor mounting" />
|
||||
|
||||
3. 튜브를 대기 속도 센서에 연결합니다.
|
||||
3. Connect the tubes to the airspeed sensor.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_47_connect_airspeed_sensor_tubing.jpg" width="500px" title="Connect airspeed sensor and tubing" />
|
||||
|
||||
#### 수신기 및 원격 측정 모듈 설치 / 연결
|
||||
#### Install/connect receiver and telemetry module
|
||||
|
||||
1. 수신기와 원격 측정 모듈을 차량 프레임 외부에 붙여 넣습니다.
|
||||
1. Paste the receiver and telemetry module to the outside of the vehicle frame.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_49_receiver_mounting.jpg" width="500px" title="Paste receiver" />
|
||||
|
||||
@@ -225,27 +222,27 @@ It is important that nothing obstructs airflow to the Pitot tube. 이것은 고
|
||||
|
||||
<a id="compass_gps"></a>
|
||||
|
||||
#### GPS / 나침반 모듈
|
||||
#### GPS/Compass module
|
||||
|
||||
GPS / 나침반 모듈은 기본 방향으로 날개에 이미 장착되어 있습니다. 이를 위해 추가 작업을 할 필요가 없습니다!
|
||||
The GPS/Compass module is already mounted on the wing, in the default orientation. You don't need to have to do anything extra for this!
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_gps_compass.jpg" width="500px" title="GPS/Compass" />
|
||||
|
||||
<a id="flight_controller_orientation"></a>
|
||||
|
||||
#### 비행 컨트롤러 장착 및 방향 설정
|
||||
#### Mount and orient the flight controller
|
||||
|
||||
1. 비행 컨트롤러 방향을 270도로 설정합니다.
|
||||
1. Set your flight controller orientation to 270 degrees.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_53_flight_controller_orientation.jpg" width="500px" title="Flight controller orientation" />
|
||||
|
||||
2. 진동 감쇠폼을 사용하여 컨트롤러를 제자리에 고정합니다.
|
||||
2. Secure the controller in place using vibration damping foam.
|
||||
|
||||
### 4 단계 : 최종 조립 확인
|
||||
### Step 4: Final Assembly Checks
|
||||
|
||||
마지막 조립 단계는 차량이 안정적이고 모터가 올바르게 설정되었는 지 확인하는 것입니다.
|
||||
The final assembly step is to check the vehicle is stable and that the motors have been set up correctly.
|
||||
|
||||
1. 모터가 올바른 방향으로 회전하는지 확인하십시오 (아래 QuadX 다이어그램 참조).
|
||||
1. Check that the motors turn in the correct directions (as in the QuadX diagram below).
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_35_quad_motor_directions.png" width="200px" title="Quad motor order/directions" />
|
||||
|
||||
@@ -254,12 +251,12 @@ GPS / 나침반 모듈은 기본 방향으로 날개에 이미 장착되어 있
|
||||
|
||||
:::
|
||||
|
||||
2. 차량이 예상 무게 중심 주변에서 균형을 이루는 지 확인하십시오.
|
||||
- 손가락으로 기체의 무게 중심을 잡고 차량이 안정적인지 확인하십시오.
|
||||
2. Check the vehicle is balanced around the expected centre of gravity
|
||||
- Hold the vehicle with your fingers at the center of gravity and check that the vehicle remains stable.
|
||||
|
||||

|
||||
|
||||
- 차량이 앞이나 뒤로 기울면 모터를 움직여 균형을 잡으십시오.
|
||||
- If the vehicle leans forward or backwards, move the motors to balance it.
|
||||
|
||||

|
||||
|
||||
@@ -267,7 +264,7 @@ GPS / 나침반 모듈은 기본 방향으로 날개에 이미 장착되어 있
|
||||
|
||||
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.
|
||||
|
||||
@@ -279,7 +276,7 @@ Perform the normal [Basic Configuration](../config/index.md).
|
||||
|
||||
4. The default parameters are often sufficient for stable flight. For more detailed tuning information see [Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md).
|
||||
|
||||
보정을 마치면 VTOL이 비행할 준비가 됩니다.
|
||||
After you finish calibration the VTOL is ready to fly.
|
||||
|
||||
## 비디오
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
| Value | Mode | 설명 |
|
||||
| ----- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 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.
|
||||
@@ -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))
|
||||
|
||||
+183
-183
@@ -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)
|
||||
|
||||
:::
|
||||
|
||||
@@ -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 <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
..
|
||||
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 <poll.h>
|
||||
#include <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
..
|
||||
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 <math.h>
|
||||
|
||||
#include <uORB/uORB.h>
|
||||
#include <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
#include <uORB/topics/vehicle_attitude.h>
|
||||
|
||||
__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;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -130,6 +130,32 @@ adis16507 <command> [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 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-s] Internal SPI bus(es)
|
||||
[-S] External SPI bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
|
||||
[-m <val>] SPI mode
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-R <val>] 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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
<!-- MOVED THIS TO v1.17
|
||||
|
||||
|
||||
@@ -156,6 +156,12 @@ The airplane needs to takeoff in manual mode at full throttle.
|
||||
Also, if the airplane crashes the state estimator might lose its fix.
|
||||
:::
|
||||
|
||||
## Simulation Configuration
|
||||
|
||||
### Wind
|
||||
|
||||
SIH supports setting a wind velocity with the PX4 parameters [`SIH_WIND_N`](../advanced_config/parameter_reference.md#SIH_WIND_E) and [`SIH_WIND_E`](../advanced_config/parameter_reference.md#SIH_WIND_E) [m/s]. The parameters can also be changed during flight to simulate changing wind.
|
||||
|
||||
## Display/Visualisation (optional)
|
||||
|
||||
The SIH-simulated vehicle can be displayed using [jMAVSim](../sim_jmavsim/index.md) as a visualiser.
|
||||
|
||||
@@ -86,7 +86,8 @@ vtxtable save
|
||||
|
||||
This will create a VTX table with 5 power levels.
|
||||
|
||||
```nsh> vtxtable status
|
||||
```sh
|
||||
nsh> vtxtable status
|
||||
INFO [vtxtable] VTX table "Peak THOR T67":
|
||||
INFO [vtxtable] Power levels:
|
||||
INFO [vtxtable] 1: 0 = 25
|
||||
|
||||
@@ -27,5 +27,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^3.2.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"markdown-it": "^14.1.1",
|
||||
"esbuild": "^0.25.0"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -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)
|
||||
|
||||
+24
-25
@@ -151,36 +151,35 @@ else {
|
||||
|
||||
## Коміти та повідомлення комітів
|
||||
|
||||
Використовуйте описові повідомлення з кількома абзацами для всіх нетривіальних змін.
|
||||
Добре структуруйте їх, щоб вони мали сенс у підсумку в один рядок, але також надавали повну деталізацію.
|
||||
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 <Fixes #1234>, 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 <email@px4.io>
|
||||
```
|
||||
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 <your@email.com>
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## Запити на злиття
|
||||
|
||||
|
||||
@@ -49,15 +49,15 @@
|
||||
git add <file name>
|
||||
```
|
||||
|
||||
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 "<your commit message>"
|
||||
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).
|
||||
|
||||
@@ -136,13 +136,13 @@ The following list shows the build commands for the [Pixhawk standard](../flight
|
||||
|
||||
- [mRo Pixhawk (FMUv3)](../flight_controller/mro_pixhawk.md): `make px4_fmu-v3_default` (supports 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.
|
||||
|
||||
@@ -71,7 +71,7 @@ PX4 _developers_ need to know the FMU version of their board, as this is require
|
||||
|
||||
На дуже високому рівні, основні відмінності полягають у наступному:
|
||||
|
||||
- **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. Швидший процесор. Більше послідовних портів. No IO processor ([Pixracer](../flight_controller/pixracer.md))
|
||||
- **FMUv4-PRO:** Slightly increased RAM. Більше послідовних портів. IO processor ([Pixhawk 3 Pro](../flight_controller/pixhawk3_pro.md))
|
||||
|
||||
@@ -6,7 +6,7 @@ It is small, rugged and just large enough to host a [Pixracer](../flight_control
|
||||
Основна Інформація:
|
||||
|
||||
- **Frame:** Wing Wing Z-84
|
||||
- **Flight controller:** Pixracer
|
||||
- **Flight controller:** Pixracer (Discontinued)
|
||||
|
||||

|
||||
|
||||
@@ -31,8 +31,8 @@ Any small (>=12A) ESC will do:
|
||||
|
||||
- [Pixracer](../flight_controller/pixracer.md) kit (including GPS and power module)
|
||||
- Приймач FrSky D4R-II або йому еквівалентний (з'єднаний за допомогою перемички з виходом PPM sum відповідно до інструкції)
|
||||
- [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.
|
||||
|
||||
### Рекомендовані запасні частини
|
||||
|
||||
@@ -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. Він може нести невелику камеру GoPro.
|
||||
@@ -13,7 +14,7 @@ The _Falcon Vertigo Hybrid VTOL_ is a quadplane VTOL aircraft that has been desi
|
||||
Основна Інформація:
|
||||
|
||||
- **Frame:** Falcon Vertigo Hybrid VTOL
|
||||
- **Flight controller:** Dropix
|
||||
- **Flight controller:** Dropix (Discontineud)
|
||||
- **Wing span:** 1.3m
|
||||
|
||||

|
||||
@@ -115,105 +116,101 @@ The _Falcon Vertigo Hybrid VTOL_ is a quadplane VTOL aircraft that has been desi
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_23_dropix_and_other_electronics.jpg" width="500px" title="Falcon Vertigo 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
|
||||
|
||||
#### Підключіть роз'єм живлення ESC та прокладіть кабелі сигналів до контролера польоту
|
||||
|
||||
1. Підключіть ЕСС до модуля живлення за допомогою роз'єму XT60
|
||||
1. Connect the ESC to the power module using the XT60 connector
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_25_aileron_esc_connections.jpg" width="500px" title="" />
|
||||
|
||||
2. Передайте кабелі сигналів до контролера польоту
|
||||
2. Pass the signals cables through to the flight controller
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_27_gps_esc_servo_connections.jpg" width="500px" title="GPS, ESC, Servo connections" />
|
||||
|
||||
#### Підключення двигуна
|
||||
#### Motor Wiring
|
||||
|
||||
Motor and servo wiring is nearly entirely up to you, but should match the [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) configuration, as shown in the airframe reference.
|
||||
The geometry and output assignment can be configured in the [Actuators Configuration](../config/actuators.md#actuator-outputs)
|
||||
|
||||
Наприклад, ви можете з’єднати його так, як у цьому прикладі (орієнтація як у "сидячи в літаку"):
|
||||
For example, you might wire it up like this example (orientation as if "sitting in the plane"):
|
||||
|
||||
| Порт | Підключення |
|
||||
| ------ | -------------------------- |
|
||||
| MAIN 1 | Передній правий мотор, CCW |
|
||||
| MAIN 2 | Задній лівий мотор, CCW |
|
||||
| MAIN 3 | Передній лівий мотор, CW |
|
||||
| MAIN 4 | Задній правий мотор, CW |
|
||||
| AUX 1 | Лівий елерон |
|
||||
| AUX 2 | Правий елерон |
|
||||
| AUX 3 | Elevator |
|
||||
| AUX 4 | Rudder |
|
||||
| AUX 5 | Тяга |
|
||||
| Порт | Підключення |
|
||||
| ------ | ---------------------- |
|
||||
| MAIN 1 | Front right motor, CCW |
|
||||
| MAIN 2 | Back left motor, CCW |
|
||||
| MAIN 3 | Front left motor, CW |
|
||||
| MAIN 4 | Back right motor, CW |
|
||||
| AUX 1 | Left aileron |
|
||||
| AUX 2 | Right aileron |
|
||||
| AUX 3 | Elevator |
|
||||
| AUX 4 | Rudder |
|
||||
| AUX 5 | Throttle |
|
||||
|
||||
<a id="dropix_back"></a>
|
||||
|
||||
#### Підключення контролера польоту: Мотори, Сервомеханізми, Приймач RC, датчик струму
|
||||
#### Flight Controller Connections: Motors, Servos, RC receiver, current sensor
|
||||
|
||||
Нижче показане зображення задньої плати керування польотом dropix, підкреслюючи вихідні контакти для підключення кабелів квадрокоптерних моторів, кабелів сигналу елерону, мотору, дросельного мотору, а також контактів поточного сенсора та введення радіоприймача (RC IN).
|
||||
The image below shows back of the dropix flight controller, highlighting the outputs pins to connect quad motors cables, aileron signal cables, throttle motor, and the current sensor and receiver (RC IN) input pins.
|
||||
|
||||
<img id="dropix_outputs" src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_33_dropix_outputs.jpg" width="500px" title="Dropix motor/servo outputs" />
|
||||
|
||||
1. Підключіть сигнальні кабелі квадро моторів.
|
||||
1. Connect quad motors signal cables.
|
||||
|
||||
2. Підключіть кабелі елеронів та мотора керування ручкою газу в допоміжні виходи.
|
||||
2. Connect the aileron cables and throttle motor in the auxiliary outputs.
|
||||
|
||||
3. Підключіть кабель сигналу двигуна дроселя від ESC до відповідного допоміжного порту контролера польоту. Підключіть ESC до регулятора газу.
|
||||
3. Connect the throttle motor signal cable from the ESC to the appropriate flight controller auxiliary port. Connect the ESC to the throttle motor.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_37_connect_throttle_motor.jpg" width="500px" title="Connect throttle motor" />
|
||||
|
||||
4. Підключіть приймач (RC IN).
|
||||
4. Connect the receiver (RC IN).
|
||||
|
||||
<a id="dropix_front"></a>
|
||||
|
||||
#### Підключення контролера польоту: телеметрія, датчик швидкості повітря, GPS, сигналізація та перемикач безпеки
|
||||
#### Flight Controller Connections: Telemetry, Airspeed Sensor, GPS, Buzzer and Safety Switch
|
||||
|
||||
Датчикові входи, телеметрія, сигналізація та безпечний вимикач розташовані з переднього боку керування польотом, як показано на схемі підключення нижче.
|
||||
The sensor inputs, telemetry, buzzer and safety switch are located in the front of the flight controller, as shown in the connection diagram below.
|
||||
|
||||
<img src="../../assets/flight_controller/dropix/dropix_connectors_front.jpg" width="500px" alt="Dropix connectors front" title="Dropix connectors front" />
|
||||
|
||||
1. Підключіть телеметрію, датчик швидкості, GPS, гудок та безпечний перемикач, як показано.
|
||||
1. Connect the telemetry, airspeed sensor, GPS, buzzer and safety switch as shown.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_39_connect_sensors.jpg" width="500px" title="Connect sensors" />
|
||||
|
||||
#### Контролер польоту: Підключіть модуль живлення та зовнішній USB
|
||||
#### Flight Controller: Connect power module and external USB
|
||||
|
||||
Входи для порту USB, модуля живлення та зовнішнього USB розташовані на правому боці контролера польоту.
|
||||
The inputs for the USB port, power module and external USB are located on the right side of the flight controller.
|
||||
|
||||
1. Підключіть живлення та USB, як показано
|
||||
1. Connect power and USB as shown
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_41_connect_power_module_usb.jpg" width="500px" title="Connect power module and USB" />
|
||||
|
||||
:::tip
|
||||
The external USB is optional.
|
||||
Він повинен бути використано, якщо доступ до порту USB ускладнений після закріплення контролера польоту.
|
||||
It should be used if access to the USB port is difficult once the flight controller is mounted.
|
||||
:::
|
||||
|
||||
#### Встановіть пітотрубку (датчик швидкості)
|
||||
#### Install the pitot tube (airspeed sensor)
|
||||
|
||||
Труба пітота встановлена спереду літака й підключена до датчика швидкості через трубу.
|
||||
The pitot tube is installed on the front of the plane and connected to the airspeed sensor via a tube.
|
||||
|
||||
:::warning
|
||||
It is important that nothing obstructs airflow to the Pitot tube. Це критично для фіксованих крил та для переходу від квадрокоптера до літака.
|
||||
It is important that nothing obstructs airflow to the Pitot tube. This is critical for fixed-wing flight and for transitioning from quad to plane.
|
||||
:::
|
||||
|
||||
1. Встановіть трубку Піто у передній частині літака
|
||||
1. Install the Pitot tube in the front of the plane
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_43_airspeed_sensor_mounting.jpg" width="500px" title="Airspeed sensor mounting" />
|
||||
|
||||
2. Зафіксуйте з'єднуючі трубки та переконайтеся, що вони не зігнуті / пом'яті.
|
||||
2. Secure the connecting tubing and ensure that it is not bent/kinked.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_45_airspeed_sensor_tubing.jpg" width="500px" title="Airspeed sensor mounting" />
|
||||
|
||||
3. Підключіть трубки до датчика швидкості.
|
||||
3. Connect the tubes to the airspeed sensor.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_47_connect_airspeed_sensor_tubing.jpg" width="500px" title="Connect airspeed sensor and tubing" />
|
||||
|
||||
#### Встановлення/підключення приймача та модуля телеметрії
|
||||
#### Install/connect receiver and telemetry module
|
||||
|
||||
1. Вставте приймач та телеметричний модуль на зовнішню сторону рами транспортного засобу.
|
||||
1. Paste the receiver and telemetry module to the outside of the vehicle frame.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_49_receiver_mounting.jpg" width="500px" title="Paste receiver" />
|
||||
|
||||
@@ -225,27 +222,27 @@ It is important that nothing obstructs airflow to the Pitot tube. Це крит
|
||||
|
||||
<a id="compass_gps"></a>
|
||||
|
||||
#### Модуль GPS/Компас
|
||||
#### GPS/Compass module
|
||||
|
||||
Модуль GPS/Компас вже встановлено на крило в типовому положенні. Вам не потрібно робити щось додаткове для цього!
|
||||
The GPS/Compass module is already mounted on the wing, in the default orientation. You don't need to have to do anything extra for this!
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_gps_compass.jpg" width="500px" title="GPS/Compass" />
|
||||
|
||||
<a id="flight_controller_orientation"></a>
|
||||
|
||||
#### Монтаж та орієнтація політного контролера
|
||||
#### Mount and orient the flight controller
|
||||
|
||||
1. Встановіть орієнтацію вашого політ контролеру на 270 градусів.
|
||||
1. Set your flight controller orientation to 270 degrees.
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_53_flight_controller_orientation.jpg" width="500px" title="Flight controller orientation" />
|
||||
|
||||
2. Закріпіть контролер на місці за допомогою піни для поглинання вібрації.
|
||||
2. Secure the controller in place using vibration damping foam.
|
||||
|
||||
### Крок 4: Перевірка остаточної збірки
|
||||
### Step 4: Final Assembly Checks
|
||||
|
||||
Останнім етапом збирання є перевірка стійкості дрона та правильності налаштування двигунів.
|
||||
The final assembly step is to check the vehicle is stable and that the motors have been set up correctly.
|
||||
|
||||
1. Перевірте, що двигуни обертаються у правильних напрямках (як у діаграмі QuadX нижче).
|
||||
1. Check that the motors turn in the correct directions (as in the QuadX diagram below).
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_35_quad_motor_directions.png" width="200px" title="Quad motor order/directions" />
|
||||
|
||||
@@ -254,12 +251,12 @@ It is important that nothing obstructs airflow to the Pitot tube. Це крит
|
||||
|
||||
:::
|
||||
|
||||
2. Перевірте, чи транспортний засіб збалансований навколо очікуваного центру мас
|
||||
- Утримуйте транспортний засіб пальцями у центрі ваги та переконайтеся, що транспортний засіб залишається стабільним.
|
||||
2. Check the vehicle is balanced around the expected centre of gravity
|
||||
- Hold the vehicle with your fingers at the center of gravity and check that the vehicle remains stable.
|
||||
|
||||

|
||||
|
||||
- Якщо транспортний засіб нахиляється вперед або назад, перемістіть двигуни, щоб утримати рівновагу.
|
||||
- If the vehicle leans forward or backwards, move the motors to balance it.
|
||||
|
||||

|
||||
|
||||
@@ -267,7 +264,7 @@ It is important that nothing obstructs airflow to the Pitot tube. Це крит
|
||||
|
||||
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.
|
||||
|
||||
@@ -277,9 +274,9 @@ Perform the normal [Basic Configuration](../config/index.md).
|
||||
|
||||
3. Configure the outputs and geometry following the instructions in [Actuators Configuration](../config/actuators.md)
|
||||
|
||||
4. За замовчуванням параметри часто достатні для стабільного польоту. For more detailed tuning information see [Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md).
|
||||
4. The default parameters are often sufficient for stable flight. For more detailed tuning information see [Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md).
|
||||
|
||||
Після завершення калібрування, VTOL готовий до польоту.
|
||||
After you finish calibration the VTOL is ready to fly.
|
||||
|
||||
## Відео
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 | Розмір | 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.
|
||||
@@ -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))
|
||||
|
||||
+183
-183
@@ -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)
|
||||
|
||||
:::
|
||||
|
||||
@@ -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 <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
..
|
||||
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 <poll.h>
|
||||
#include <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
..
|
||||
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 <math.h>
|
||||
|
||||
#include <uORB/uORB.h>
|
||||
#include <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
#include <uORB/topics/vehicle_attitude.h>
|
||||
|
||||
__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;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -130,6 +130,32 @@ adis16507 <command> [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 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-s] Internal SPI bus(es)
|
||||
[-S] External SPI bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
|
||||
[-m <val>] SPI mode
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-R <val>] 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)
|
||||
|
||||
@@ -59,7 +59,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
|
||||
|
||||
### Симуляція
|
||||
|
||||
- Уточнюється
|
||||
- SIH: Add option to set wind velocity ([PX4-Autopilot#26467](https://github.com/PX4-Autopilot/pull/26467))
|
||||
|
||||
<!-- MOVED THIS TO v1.17
|
||||
|
||||
|
||||
@@ -156,6 +156,12 @@ The airplane needs to takeoff in manual mode at full throttle.
|
||||
Крім того, якщо літак розбився, оцінювач стану може втратити своє виправлення.
|
||||
:::
|
||||
|
||||
## Simulation Configuration
|
||||
|
||||
### Wind
|
||||
|
||||
SIH supports setting a wind velocity with the PX4 parameters [`SIH_WIND_N`](../advanced_config/parameter_reference.md#SIH_WIND_E) and [`SIH_WIND_E`](../advanced_config/parameter_reference.md#SIH_WIND_E) [m/s]. The parameters can also be changed during flight to simulate changing wind.
|
||||
|
||||
## Display/Visualisation (optional)
|
||||
|
||||
The SIH-simulated vehicle can be displayed using [jMAVSim](../sim_jmavsim/index.md) as a visualiser.
|
||||
|
||||
@@ -86,7 +86,8 @@ vtxtable save
|
||||
|
||||
This will create a VTX table with 5 power levels.
|
||||
|
||||
```nsh> vtxtable status
|
||||
```sh
|
||||
nsh> vtxtable status
|
||||
INFO [vtxtable] VTX table "Peak THOR T67":
|
||||
INFO [vtxtable] Power levels:
|
||||
INFO [vtxtable] 1: 0 = 25
|
||||
|
||||
+487
-445
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
|
||||
+24
-25
@@ -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 <Fixes #1234>, 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 <email@px4.io>
|
||||
```
|
||||
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 <your@email.com>
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -49,15 +49,15 @@ Adding a feature to PX4 follows a defined workflow. In order to share your contr
|
||||
git add <file name>
|
||||
```
|
||||
|
||||
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 "<your commit message>"
|
||||
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).
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||

|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||

|
||||
@@ -115,10 +116,6 @@ This kit includes Dropix flight controller with most of the required electronics
|
||||
|
||||
<img src="../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_23_dropix_and_other_electronics.jpg" width="500px" title="Falcon Vertigo 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 |
|
||||
|
||||
<a id="dropix_back"></a>
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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))
|
||||
|
||||
+183
-183
@@ -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)
|
||||
|
||||
:::
|
||||
|
||||
@@ -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 <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
..
|
||||
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 <poll.h>
|
||||
#include <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
..
|
||||
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 <math.h>
|
||||
|
||||
#include <uORB/uORB.h>
|
||||
#include <uORB/topics/sensor_combined.h>
|
||||
#include <uORB/topics/vehicle_acceleration.h>
|
||||
#include <uORB/topics/vehicle_attitude.h>
|
||||
|
||||
__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;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -130,6 +130,32 @@ adis16507 <command> [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 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-s] Internal SPI bus(es)
|
||||
[-S] External SPI bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
|
||||
[-m <val>] SPI mode
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-R <val>] 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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
<!-- MOVED THIS TO v1.17
|
||||
|
||||
|
||||
@@ -156,6 +156,12 @@ The airplane needs to takeoff in manual mode at full throttle.
|
||||
Also, if the airplane crashes the state estimator might lose its fix.
|
||||
:::
|
||||
|
||||
## Simulation Configuration
|
||||
|
||||
### Wind
|
||||
|
||||
SIH supports setting a wind velocity with the PX4 parameters [`SIH_WIND_N`](../advanced_config/parameter_reference.md#SIH_WIND_E) and [`SIH_WIND_E`](../advanced_config/parameter_reference.md#SIH_WIND_E) [m/s]. The parameters can also be changed during flight to simulate changing wind.
|
||||
|
||||
## Display/Visualisation (optional)
|
||||
|
||||
The SIH-simulated vehicle can be displayed using [jMAVSim](../sim_jmavsim/index.md) as a visualiser.
|
||||
|
||||
@@ -86,7 +86,8 @@ vtxtable save
|
||||
|
||||
This will create a VTX table with 5 power levels.
|
||||
|
||||
```nsh> vtxtable status
|
||||
```sh
|
||||
nsh> vtxtable status
|
||||
INFO [vtxtable] VTX table "Peak THOR T67":
|
||||
INFO [vtxtable] Power levels:
|
||||
INFO [vtxtable] 1: 0 = 25
|
||||
|
||||
+1
-12
@@ -11,19 +11,8 @@ uint8 esc_cmdcount # Counter of number of commands
|
||||
uint8 esc_state # State of ESC - depend on Vendor
|
||||
|
||||
uint8 actuator_function # actuator output function (one of Motor1...MotorN)
|
||||
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR2 = 102
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR3 = 103
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR4 = 104
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR5 = 105
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR6 = 106
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR7 = 107
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR8 = 108
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR9 = 109
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR10 = 110
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR11 = 111
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR12 = 112
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR_MAX = 112 # output_functions.yaml Motor.start + Motor.count - 1
|
||||
|
||||
uint16 failures # Bitmask to indicate the internal ESC faults
|
||||
int8 esc_power # Applied power 0-100 in % (negative values reserved)
|
||||
|
||||
@@ -10,7 +10,7 @@ uint64 timestamp_sample # [us] Sampling timestamp of the data this control respo
|
||||
|
||||
uint16 reversible_flags # [-] Bitset indicating which motors are configured to be reversible
|
||||
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101 # output_functions.yaml Motor.start
|
||||
|
||||
uint8 NUM_CONTROLS = 12
|
||||
uint8 NUM_CONTROLS = 12 # output_functions.yaml Motor.count
|
||||
float32[12] control # [@range -1, 1] Normalized thrust. Where 1 means maximum positive thrust, -1 maximum negative (if not supported by the output, <0 maps to NaN). NaN maps to disarmed (stop the motors)
|
||||
|
||||
@@ -645,7 +645,7 @@ int uORBTest::UnitTest::test_wrap_around()
|
||||
}
|
||||
#define CHECK_COPY(i_got, i_correct) \
|
||||
orb_copy(ORB_ID(orb_test_medium_wrap_around), sfd, &u); \
|
||||
if (i_got != i_correct) { \
|
||||
if ((i_got) != (i_correct)) { \
|
||||
return test_fail("got wrong element from the queue (got %i, should be %i)", i_got, i_correct); \
|
||||
}
|
||||
|
||||
@@ -875,7 +875,7 @@ int uORBTest::UnitTest::test_queue()
|
||||
}
|
||||
#define CHECK_COPY(i_got, i_correct) \
|
||||
orb_copy(ORB_ID(orb_test_medium_queue), sfd, &u); \
|
||||
if (i_got != i_correct) { \
|
||||
if ((i_got) != (i_correct)) { \
|
||||
return test_fail("got wrong element from the queue (got %i, should be %i)", i_got, i_correct); \
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,18 @@
|
||||
VertiqConfigurationHandler::VertiqConfigurationHandler(VertiqSerialInterface *ser,
|
||||
VertiqClientManager *client_manager) :
|
||||
_serial_interface(ser),
|
||||
_client_manager(client_manager)
|
||||
_client_manager(client_manager),
|
||||
_prop_input_parser_client(0)
|
||||
|
||||
#ifdef CONFIG_USE_IFCI_CONFIGURATION
|
||||
, _ifci_client(0)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USE_PULSING_CONFIGURATION
|
||||
, _voltage_superposition_client(0)
|
||||
, _pulsing_rectangular_input_parser_client(0)
|
||||
#endif
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
@@ -43,47 +54,47 @@ void VertiqConfigurationHandler::InitConfigurationClients(uint8_t object_id)
|
||||
{
|
||||
_object_id_now = object_id; //Make sure we store the initial object ID
|
||||
|
||||
_prop_input_parser_client = new EscPropellerInputParserClient(object_id);
|
||||
_client_manager->AddNewClient(_prop_input_parser_client);
|
||||
_prop_input_parser_client.UpdateEntryIds(object_id);
|
||||
_client_manager->AddNewClient(&_prop_input_parser_client);
|
||||
|
||||
#ifdef CONFIG_USE_IFCI_CONFIGURATION
|
||||
_ifci_client = new IQUartFlightControllerInterfaceClient(object_id);
|
||||
_client_manager->AddNewClient(_ifci_client);
|
||||
_ifci_client.UpdateEntryIds(object_id);
|
||||
_client_manager->AddNewClient(&_ifci_client);
|
||||
#endif //CONFIG_USE_IFCI_CONFIGURATION
|
||||
|
||||
#ifdef CONFIG_USE_PULSING_CONFIGURATION
|
||||
_voltage_superposition_client = new VoltageSuperPositionClient(object_id);
|
||||
_client_manager->AddNewClient(_voltage_superposition_client);
|
||||
_voltage_superposition_client.UpdateEntryIds(object_id);
|
||||
_client_manager->AddNewClient(&_voltage_superposition_client);
|
||||
|
||||
_pulsing_rectangular_input_parser_client = new PulsingRectangularInputParserClient(object_id);
|
||||
_client_manager->AddNewClient(_pulsing_rectangular_input_parser_client);
|
||||
_pulsing_rectangular_input_parser_client.UpdateEntryIds(object_id);
|
||||
_client_manager->AddNewClient(&_pulsing_rectangular_input_parser_client);
|
||||
#endif //CONFIG_USE_PULSING_CONFIGURATION
|
||||
}
|
||||
|
||||
void VertiqConfigurationHandler::InitClientEntryWrappers()
|
||||
{
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_MAX_VELOCITY"), &(_prop_input_parser_client->velocity_max_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_MAX_VOLTS"), &(_prop_input_parser_client->volts_max_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_CONTROL_MODE"), &(_prop_input_parser_client->mode_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_MOTOR_DIR"), &(_prop_input_parser_client->sign_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_FC_DIR"), &(_prop_input_parser_client->flip_negative_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_MAX_VELOCITY"), &(_prop_input_parser_client.velocity_max_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_MAX_VOLTS"), &(_prop_input_parser_client.volts_max_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_CONTROL_MODE"), &(_prop_input_parser_client.mode_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_MOTOR_DIR"), &(_prop_input_parser_client.sign_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_FC_DIR"), &(_prop_input_parser_client.flip_negative_));
|
||||
|
||||
#ifdef CONFIG_USE_IFCI_CONFIGURATION
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_THROTTLE_CVI"), &(_ifci_client->throttle_cvi_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_THROTTLE_CVI"), &(_ifci_client.throttle_cvi_));
|
||||
#endif //CONFIG_USE_IFCI_CONFIGURATION
|
||||
|
||||
#ifdef CONFIG_USE_PULSING_CONFIGURATION
|
||||
AddNewClientEntry<uint8_t, int32_t> (param_find("VTQ_PULSE_V_MODE"),
|
||||
&(_pulsing_rectangular_input_parser_client->pulsing_voltage_mode_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_X_CVI"), &(_ifci_client->x_cvi_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_Y_CVI"), &(_ifci_client->y_cvi_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_ZERO_ANGLE"), &(_voltage_superposition_client->zero_angle_));
|
||||
&(_pulsing_rectangular_input_parser_client.pulsing_voltage_mode_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_X_CVI"), &(_ifci_client.x_cvi_));
|
||||
AddNewClientEntry<uint8_t, int32_t>(param_find("VTQ_Y_CVI"), &(_ifci_client.y_cvi_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_ZERO_ANGLE"), &(_voltage_superposition_client.zero_angle_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_VELO_CUTOFF"),
|
||||
&(_voltage_superposition_client->velocity_cutoff_));
|
||||
&(_voltage_superposition_client.velocity_cutoff_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_TQUE_OFF_ANG"),
|
||||
&(_voltage_superposition_client->propeller_torque_offset_angle_));
|
||||
&(_voltage_superposition_client.propeller_torque_offset_angle_));
|
||||
AddNewClientEntry<float, float>(param_find("VTQ_PULSE_V_LIM"),
|
||||
&(_pulsing_rectangular_input_parser_client->pulsing_voltage_limit_));
|
||||
&(_pulsing_rectangular_input_parser_client.pulsing_voltage_limit_));
|
||||
#endif //CONFIG_USE_PULSING_CONFIGURATION
|
||||
}
|
||||
|
||||
@@ -91,15 +102,15 @@ void VertiqConfigurationHandler::UpdateClientsToNewObjId(uint8_t new_object_id)
|
||||
{
|
||||
_object_id_now = new_object_id;
|
||||
|
||||
DestroyAndRecreateClient<EscPropellerInputParserClient>(_prop_input_parser_client, new_object_id);
|
||||
_prop_input_parser_client.UpdateEntryIds(new_object_id);
|
||||
|
||||
#ifdef CONFIG_USE_IFCI_CONFIGURATION
|
||||
DestroyAndRecreateClient<IQUartFlightControllerInterfaceClient>(_ifci_client, new_object_id);
|
||||
_ifci_client.UpdateEntryIds(new_object_id);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USE_PULSING_CONFIGURATION
|
||||
DestroyAndRecreateClient<VoltageSuperPositionClient>(_voltage_superposition_client, new_object_id);
|
||||
DestroyAndRecreateClient<PulsingRectangularInputParserClient>(_pulsing_rectangular_input_parser_client, new_object_id);
|
||||
_voltage_superposition_client.UpdateEntryIds(new_object_id);
|
||||
_pulsing_rectangular_input_parser_client.UpdateEntryIds(new_object_id);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -114,8 +125,6 @@ void VertiqConfigurationHandler::UpdateIquartConfigParams()
|
||||
{
|
||||
for (uint8_t i = 0; i < _added_configuration_entry_wrappers; i++) {
|
||||
_configuration_entry_wrappers[i]->SendGet(_serial_interface);
|
||||
//Ensure that these get messages get out
|
||||
_client_manager->HandleClientCommunication();
|
||||
}
|
||||
|
||||
//Now go ahead and grab responses, and update everyone to be on the same page, but do it quickly.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user