Compare commits

...

43 Commits

Author SHA1 Message Date
Matthias Grob 71b8aba3e3 refactor(lightware_laser): simplify device_information handling
- publish every 3 seconds
- adjust to name instead of vendor and model
- buffer size adjusted according to datasheet
- switch to PublicationData
2026-03-31 20:56:01 +02:00
Claudio Chies 5e570f2d5c SENS: RNG: Add Device Information publishing to Lightware Rangefinder 2026-03-31 20:55:58 +02:00
PX4BuildBot 1e769a76d6 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-31 18:19:24 +00:00
Nick 1856933bac fix(rcS): silence VTX_SER_CFG on boot (#26914) 2026-03-31 10:11:36 -08:00
PX4BuildBot eb029e6920 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-31 16:59:42 +00:00
Jacob Dahl d5d2ce26d7 fix(dshot): map MAVLink standard ACTUATOR_OUTPUT_FUNCTION to PX4 OutputFunction (#26909)
The MAVLink standard defines ACTUATOR_OUTPUT_FUNCTION_MOTOR1=1..MOTOR16=16,
but PX4 internally uses OutputFunction::Motor1=101..Motor12=112. The DShot
driver only handled PX4 internal values (101+) and QGC legacy values (1101+),
so any standards-compliant GCS sending the MAVLink enum values would get
VEHICLE_CMD_RESULT_UNSUPPORTED back from MAV_CMD_CONFIGURE_ACTUATOR.

Add a mapping from MAVLink standard values (1-16) to PX4 internal values
(101-116) by adding 100, matching the existing QGC backwards-compat pattern.
2026-03-31 08:52:25 -08:00
Nick 1d81ecb08d fix(dshot): no warning if dshot unconfigured (#26917) 2026-03-31 08:52:15 -08:00
PX4BuildBot b48f3ef6f7 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-31 11:19:55 +00:00
alexcekay d24d4a4fc4 uavcan: fix battery sub not working 2026-03-31 13:12:23 +02:00
PX4BuildBot 710adefb4c docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-30 17:41:31 +00:00
Anil Kircaliali d4e60cb1dc feat(navigator): support MAV_FRAME_GLOBAL_INT and MAV_FRAME_GLOBAL_RELATIVE_ALT_INT for RTL safe points (#26901)
* navigator:  support MAV_FRAME_GLOBAL_INT and MAV_FRAME_GLOBAL_RELATIVE_ALT_INT for RTL safe points

* Fix descriptive comment

* refactor(rtl): consolidate frame cases that are duplicate

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
2026-03-30 19:33:46 +02:00
PX4BuildBot 45659d36aa docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-30 12:55:57 +00:00
ttechnick c2c811072e fix(mavlink): GPS jamming only warning 2026-03-30 14:48:51 +02:00
Beniamino Pozzan 7584f7567f ci(px4_msgs): publishing stable tag triggers tag creation in px4_msgs (#26858)
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2026-03-28 17:30:20 +00:00
PX4BuildBot 693b3111ca docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-27 07:48:24 +00:00
ttechnick 6c775c5a81 feat(mavlink): resend MISSION_COUNT when its dropped 2026-03-27 08:41:30 +01:00
PX4BuildBot b5cc93cebc docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-27 02:40:06 +00:00
PX4 Build Bot 9784fcbb8e docs(i18n): PX4 guide translations (Crowdin) - ko (#26849)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-03-27 13:33:08 +11:00
PX4 Build Bot 274e9e3ee8 docs(i18n): PX4 guide translations (Crowdin) - uk (#26850)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-03-27 13:32:55 +11:00
PX4 Build Bot 2ffc643390 docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#26851)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-03-27 13:32:44 +11:00
PX4BuildBot e4e3795cad docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-27 01:48:11 +00:00
Claudio Chies 5a4c13fc23 fix(commander): ADSB timeout modification and cosmetics (#26878)
* fix(commander): add tab character to critical system loss messages

* fix(commander): extend timeout for traffic avoidance system heartbeat check

* Commander: Only Warn the user about traffic avoidance system loss if COM_ARM_TRAFF is set

Signed-off-by: Claudio Micheli <claudio@auterion.com>

---------

Signed-off-by: Claudio Micheli <claudio@auterion.com>
Co-authored-by: Claudio Micheli <claudio@auterion.com>
2026-03-26 18:41:33 -07:00
PX4BuildBot 565781e688 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-26 18:42:00 +00:00
Onur Özkan 6b17795aa4 fix(lib/gnss/test): mark buildRawFrame noinline to avoid GCC false positive (#26877)
GCC 14.3.0 emits `-Wstringop-overflow` when `RtcmTest::buildRawFrame()`
is optimized and inlined.

This change marks the helper `noinline` to keep it out of that optimization path.

Preserves the existing logic and only changes how the compiler emits the test helper.

Fixes https://github.com/PX4/PX4-Autopilot/issues/26875

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2026-03-26 10:34:40 -08:00
PX4BuildBot f573dec0d9 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-25 17:52:11 +00:00
Valentin Bugrov 1bef6390f2 fix(drvers/ins): InertialLabs INS driver fix name-collision (#26874) 2026-03-25 09:44:49 -08:00
PX4BuildBot 80815bba4a docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-25 16:37:02 +00:00
Marco Hauswirth b82894143e fix(sensors): restrict baro calibrations to ground 2026-03-25 17:29:22 +01:00
PX4BuildBot 63c77734f7 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-25 13:02:02 +00:00
Claudio Chies 72bcbdc1bb fix(ekf2): update minimum values for required EPH and EPV parameters 2026-03-25 13:54:44 +01:00
ttechnick ecd553da6a fix(mavlink): fix gps utc timestamp 2026-03-25 13:50:56 +01:00
Eric Katzfey 4a48525e45 fix(voxl2): Update to voxl-px4 service file so that it starts properly on power up 2026-03-24 12:09:41 -06:00
PX4BuildBot c7aa01bc80 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-24 15:31:21 +00:00
Mahima Yoga 5d26d7126a feat(fw-launch-detection): use acceleration magnitude instead of body-forward (#26857)
* feat(fw-launch-detection): use acceleration magnitude for launch detection

* docs: update takeoff docs

---------

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
2026-03-24 16:14:42 +01:00
PX4BuildBot d617971b3e docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-24 15:07:41 +00:00
mahima-yoga 596bb23bb9 docs(commander): add docs around COM_ARM_ON_BOOT functionality 2026-03-24 15:01:15 +00:00
mahima-yoga 873ee61d57 commander: enable arming on boot 2026-03-24 15:01:15 +00:00
PX4BuildBot 30bbd6ecd4 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-24 01:35:55 +00:00
Matteo Del Seppia 860505fc05 refactor(collision_prevention): Remove loop in _checkSetpointDirectionFeasability() (#26856)
* Refactor feasibility check for setpoint direction

* Add check for out of bounds index

* Formatting
2026-03-23 17:28:57 -08:00
Onur Özkan 8d4a5cc76c build(make): support Python venv (#26852)
* use venv python executable if active

Signed-off-by: Onur Özkan <work@onurozkan.dev>

* untrack .venv

Signed-off-by: Onur Özkan <work@onurozkan.dev>

---------

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2026-03-23 16:44:40 -08:00
Alexander Lerach 1639c7f9c6 reserve second id for skynode n (#26680) 2026-03-23 11:19:04 +01:00
PX4BuildBot 3f180ac42d docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-23 00:16:49 +00:00
Pavel Guzenfeld f003fc39cb fix(uxrce_dds_client): handle empty DDS subscriptions in build (#26846)
When all subscription topics are commented out in dds_topics.yaml,
the build failed in two ways:

1. KeyError in generate_dds_topics.py when the subscriptions key is
   absent from YAML — fixed by using dict.get() with fallback to
   empty list, consistent with how subscriptions_multi is handled.

2. Unused variable errors (-Werror) in the generated dds_topics.h
   when no subscriptions exist — fixed by guarding on_topic_update(),
   time_offset_us, and uxr_set_topic_callback() with conditional
   template blocks. Also marked create_data_reader() as
   __attribute__((unused)) since it is only called from generated
   subscription code.

Closes #26799

Signed-off-by: Pavel Guzenfeld <pavelgu@gmail.com>
2026-03-23 00:10:40 +00:00
205 changed files with 3987 additions and 1975 deletions
@@ -0,0 +1,135 @@
name: Tag px4_msgs from PX4 release tags
on:
push:
tags:
- 'v*.*.*'
workflow_dispatch:
inputs:
tag_name:
description: 'PX4 tag to propagate (example: v1.17.0)'
required: true
type: string
permissions:
contents: read
jobs:
tag_px4_msgs:
if: github.repository == 'PX4/PX4-Autopilot'
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
env:
TAG_NAME: ${{ github.event_name == 'workflow_dispatch' && inputs.tag_name || github.ref_name }}
steps:
- name: Checkout PX4 repo
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Setup git credentials
run: |
git config --global user.name "${{ secrets.PX4BUILDBOT_USER }}"
git config --global user.email "${{ secrets.PX4BUILDBOT_EMAIL }}"
- name: Resolve release branch from tag
id: tag_info
shell: bash
run: |
set -euo pipefail
if [[ ! "${TAG_NAME}" =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
echo "Tag format is not stable vX.Y.Z, skipping: ${TAG_NAME}"
echo "should_run=false" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "should_run=true" >> "$GITHUB_OUTPUT"
major="${BASH_REMATCH[1]}"
minor="${BASH_REMATCH[2]}"
release_branch="release/${major}.${minor}"
git show-ref --verify --quiet "refs/heads/${release_branch}" || {
echo "PX4 branch ${release_branch} not found"
exit 1
}
tag_date="$(git for-each-ref --format='%(creatordate:iso8601)' "refs/tags/${TAG_NAME}")"
if [[ -z "${tag_date}" ]]; then
echo "Unable to resolve tag date for ${TAG_NAME}"
exit 1
fi
echo "release_branch=${release_branch}" >> "$GITHUB_OUTPUT"
echo "tag_date=${tag_date}" >> "$GITHUB_OUTPUT"
- name: Clone px4_msgs repo
if: steps.tag_info.outputs.should_run == 'true'
run: |
git clone https://${{ secrets.PX4BUILTBOT_PERSONAL_ACCESS_TOKEN }}@github.com/PX4/px4_msgs.git
- name: Checkout matching px4_msgs release branch
if: steps.tag_info.outputs.should_run == 'true'
shell: bash
run: |
set -euo pipefail
cd px4_msgs
release_branch="${{ steps.tag_info.outputs.release_branch }}"
if git show-ref --verify --quiet "refs/remotes/origin/${release_branch}"; then
git checkout -B "${release_branch}" "origin/${release_branch}"
else
echo "px4_msgs branch ${release_branch} does not exist"
exit 1
fi
- name: Verify msg and srv trees are identical
if: steps.tag_info.outputs.should_run == 'true'
shell: bash
run: |
set -euo pipefail
release_branch="${{ steps.tag_info.outputs.release_branch }}"
git checkout "${release_branch}"
# Use the same synchronization logic as sync_to_px4_msgs.yml,
# then verify there are no changes in px4_msgs.
rm -f px4_msgs/msg/*.msg
rm -f px4_msgs/msg/versioned/*.msg
rm -f px4_msgs/srv/*.srv
rm -f px4_msgs/srv/versioned/*.srv
cp msg/*.msg px4_msgs/msg/
cp msg/versioned/*.msg px4_msgs/msg/ || true
cp srv/*.srv px4_msgs/srv/
cp srv/versioned/*.srv px4_msgs/srv/ || true
if ! git -C px4_msgs diff --exit-code -- msg srv; then
echo "Message/service definitions differ between PX4 ${release_branch} and px4_msgs ${release_branch}"
exit 1
fi
- name: Create and push tag in px4_msgs
if: steps.tag_info.outputs.should_run == 'true'
shell: bash
run: |
set -euo pipefail
cd px4_msgs
target="$(git rev-parse HEAD)"
existing_target="$(git rev-parse "refs/tags/${TAG_NAME}^{}" 2>/dev/null || true)"
if [[ -n "${existing_target}" ]]; then
if [[ "${existing_target}" == "${target}" ]]; then
echo "Tag ${TAG_NAME} already exists on ${target}; nothing to do"
exit 0
fi
echo "Tag ${TAG_NAME} already exists on ${existing_target}, expected ${target}"
exit 1
fi
GIT_COMMITTER_DATE="${{ steps.tag_info.outputs.tag_date }}" \
git tag -a "${TAG_NAME}" "${target}" \
-m "PX4 msgs and srvs definitions matching PX4 stable release ${TAG_NAME#v}"
git push origin "refs/tags/${TAG_NAME}"
+3
View File
@@ -112,3 +112,6 @@ keys/
# metadata
_emscripten_sdk/
# virtual Python environment
.venv
+6
View File
@@ -162,6 +162,12 @@ else
endif
# Prefer the interpreter from an active Python virtual environment.
# Otherwise leave PYTHON_EXECUTABLE unset and let CMake resolve Python.
ifneq ($(strip $(VIRTUAL_ENV)),)
PYTHON_EXECUTABLE ?= $(VIRTUAL_ENV)/bin/python
endif
# Pick up specific Python path if set
ifdef PYTHON_EXECUTABLE
override CMAKE_ARGS += -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
+1 -1
View File
@@ -633,7 +633,7 @@ else
#
# Start the VTX services.
#
if ! param compare VTX_SER_CFG 0
if ! param compare -s VTX_SER_CFG 0
then
set RC_VTXTABLE ${R}etc/init.d/rc.vtxtable
if [ -f ${RC_VTXTABLE} ]
+1 -2
View File
@@ -4,11 +4,10 @@ After=sscrpcd.service
Requires=sscrpcd.service
[Service]
Type=simple
ExecStartPre=/bin/sleep 2
ExecStart=/usr/bin/voxl-px4
ExecStopPost=/usr/bin/voxl-reset-slpi
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
+16 -4
View File
@@ -18662,6 +18662,18 @@ disabled, warn only or deny arming.
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### COM_ARM_ON_BOOT (`INT32`) {#COM_ARM_ON_BOOT}
Arm automatically on boot.
When enabled, the vehicle arms automatically once all preflight checks pass after boot.
The vehicle will not re-arm after a manual disarm.
Has no effect if COM_ARMABLE is 0.
| Reboot | minValue | maxValue | increment | default | unit |
| ------- | -------- | -------- | --------- | ------------ | ---- |
| &check; | | | | Disabled (0) | |
### COM_ARM_SDCARD (`INT32`) {#COM_ARM_SDCARD}
Enable FMU SD card detection check.
@@ -21465,7 +21477,7 @@ Required EPH to use GPS.
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 2 | 100 | | 3.0 | m |
| &nbsp; | 0.1 | 100 | | 3.0 | m |
### EKF2_REQ_EPV (`FLOAT`) {#EKF2_REQ_EPV}
@@ -21473,7 +21485,7 @@ Required EPV to use GPS.
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 2 | 100 | | 5.0 | m |
| &nbsp; | 0.1 | 100 | | 5.0 | m |
### EKF2_REQ_FIX (`INT32`) {#EKF2_REQ_FIX}
@@ -22246,7 +22258,7 @@ Also applies to flaperons if enabled in the mixer/allocation.
Trigger time.
Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.
Launch is detected when the norm of body acceleration is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
@@ -22256,7 +22268,7 @@ Launch is detected when acceleration in body forward direction is above FW_LAUN_
Trigger acceleration threshold.
Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.
Launch is detected when the norm of body acceleration is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds.
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ----- |
@@ -91,6 +91,28 @@ The feature is configured using the following timeouts.
| <a id="COM_DISARM_LAND"></a>[COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND) | Time-out for auto disarm after landing. Default: 2s (-1 to disable). |
| <a id="COM_DISARM_PRFLT"></a>[COM_DISARM_PRFLT](../advanced_config/parameter_reference.md#COM_DISARM_PRFLT) | Time-out for auto disarm if too slow to takeoff. Default: 10s (<=0 to disable). |
## Auto-Arming on Boot
The vehicle can be configured to arm automatically on boot once all preflight checks pass,
using the `COM_ARM_ON_BOOT` parameter. For safety, PX4 enforces a minimum 5-second delay after boot before attempting to arm.
Once armed this way, the vehicle will not re-arm automatically after a manual disarm.
::: info
The parameter value is read once at boot.
Changing it while the system is running has no effect until the next reboot.
:::
:::warning
Use with caution.
A vehicle that arms automatically can spin up motors and actuators without any operator gesture.
Ensure the vehicle is in a safe state before powering on.
:::
| Parameter | Description |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| <a id="COM_ARM_ON_BOOT"></a>[COM_ARM_ON_BOOT](../advanced_config/parameter_reference.md#COM_ARM_ON_BOOT) | Arm automatically once preflight checks pass after boot. Default: `0` (Disabled). |
## Pre-Arm Checks
To reduce accidents, vehicles are only allowed to arm certain conditions are met (some of which are configurable).
+8 -8
View File
@@ -100,14 +100,14 @@ To launch in this mode:
The _launch detector_ is affected by the following parameters:
| Parameter | Description |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| <a id="FW_LAUN_DETCN_ON"></a>[FW_LAUN_DETCN_ON](../advanced_config/parameter_reference.md#FW_LAUN_DETCN_ON) | Enable automatic launch detection. If disabled motors spin up on arming already |
| <a id="FW_LAUN_AC_THLD"></a>[FW_LAUN_AC_THLD](../advanced_config/parameter_reference.md#FW_LAUN_AC_THLD) | Acceleration threshold (acceleration in body-forward direction must be above this value) |
| <a id="FW_LAUN_AC_T"></a>[FW_LAUN_AC_T](../advanced_config/parameter_reference.md#FW_LAUN_AC_T) | Trigger time (acceleration must be above threshold for this amount of seconds) |
| <a id="FW_LAUN_MOT_DEL"></a>[FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up |
| <a id="FW_LAUN_CS_LK_DY"></a>[FW_LAUN_CS_LK_DY](../advanced_config/parameter_reference.md#FW_LAUN_CS_LK_DY) | Delay from launch detection to unlocking the control surfaces |
| <a id="CA_CS_LAUN_LK"></a>[CA_CS_LAUN_LK](../advanced_config/parameter_reference.md#CA_CS_LAUN_LK) | Bitmask to select which control surfaces are to be locked during launch |
| Parameter | Description |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| <a id="FW_LAUN_DETCN_ON"></a>[FW_LAUN_DETCN_ON](../advanced_config/parameter_reference.md#FW_LAUN_DETCN_ON) | Enable automatic launch detection. If disabled motors spin up on arming already |
| <a id="FW_LAUN_AC_THLD"></a>[FW_LAUN_AC_THLD](../advanced_config/parameter_reference.md#FW_LAUN_AC_THLD) | Acceleration threshold (norm of acceleration must be above this value) |
| <a id="FW_LAUN_AC_T"></a>[FW_LAUN_AC_T](../advanced_config/parameter_reference.md#FW_LAUN_AC_T) | Trigger time (acceleration must be above threshold for this amount of seconds) |
| <a id="FW_LAUN_MOT_DEL"></a>[FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up |
| <a id="FW_LAUN_CS_LK_DY"></a>[FW_LAUN_CS_LK_DY](../advanced_config/parameter_reference.md#FW_LAUN_CS_LK_DY) | Delay from launch detection to unlocking the control surfaces |
| <a id="CA_CS_LAUN_LK"></a>[CA_CS_LAUN_LK](../advanced_config/parameter_reference.md#CA_CS_LAUN_LK) | Bitmask to select which control surfaces are to be locked during launch |
## Runway Takeoff {#runway_launch}
+195 -195
View File
@@ -95,205 +95,205 @@ They are not build into the module, and hence are neither published or subscribe
::: details See messages
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [EventV0](../msg_docs/EventV0.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [Ping](../msg_docs/Ping.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [LedControl](../msg_docs/LedControl.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [InputRc](../msg_docs/InputRc.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [Mission](../msg_docs/Mission.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [Event](../msg_docs/Event.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [Vtx](../msg_docs/Vtx.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [Gripper](../msg_docs/Gripper.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [EscReport](../msg_docs/EscReport.md)
- [InputRc](../msg_docs/InputRc.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [Event](../msg_docs/Event.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [Rpm](../msg_docs/Rpm.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [EscReport](../msg_docs/EscReport.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [Rpm](../msg_docs/Rpm.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [Gripper](../msg_docs/Gripper.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [EventV0](../msg_docs/EventV0.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [Vtx](../msg_docs/Vtx.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [Ping](../msg_docs/Ping.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [LedControl](../msg_docs/LedControl.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
:::
+3
View File
@@ -165,6 +165,7 @@
- [ARK Electronics ARKV6X](flight_controller/ark_v6x.md)
- [ARK FPV Flight Controller](flight_controller/ark_fpv.md)
- [ARK Pi6X Flow Flight Controller](flight_controller/ark_pi6x.md)
- [CORVON 743v1](flight_controller/corvon_743v1.md)
- [CUAV Nora](flight_controller/cuav_nora.md)
- [CUAV V5+ (FMUv5)](flight_controller/cuav_v5_plus.md)
- [Wiring Quickstart](assembly/quick_start_cuav_v5_plus.md)
@@ -497,6 +498,7 @@
- [비행 제어 장치 이식 안내](hardware/porting_guide.md)
- [PX4 Board Configuration (kconfig)](hardware/porting_guide_config.md)
- [NuttX Board Porting Guide](hardware/porting_guide_nuttx.md)
- [Board Firmware Packaging (.deb)](hardware/board_packaging.md)
- [시리얼 포트 매핑](hardware/serial_port_mapping.md)
- [기체](dev_airframes/index.md)
- [새 기체 추가](dev_airframes/adding_a_new_frame.md)
@@ -777,6 +779,7 @@
- [MAVLink Messaging](mavlink/index.md)
- [Adding Messages](mavlink/adding_messages.md)
- [Streaming Messages](mavlink/streaming_messages.md)
- [MAVLink Profiles](mavlink/mavlink_profiles.md)
- [Receiving Messages](mavlink/receiving_messages.md)
- [Custom MAVLink Messages](mavlink/custom_messages.md)
- [Message Signing](mavlink/message_signing.md)
+12 -1
View File
@@ -57,6 +57,17 @@ param set PWM_MAIN_FUNC10 2064
param set PPS_CAP_ENABLE 1
```
#### Multi-GPS Setups
If you have multiple GPS receivers, set `PPS_CAP_GPS_ID` to the device ID of the GPS receiver that emits the PPS signal.
When set to `0` (default), the driver uses the first available GPS instance.
You can find the device ID by running:
```sh
listener sensor_gps
```
### 배선
The wiring configuration depends on your specific flight controller.
@@ -131,5 +142,5 @@ See also:
The PPS signal provides much higher temporal precision than the transmitted time data, which has latency and jitter from serial communication.
:::warning
If the PPS driver does not sending any data for 5 seconds (despite having `PPS_CAP_ENABLE` set to 1), the `EKF2_GPS_DELAY` will be used instead for estimating the latency.
If the PPS driver does not send any data for 5 seconds (despite having `PPS_CAP_ENABLE` set to 1), the corresponding `SENS_GPS*_DELAY` parameter will be used instead for estimating the latency.
:::
@@ -409,6 +409,16 @@ With Valid GNSS Data:
- **Alternative Sources**: Dead-reckoning mode provides enhanced protection by requiring absence of alternative navigation sources before allowing resets.
- **Boot Vulnerability**: Initial faulty GNSS data cannot be detected automatically; requires operator intervention and manual position correction.
#### Ground Position Lock
When a vehicle equipped with dead-reckoning sensors (e.g. airspeed for fixed-wing, or optical flow) is sitting on the ground before takeoff, those sensors provide little to no aiding — airspeed and optical flow measurements are unreliable at rest. In this case, the EKF relies on _constant position fusion_ (fusing a synthetic position measurement at the last known position) to prevent the estimate from drifting. However, this is only active when the vehicle is detected as stationary, so handling the vehicle or starting the engine can interrupt it.
To counter this, [EKF2_POS_LOCK](../advanced_config/parameter_reference.md#EKF2_POS_LOCK) can be enabled to force constant position fusion to run while landed and the global horizontal position has already been initialized.
:::note
`EKF2_POS_LOCK` has no effect in flight.
:::
### 거리 측정기
[Range finder](../sensor/rangefinders.md) distance to ground is used by a single state filter to estimate the vertical position of the terrain relative to the height datum.
+1 -1
View File
@@ -20,7 +20,7 @@ For more information see [Setting the Compass Orientation](../config/flight_cont
## Position
In order to compensate for the relative motion between the receiver and the CoG, you should [configure](../advanced_config/parameters.md) the following parameters to set the offsets: [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z).
In order to compensate for the relative motion between the receiver and the CoG, you should [configure](../advanced_config/parameters.md) the following parameters to set the offsets: [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ).
This is important because the body frame estimated by the EKF will converge on the location of the GNSS module and assume it to be at the CoG. If the GNSS module is significantly offset from the CoG, then rotation around the COG will be interpreted as an altitude change, which in some flight modes (such as position mode) will result in unnecessary corrections.
@@ -99,7 +99,7 @@ The image below shows the wiring in greater detail.
This section explains how you install your preferred Linux distro, such as "Raspberry Pi OS 64bit" onto the RPi EMCC.
참고:
Notes:
- If you are using PX4, you will need to use PX4 version 1.13.1 or newer for PX4 to recognize this baseboard.
- The fan does not indicate if the RPi CM4 is powered/running or not.
+1 -1
View File
@@ -31,7 +31,7 @@ Overview of the mixing pipeline in terms of modules and uORB topics (press to sh
![Pipeline Overview](../../assets/concepts/control_allocation_pipeline.png)
참고:
Notes:
- The rate controller outputs torque and thrust setpoints
- the `control_allocator` module:
-1
View File
@@ -675,7 +675,6 @@ For each of the tilt servos:
- 안전 버튼을 쿨러야 액츄에이트를 테스트 할 수 있습니다.
- 중지 스위치를 사용하면 모터를 즉시 중지할 수 있습니다.
- 해당 슬라이더가 변경될 때까지 서보는 실제로 이동하지 않습니다.
- The parameter [COM_MOT_TEST_EN](../advanced_config/parameter_reference.md#COM_MOT_TEST_EN) can be used to completely disable actuator testing.
- On the shell, [actuator_test](../modules/modules_command.md#actuator-test) can be used as well for actuator testing.
- VTOLs will automatically turn off motors pointing upwards during **fixed-wing flight**:
- 표준 VTOL: 멀티콥터 모터로 정의된 모터가 꺼집니다.
+2 -2
View File
@@ -86,7 +86,7 @@ This calibration is similar to the well-known figure-8 compass calibration done
2-3 oscillations of ~30 degrees in every direction is usually sufficient.
2. Wait for the heading estimate to stabilize and verify that the compass rose is pointing to the correct direction (this can take a couple of seconds).
참고:
Notes:
- There is no start/stop for this type of calibration (the algorithm runs continuously when the vehicle is disarmed).
- The calibration is immediately applied to the data (no reboot is required) but is saved to the calibration parameters after disarming the vehicle only (the calibration is lost if no arming/disarming sequence is performed between calibration and shutdown).
@@ -109,7 +109,7 @@ This calibration process leverages external knowledge of vehicle's orientation a
commander calibrate mag quick
```
참고:
Notes:
- This method is specifically designed for vehicles where full rotation is impractical or impossible.
If full rotation is possible, use the [complete calibration](#complete-calibration) instead.
+1 -1
View File
@@ -45,7 +45,7 @@ If you have multiple control sources, such as an RC system and/or one or more Jo
The [MAVLink instance](../peripherals/mavlink_peripherals.md#mavlink-instances) refers to an instance assigned to a serial port, such as [MAV_0_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG).
참고:
Notes:
- RC checks are run for any option that uses RC (so not for `MAVLink only` or `Disable manual control`).
- When using priority sources, sources are evaluated as soon as they become valid and may trigger an immediate switch (if higher priority than the currently active source).
+1 -1
View File
@@ -72,7 +72,7 @@ The ESC RPM feedback is used to track the rotor blade pass frequency and its har
ESC RPM feedback requires ESCs capable of providing RPM feedback such as [DShot](../peripherals/dshot.md) with telemetry connected, a bidirectional DShot set up ([work in progress](https://github.com/PX4/PX4-Autopilot/pull/23863)), or [UAVCAN/DroneCAN ESCs](../dronecan/escs.md).
Before enabling, make sure that the ESC RPM is correct.
You might have to adjust the [pole count of the motors](../advanced_config/parameter_reference.md#MOT_POLE_COUNT).
You might have to adjust the per-motor pole count (`DSHOT_MOT_POL1``DSHOT_MOT_POL12`).
The following parameters should be set to enable and configure dynamic notch filters:
+1 -1
View File
@@ -342,7 +342,7 @@ PX4-Autopilot/
│ │ ├── public_key.pub # Public key in hex format
```
참고:
Notes:
- The script will not overwrite any existing keys in the folders.
It will generate a new public key if the folder only includes a private key.
+1 -1
View File
@@ -97,7 +97,7 @@ There is also CAN built-in bus termination via [CANNODE_TERM](../advanced_config
You need to set necessary [DroneCAN](index.md) parameters and define offsets if the sensor is not centred within the vehicle:
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK G5 RTK GPS from the vehicle's centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK G5 RTK GPS from the vehicle's centre of gravity.
## LED 신호의 의미
+1 -1
View File
@@ -99,7 +99,7 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK G5 RTK HEADING GPS from the vehicle's centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK G5 RTK HEADING GPS from the vehicle's centre of gravity.
### Parameter references
+1 -1
View File
@@ -91,7 +91,7 @@ If the sensor is not centred within the vehicle you will also need to define sen
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
### ARK GPS Configuration
+4 -1
View File
@@ -84,8 +84,9 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- If using [Moving Baseline & GPS Heading](#setting-up-moving-baseline--gps-heading), set [SENS_GPS_PRIME](../advanced_config/parameter_reference.md#SENS_GPS_PRIME) to the CAN node ID of the _Moving Base_ module. The moving base is preferred because the rover receiver in a moving baseline configuration can experience degraded navigation rate and increased data latency when corrections are intermittent.
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK RTK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK RTK GPS from the vehicles centre of gravity.
### ARK RTK GPS Configuration
@@ -137,6 +138,7 @@ Setup via CAN:
- On the _Moving Base_, set the following:
- [GPS_UBX_MODE](../advanced_config/parameter_reference.md#GPS_UBX_MODE) to `4`.
- [CANNODE_PUB_MBD](../advanced_config/parameter_reference.md#CANNODE_PUB_MBD) to `1`.
- On the _Flight Controller_, set [SENS_GPS_PRIME](../advanced_config/parameter_reference.md#SENS_GPS_PRIME) to the CAN node ID of the _Moving Base_ (see [PX4 Configuration](#px4-configuration)).
Setup via UART:
@@ -155,6 +157,7 @@ Setup via UART:
- [GPS_YAW_OFFSET](../advanced_config/parameter_reference.md#GPS_YAW_OFFSET) to `0` if your _Rover_ is in front of your _Moving Base_, `90` if _Rover_ is right of _Moving Base_, `180` if _Rover_ is behind _Moving Base_, or `270` if _Rover_ is left of _Moving Base_.
- On the _Moving Base_, set the following:
- [GPS_UBX_MODE](../advanced_config/parameter_reference.md#GPS_UBX_MODE) to `2`.
- On the _Flight Controller_, set [SENS_GPS_PRIME](../advanced_config/parameter_reference.md#SENS_GPS_PRIME) to the CAN node ID of the _Moving Base_ (see [PX4 Configuration](#px4-configuration)).
For more information see [Rover and Moving Base](../dronecan/index.md#rover-and-moving-base) in the DroneCAN guide.
+1 -1
View File
@@ -85,7 +85,7 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK RTK GPS L1 L5 from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK RTK GPS L1 L5 from the vehicles centre of gravity.
### ARK RTK GPS L1 L5 Configuration
+1 -1
View File
@@ -88,7 +88,7 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK X20 RTK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK X20 RTK GPS from the vehicles centre of gravity.
### ARK X20 RTK GPS Configuration
+1 -1
View File
@@ -94,4 +94,4 @@ If the sensor is not centred within the vehicle you will also need to define sen
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- Set [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) to `1` if this is that last node on the CAN bus.
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
+1 -1
View File
@@ -194,7 +194,7 @@ GPS CANNODE parameter ([set using QGC](#qgc-cannode-parameter-configuration)):
Other PX4 Parameters:
- If the GPS is not positioned at the vehicle centre of gravity you can account for the offset using [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z).
- If the GPS is not positioned at the vehicle centre of gravity you can account for the offset using [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ).
- If the GPS module provides yaw information, you can enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
#### RTK GPS
+1 -1
View File
@@ -42,7 +42,7 @@ Each function is represented by a value that defines two behaviours: one when th
| 6 | Status/Green | System status colour | 녹색 |
| 7 | Status/Off | System status colour | Off |
참고:
Notes:
- The [system status colours](../getting_started/led_meanings.md#ui-led) is the same LED pattern used by the flight controller's onboard status LED (e.g. red when disarmed, green when armed and ready).
- A fixed colour, commonly used to indicate aircraft orientation. For example it is a common convention to have a red light on the port side, green on starboard, or white to the rear.
+12
View File
@@ -58,6 +58,18 @@ Other
- Open source AM32 firmware
- [DIU Blue Framework Listed](https://www.diu.mil/blue-uas/framework)
## PX4 설정
The ARK 4IN1 ESC supports DShot 300/600, Bidirectional DShot, and PWM input protocols.
- **Bidirectional DShot**: Select BDShot300 or BDShot600 in the [Actuator Configuration](../config/actuators.md) to enable eRPM telemetry.
- **[Extended DShot Telemetry (EDT)](https://github.com/bird-sanctuary/extended-dshot-telemetry)**: AM32 firmware supports EDT, which provides temperature, voltage, and current through the BDShot signal. Enable with `DSHOT_BIDIR_EDT=1`.
- **AM32 EEPROM Settings**: Set `DSHOT_ESC_TYPE=1` to enable reading and writing ESC firmware settings via a ground station.
See [DShot ESCs](../peripherals/dshot.md) for full setup details.
## See Also
- [ARK 4IN1 ESC CONS](https://docs.arkelectron.com/electronic-speed-controller/ark-4in1-esc) (ARK Docs)
- [DShot and Bidirectional DShot](https://brushlesswhoop.com/dshot-and-bidirectional-dshot/) (brushlesswhoop.com - General DShot reference)
- [Extended DShot Telemetry (EDT) Specification](https://github.com/bird-sanctuary/extended-dshot-telemetry) (bird-sanctuary)
@@ -18,6 +18,7 @@ This category includes boards that are not fully compliant with the pixhawk stan
- [ARK Electronics ARKV6X](../flight_controller/ark_v6x.md) (and [ARK Electronics Pixhawk Autopilot Bus Carrier](../flight_controller/ark_pab.md))
- [ARK FPV Flight Controller](../flight_controller/ark_fpv.md)
- [ARK Pi6X Flow Flight Controller](../flight_controller/ark_pi6x.md)
- [CORVON 743v1](../flight_controller/corvon_743v1.md)
- [CUAV Nora](../flight_controller/cuav_nora.md) (CUAV X7 variant)
- [CUAV V5+](../flight_controller/cuav_v5_plus.md) (FMUv5)
- [CUAV V5 nano](../flight_controller/cuav_v5_nano.md) (FMUv5)
+112
View File
@@ -0,0 +1,112 @@
# CORVON 743v1
<Badge type="tip" text="PX4 v1.18" />
:::warning
PX4 does not manufacture this (or any) autopilot. Contact the manufacturer for hardware support or compliance issues.
:::
The _CORVON 743v1_ is a flight controller designed by Feikong Technology Co., Ltd under the CORVON brand.
It features a powerful STM32H743 processor, dual high-performance IMUs (BMI088/BMI270), and an extensive array of interfaces.
With its highly integrated 36x36mm footprint and 9g weight, and specialized interfaces like a direct plug-and-play DJI O3 Air Unit connector, this flight controller is optimized for space-constrained FPV builds and agile multirotors that require top-tier processing power and sensor redundancy.
The board uses [Pixhawk Autopilot Standard Connections](https://docs.px4.io/main/en/flight_controller/autopilot_pixhawk_standard.html).
<img src="../../assets/flight_controller/corvon_743v1/corvon_743v1_top.jpg" width="400px" title="CORVON 743v1 Top Baseboard" /> <img src="../../assets/flight_controller/corvon_743v1/corvon_743v1_bottom.jpg" width="400px" title="CORVON 743v1 Bottom Interfaces" />
:::info
This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md).
:::
## 주요 특징
- **MCU:** STM32H743VIT6 MCU (32 Bit Arm® Cortex®-M7, 480MHz, 2MB Flash, 1MB RAM)
- **IMU:** Bosch BMI088, BMI270 (Dual IMU redundancy)
- **Barometer:** DPS310
- **Magnetometer:** IST8310
- **OSD:** Onboard AT7456E
- **Interfaces:**
- 7x UARTs
- 1x CAN (UAVCAN)
- I2C 1개
- Dedicated RC Input (UART6)
- 10x PWM outputs (DShot & Bi-Directional DShot supported)
- Dedicated DJI O3 Air Unit connector
- **Power:**
- 9V 3A BEC
- 5V 3A BEC
- ADC for battery voltage (up to 6S) and current monitoring
## 구매처
Order from [CORVON](https://corvon.tech).
## Physical / Mechanical
- **Mounting:** 30.5 x 30.5mm, Φ4mm
- **Dimensions:** 36 x 36 x 8 mm
- **Weight:** 9g
## 사양
### Processors & Sensors
- **FMU Processor:** STM32H743
- 32 Bit Arm® Cortex®-M7, 480MHz
- 2MB Flash, 1MB RAM
- **On-board Sensors:**
- Accel/Gyro: Bosch BMI088, BMI270
- Barometer: DPS310
- Compass: IST8310
### Power Configuration
The board has an internal voltage sensor and connections on the ESC connector for an external current sensor.
- The voltage sensor handles up to 6S LiPo batteries.
- Two onboard BECs provide robust peripheral power (9V 3A and 5V 3A).
## Connectors & Pinouts
The following image shows the port connection details, including RC, UARTs, CAN, I2C, SWD Debug, and VTX connections.
<img src="../../assets/flight_controller/corvon_743v1/CORVON743V1_PortsConnection.png" width="800px" title="CORVON 743v1 Ports" />
### Standard Serial Port Mapping
| UART | PX4 Target Config | Default Usage |
| ------ | ----------------- | ------------- |
| USART1 | TELEM1 | MAVLink |
| UART4 | TELEM2 | MAVLink |
| USART2 | GPS1 | GPS |
| USART3 | TELEM3 | |
| UART8 | URT6 | |
| USART6 | RC | RC Input |
| UART7 | TELEM4 | ESC Telemetry |
### 디버그 포트
The board features a **4-pin SWD Debug** interface located on the right side of the board. This includes `SWCLK`, `SWDIO`, `3V3`, and `GND` for full hardware debugging. While a dedicated UART isn't strictly reserved for the NSH console by default, the full-speed USB connection provides MAVLink Console access out of the box.
### RC Input
RC Input is mapped to **UART6** via the explicit `SBUS/CRSF` connector block.
- It fully supports PX4's standard `RC_INPUT` module protocols.
- The connector exposes both `RX6` and `TX6`, which makes it fully capable of bidirectional receiver protocols such as TBS Crossfire (CRSF), ELRS, and FPort, as well as traditional single-wire standards like SBUS (which operates inverted on RX6).
## Building/Loading Firmware
:::tip
Most users will not need to build this firmware (from PX4 v1.18).
It is pre-built and automatically installed by _QGroundControl_ when appropriate hardware is connected.
:::
To [build PX4](../dev_setup/building_px4.md) for this target from source:
```sh
make corvon_743v1_default
```
Initial firmware flashing can be done over USB via QGroundControl. The bootloader status aligns with standard generic PX4 LED indications (Red = Bootloader/Error, Blue = Active/Activity, Green = Powered).
@@ -116,7 +116,7 @@ The [Pixhawk V6X Wiring Quick Start](../assembly/quick_start_cuav_pixhawk_v6x.md
![Pixhawk V6x Pinout](../../assets/flight_controller/cuav_pixhawk_v6x/pixhawk_v6x_pinouts.png)
참고:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
@@ -174,7 +174,7 @@ _MR-VMU-RT1176_ connectors (following [Pixhawk Connector Standard](https://githu
[NXP MR-VMU-RT1176 Baseboard Pinout](https://nxp.gitbook.io/vmu-rt1176/pin-out) (nxp.gitbook.io)
참고:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -149,7 +149,7 @@ Sample Wiring Diagram
- [Holybro Pixhawk Baseboard Pinout](https://docs.holybro.com/autopilot/pixhawk-6x/pixhawk-baseboard-pinout)
- [Holybro Pixhawk Mini-Baseboard Pinout](https://docs.holybro.com/autopilot/pixhawk-6x/pixhawk-mini-baseboard-pinout)
참고:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -180,7 +180,7 @@ Sample Wiring Diagram
- [Holybro Pixhawk Jetson Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-jetson-baseboard)
- [Holybro Pixhawk RPi CM4 Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard)
참고:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -140,7 +140,7 @@ The [Pixhawk 6X Wiring Quick Start](../assembly/quick_start_pixhawk6x.md) provid
- [Holybro Pixhawk Jetson Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-jetson-baseboard)
- [Holybro Pixhawk RPi CM4 Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard)
참고:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -22,7 +22,7 @@ The vehicle will not automatically disarm after arming, and must be manually dis
The vehicle detects that it has been thrown based on reaching a certain speed (5m/s), and then starts the motors at the apex of the throw (once it determines that it has started to fall).
You need to throw the vehicle high enough so that it can stabilize its height well before falling anywhere near people or obstacles.
참고:
Notes:
- The mode is disabled by default, and must be enabled using a [parameter](#parameters) before arming.
- When enabled you cannot take off from the ground using the normal modes.
+44 -4
View File
@@ -164,6 +164,42 @@ $$\dot{B} = \gamma - \frac{\dot{V_T}}{g}$$
## 고정익 자세 콘트롤러
### Setpoint modificaiton
Most fixed-wing aircraft cannot generate a sustained yaw rate using the rudder alone. As a result, the yaw component of the quaternion attitude error should be removed before computing the control action.
This is achieved by premultiplying the setpoint quaternion with a rotation about the global down axis. The additional rotation cancels the yaw component of the attitude error while preserving the roll and pitch components.
The yaw offset is
$$
\psi =-2\frac{\hat{q}_0 q_3 - \hat{q}_1 q_2 + \hat{q}_2 q_1 -\hat{q}_3 q_0}
{\hat{q}_0 q_0 - \hat{q}_1 q_1 - \hat{q}_2 q_2 + \hat{q}_3 q_3}
$$
The quaternion representing the yaw offset is
$$
_{\text{yaw}} =
\operatorname{normalize}
\left(
\begin{bmatrix}
1 \
0 \
0 \
\frac{\psi}{2}
\end{bmatrix}
\right)
$$
The corrected setpoint quaternion is then obtained by applying the rotation
$$
_{\text{sp, corrected}} = _{\text{yaw}} \otimes _{sp}
$$
### Quaternion based attitude controller
![FW Attitude Controller Diagram](../../assets/diagrams/px4_fw_attitude_controller_diagram.png)
<!-- The drawing is on draw.io: https://drive.google.com/file/d/1ibxekmtc6Ljq60DvNMplgnnU-JOvKYLQ/view?usp=sharing
@@ -186,12 +222,16 @@ If no airspeed sensor is used then gain scheduling for the FW attitude controlle
### Turn coordination
롤 및 피치 컨트롤러는 동일한 구조를 가지며, 종방향 역학과 횡방향 역학은 독립적으로 작동하기에 충분히 분리되어 있다고 가정합니다.
그러나, 요 콘트롤러는 항공기가 미끄러질 때 생성되는 측면 가속도를 최소화하기 위해 선회 조정 제약 조건을 사용하여 요 각속도 설정점을 계산합니다. The turn coordination algorithm is based solely on coordinated turn geometry calculation.
The yaw rate setpoint is generated using the turn coordination constraint in order to minimize lateral acceleration, generated when the aircraft is slipping.
$$\dot{\Psi}_{sp} = \frac{g}{V_T} \tan{\phi_{sp}} \cos{\theta_{sp}}$$
$$r_{sp} = \frac{2g}{V_T}\left(q_0 q_1 + q_2 q_3\right)$$
The yaw rate controller also helps to counteract [adverse yaw effects](https://youtu.be/sNV_SDDxuWk) and to damp the [Dutch roll mode](https://en.wikipedia.org/wiki/Dutch_roll) by providing extra directional damping.
This also helps to counteract [adverse yaw effects](https://youtu.be/sNV_SDDxuWk) and to damp the [Dutch roll mode](https://en.wikipedia.org/wiki/Dutch_roll) by providing extra directional damping.
To compensate for the non-zero pitch rate that naturally occurs during coordinated turns, a geometry-based feedforward term is added to the pitch-rate command.
This feedforward term accounts for the aircraft's current attitude and airspeed so that the controller does not need to generate this motion purely through feedback.
$$q_{sp}^{ff} = \frac{4g(q_0 q_1 + q_2 q_3)^2}{V(1 - 2q_1^2 - 2q_2^2)}$$
## VTOL 콘트롤러
@@ -270,7 +270,7 @@ MAIN:
4. Aileron left
5. Elevator right
6. Elevator left
7. 방향타
7. Rudder
AUX:
@@ -51,10 +51,10 @@ For example, you might wire it up like this example (orientation as if "sitting
| MAIN 3 | 전방 좌측 모터(시계 방향) |
| MAIN 4 | 후방 우측 모터(시계 방향) |
| AUX 1 | 좌측 보조익 TODO |
| AUX 2 | 우측 보조익 |
| AUX 3 | 승강타 |
| AUX 4 | 방향타 |
| AUX 5 | 스로틀 |
| AUX 2 | Right aileron |
| AUX 3 | Elevator |
| AUX 4 | Rudder |
| AUX 5 | Throttle |
For further instructions on wiring and configurations please see:
[Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md). <!-- replace with Pixhawk Wiring Quickstart -->
@@ -69,7 +69,7 @@ For further instructions on wiring and configurations please see:
3. 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.
## 비디오
@@ -92,14 +92,14 @@ Pixhawk의 출력은 다음과 같이 연결되어야합니다 ( "평면에 앉
| 포트 | 연결 |
| ------ | ---------------------- |
| 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 |
:::info
The servo direction can be reversed using the PWM_REV parameters in the PWM_OUTPUT group of QGroundControl (cogwheel tab, last item in the left menu)
+1 -1
View File
@@ -64,7 +64,7 @@ These have been tested by the PX4 dev team, or which are popular within the PX4
[Hb Micro M8N]: https://holybro.com/products/micro-m8n-gps
[CubePilot Here2]: ../gps_compass/gps_hex_here2.md
참고:
Notes:
- ✓ or a specific part number indicate that a features is supported, while ✘ or empty show that the feature is not supported.
"?"는 "알 수 없음"을 나타냅니다.
+1 -1
View File
@@ -75,7 +75,7 @@ It also highlights devices that connect via the CAN bus, and those which support
[mosaic-G5 P3H]: https://www.septentrio.com/en/products/gnss-receivers/gnss-receiver-modules/mosaic-G5-P3H
[D10P]: https://docs.datagnss.com/gnss/gnss_module/D10P_RTK
참고:
Notes:
- ✓ or a specific part number indicate that a features is supported, while ✘ or empty show that the feature is not supported.
"?"는 "알 수 없음"을 나타냅니다.
+298
View File
@@ -0,0 +1,298 @@
# Board Firmware Packaging
PX4 supports building distributable firmware packages for Linux-based (POSIX) boards.
While NuttX boards produce `.px4` firmware files that are flashed via QGroundControl, POSIX boards can produce `.deb` (Debian) packages that are installed using standard Linux package management tools (`dpkg`, `apt`).
This page covers how manufacturers can add `.deb` packaging to their boards, with examples for both single-processor and multi-processor architectures.
## 개요
The packaging framework uses [CMake CPack](https://cmake.org/cmake/help/latest/module/CPack.html) with the DEB generator.
It is built on two extension points in the PX4 build system:
- **`boards/<vendor>/<board>/cmake/package.cmake`**: CPack variable overrides (package name, version, dependencies, architecture, maintainer info). Loaded during CMake configure.
- **`boards/<vendor>/<board>/cmake/install.cmake`**: `install()` rules that define what goes into the package (binaries, scripts, config files, service files). Loaded from `platforms/posix/CMakeLists.txt` where build targets are available.
When a board provides these files, CI automatically discovers and builds the `_deb` target alongside the normal firmware build.
## Build Command
For any board with packaging support:
```sh
make <vendor>_<board>_deb
```
예:
```sh
make modalai_voxl2_deb
```
This builds the `_default` configuration (and any companion builds for multi-processor boards), then runs `cpack -G DEB` in the build directory.
The resulting `.deb` file is placed in `build/<vendor>_<board>_default/`.
## Adding Packaging to a Board
### File Structure
```
boards/<vendor>/<board>/
cmake/
package.cmake # CPack configuration (required)
install.cmake # Install rules (required)
debian/
postinst # Post-install script (optional)
prerm # Pre-remove script (optional)
<name>.service # Systemd unit file (optional)
```
### Step 1: CPack Configuration (package.cmake)
This file sets CPack variables that control the `.deb` metadata.
It is included from `cmake/package.cmake` after the base CPack defaults are configured.
```cmake
# boards/<vendor>/<board>/cmake/package.cmake
# Derive Debian-compatible version from git tag
# v1.17.0-alpha1-42-gabcdef -> 1.17.0~alpha1.42.gabcdef
# v1.17.0 -> 1.17.0
string(REGEX REPLACE "^v" "" _deb_ver "${PX4_GIT_TAG}")
string(REGEX REPLACE "-" "~" _deb_ver "${_deb_ver}")
string(REGEX REPLACE "~([0-9]+)~" ".\\1." _deb_ver "${_deb_ver}")
# Target architecture (use the target arch, not the build host)
set(CPACK_DEBIAN_ARCHITECTURE "arm64")
# Package identity
set(CPACK_DEBIAN_PACKAGE_NAME "my-px4-board")
set(CPACK_DEBIAN_FILE_NAME "my-px4-board_${_deb_ver}_arm64.deb")
# Install prefix
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_INSTALL_PREFIX "/usr")
set(CPACK_SET_DESTDIR true)
# Package metadata
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "PX4 Autopilot for My Board")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Vendor <support@vendor.com>")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "some-dependency (>= 1.0)")
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "")
set(CPACK_DEBIAN_PACKAGE_REPLACES "")
# Disable shlibdeps for cross-compiled boards
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF)
# Include post-install and pre-remove scripts (optional)
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
"${PX4_BOARD_DIR}/debian/postinst;${PX4_BOARD_DIR}/debian/prerm")
```
**Key variables:**
| 변수 | Purpose |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CPACK_DEBIAN_ARCHITECTURE` | Target architecture. Set explicitly for cross-compiled boards since `dpkg --print-architecture` reports the build host, not the target. |
| `CPACK_DEBIAN_PACKAGE_NAME` | Package name as it appears in `dpkg -l`. |
| `CPACK_DEBIAN_FILE_NAME` | Output `.deb` filename. |
| `CPACK_DEBIAN_PACKAGE_DEPENDS` | Runtime dependencies (comma-separated, Debian format). |
| `CPACK_DEBIAN_PACKAGE_SHLIBDEPS` | Set to `OFF` for cross-compiled boards where `dpkg-shlibdeps` cannot inspect target binaries. |
### Step 2: Install Rules (install.cmake)
This file defines what files are packaged in the `.deb`.
It is included from `platforms/posix/CMakeLists.txt` where the `px4` build target is available.
All paths are relative to `CPACK_PACKAGING_INSTALL_PREFIX` (typically `/usr`). Use `../` to install outside the prefix (e.g., `../etc/` installs to `/etc/`).
**Minimal example (single-processor board):**
```cmake
# boards/<vendor>/<board>/cmake/install.cmake
# PX4 binary
install(TARGETS px4 RUNTIME DESTINATION bin)
# Module alias script (generated during build)
install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/px4-alias.sh DESTINATION bin)
# Startup scripts
install(PROGRAMS
${PX4_BOARD_DIR}/target/my-px4-start
DESTINATION bin
)
# Configuration files
install(FILES
${PX4_BOARD_DIR}/target/my-config.conf
DESTINATION ../etc/my-board
)
# Systemd service
install(FILES ${PX4_BOARD_DIR}/debian/my-px4.service
DESTINATION ../etc/systemd/system
)
# Component metadata
install(FILES
${PX4_BINARY_DIR}/actuators.json.xz
${PX4_BINARY_DIR}/parameters.json.xz
DESTINATION ../data/px4/etc/extras
OPTIONAL
)
install(FILES ${PX4_BINARY_DIR}/events/all_events.json.xz
DESTINATION ../data/px4/etc/extras
OPTIONAL
)
```
### Step 3: Debian Scripts (optional)
#### postinst
Runs after the package is installed. Common tasks:
- Create `px4-*` module symlinks from `px4-alias.sh`
- Set up required directories with correct ownership
- Run `systemctl daemon-reload` to pick up the service file
- Board-specific setup (e.g., DSP signature generation)
```bash
#!/bin/bash
set -e
# Create px4-* symlinks
if [ -f /usr/bin/px4-alias.sh ]; then
grep "^alias " /usr/bin/px4-alias.sh | \
sed "s/alias \(px4-[a-zA-Z0-9_]*\)=.*/\1/" | while read cmd; do
ln -sf px4 "/usr/bin/${cmd}"
done
fi
# Create data directories
mkdir -p /data/px4/param
mkdir -p /data/px4/etc/extras
# Reload systemd
if command -v systemctl > /dev/null 2>&1; then
systemctl daemon-reload
fi
```
#### prerm
Runs before the package is removed:
```bash
#!/bin/bash
set -e
# Stop the service
if command -v systemctl > /dev/null 2>&1; then
systemctl stop my-px4 2>/dev/null || true
fi
# Remove px4-* symlinks
for f in /usr/bin/px4-*; do
if [ -L "$f" ] && [ "$(readlink "$f")" = "px4" ]; then
rm -f "$f"
fi
done
```
Both scripts must be executable (`chmod +x`).
## Multi-Processor Boards
Some boards run PX4 across multiple processors, for example the ModalAI VOXL2 which has a POSIX apps processor (ARM) and a Hexagon DSP (SLPI).
These produce two separate CMake builds, but the `.deb` must contain artifacts from both.
### How It Works
1. The `_default` build (POSIX/apps processor) owns the `.deb`.
2. The Makefile `%_deb` target builds `_default`, which chains any companion builds as CMake prerequisites.
3. The `install.cmake` pulls companion build artifacts via absolute path to the sibling build directory.
4. CPack runs in the `_default` build tree and produces a single `.deb`.
### Companion Build Artifacts
In `install.cmake`, reference the companion build output by absolute path:
```cmake
# DSP firmware blob from companion SLPI build
set(SLPI_BUILD_DIR "${PX4_SOURCE_DIR}/build/<vendor>_<board>-slpi_default")
install(FILES ${SLPI_BUILD_DIR}/platforms/qurt/libpx4.so
DESTINATION lib/rfsa/adsp
OPTIONAL
)
```
The `OPTIONAL` keyword allows the `.deb` to build even when the companion build hasn't run (useful for development/testing of just the apps-processor side).
### VOXL2 Reference
The VOXL2 board is a complete working example of multi-processor packaging:
```
boards/modalai/voxl2/
cmake/
package.cmake # CPack config: voxl-px4, arm64, deps, shlibdeps off
install.cmake # px4 binary, SLPI libpx4.so, scripts, configs, metadata
debian/
postinst # Symlinks, DSP signature, directory setup
prerm # Stop service, remove symlinks
voxl-px4.service # Systemd unit (after sscrpcd, restart on-failure)
target/
voxl-px4 # Main startup wrapper
voxl-px4-start # PX4 module startup script
```
The resulting `.deb` installs:
| Path | Contents |
| -------------------------------------- | ------------------------------------------------- |
| `/usr/bin/px4` | Apps processor PX4 binary |
| `/usr/bin/px4-alias.sh` | Module alias script |
| `/usr/bin/voxl-px4` | Startup wrapper |
| `/usr/bin/voxl-px4-start` | Module startup script |
| `/usr/lib/rfsa/adsp/libpx4.so` | DSP firmware (from SLPI build) |
| `/etc/modalai/*.config` | Board configuration files |
| `/etc/systemd/system/voxl-px4.service` | Systemd service |
| `/data/px4/etc/extras/*.json.xz` | Component metadata |
## CI Integration
### Automatic Discovery
The CI system (`Tools/ci/generate_board_targets_json.py`) automatically discovers boards with `cmake/package.cmake` and adds a `<vendor>_<board>_deb` target to the board's existing CI group.
No manual CI configuration is needed.
### Artifact Collection
The `Tools/ci/package_build_artifacts.sh` script collects `.deb` files alongside `.px4` and `.elf` artifacts.
On tagged releases, `.deb` files are uploaded to both S3 and GitHub Releases.
## Version Format
The `.deb` version is derived from `PX4_GIT_TAG` using Debian-compatible formatting:
| Git Tag | Debian Version | 참고 |
| --------------------------- | -------------------------- | --------------------------------------------------------- |
| `v1.17.0` | `1.17.0` | Stable release |
| `v1.17.0-beta1` | `1.17.0~beta1` | Pre-release (`~` sorts before release) |
| `v1.17.0-alpha1-42-gabcdef` | `1.17.0~alpha1.42.gabcdef` | Development build |
The `~` prefix in Debian versioning ensures pre-releases sort lower than the final release: `1.17.0~beta1 < 1.17.0`.
## Checklist for New Boards
1. Create `boards/<vendor>/<board>/cmake/package.cmake` with CPack variables
2. Create `boards/<vendor>/<board>/cmake/install.cmake` with install rules
3. (Optional) Create `boards/<vendor>/<board>/debian/postinst` and `prerm`
4. (Optional) Create `boards/<vendor>/<board>/debian/<name>.service`
5. Test locally: `make <vendor>_<board>_deb`
6. Verify: `dpkg-deb --info build/<vendor>_<board>_default/<name>_*.deb`
7. Verify: `dpkg-deb --contents build/<vendor>_<board>_default/<name>_*.deb`
8. CI picks it up automatically on the next push
+1
View File
@@ -9,6 +9,7 @@ It also links instructions for how you can add PX4 support for:
- [Adding Standard Messages](../mavlink/adding_messages.md)
- [Streaming MAVLink messages](../mavlink/streaming_messages.md)
- [Configuring/Using MAVLink Profiles](../mavlink/mavlink_profiles.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)
+67
View File
@@ -0,0 +1,67 @@
# MAVLink Profiles
A MAVLink _profile_ (also called a _mode_) defines a set of messages that can be streamed by default on a MAVLink channel and their rates.
This section lists the profiles, and explains how they can be used and extended.
## Available Profiles
The available profiles (in source-code declaration order) are:
- _Normal_ (`MAVLINK_MODE_NORMAL`): Set of messages for a GCS.
- _Onboard_ (`MAVLINK_MODE_ONBOARD`): Set of messages for a companion computer on a fast link (such as Ethernet).
- _Gimbal_ (`MAVLINK_MODE_GIMBAL`): Messages for a gimbal. Note this also enables message forwarding.
- _External Vision_ (`MAVLINK_MODE_EXTVISION`): Messages for offboard vision systems.
- _External Vision Minimal_ (`MAVLINK_MODE_EXTVISIONMIN`): Messages for offboard vision systems on slower links.
- _OSD_ (`MAVLINK_MODE_OSD`): Set of messages for an OSD system.
- _Magic_ (`MAVLINK_MODE_MAGIC`): No messages streamed by default. Used when configuring streaming dynamically via MAVLink.
- _Custom_ (`MAVLINK_MODE_CUSTOM`): Same as `MAVLINK_MODE_MAGIC`.
- _Config_ (`MAVLINK_MODE_CONFIG`): Set of messages for configuration interface, sent at higher rates. This is used, for example, to send the `MAVLINK_MODE_NORMAL` message set via USB to a GCS.
- _Iridium_ (`MAVLINK_MODE_IRIDIUM`): Streams `HIGH_LATENCY2` message to an iridium satellite phone.
- _Minimal_ (`MAVLINK_MODE_MINIMAL`): Minimal set of messages for use with a GCS on a poor telemetry link.
- _Onboard Low Bandwidth_ (`MAVLINK_MODE_ONBOARD_LOW_BANDWIDTH`): Set of messages to be streamed to a companion computer for re-routing to a reduced-traffic link, such as a GCS.
- _Low Bandwidth_ (`MAVLINK_MODE_LOW_BANDWIDTH`): Reduced message set for low bandwidth links.
- _uAvionix_ (`MAVLINK_MODE_UAVIONIX`): Messages for a uAvionix ADS-B beacon.
- _Distance Sensor_ (`MAVLINK_MODE_DISTANCE_SENSOR`): Streams distance sensor data at unlimited rate.
:::tip
The profile defines the _default_ messages and rates.
A connected MAVLink system can still request the streams/rates it wants using [MAV_CMD_SET_MESSAGE_INTERVAL](https://mavlink.io/en/messages/common.html#MAV_CMD_SET_MESSAGE_INTERVAL).
:::
To find the exact messages in each profile, search for ` configure_streams_to_default` (or the above profile names) in [mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp).
## Assigning Profiles to Ports
[MAVLink Peripherals](../peripherals/mavlink_peripherals.md) explains how to set up a port for communicating over MAVLink.
This uses the concept of an abstract [MAVLink instance](../peripherals/mavlink_peripherals.md#mavlink-instances) which is then assigned to a serial port.
The profile associated with a particular MAVLink instance is set using the associated `MAV_X_MODE` parameter:
- [MAV_0_MODE](../advanced_config/parameter_reference.md#MAV_0_MODE)
- [MAV_1_MODE](../advanced_config/parameter_reference.md#MAV_1_MODE)
- [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE)
There are also dedicated profile parameters for ports that are not configured via MAVLink instances:
- [USB_MAV_MODE](../advanced_config/parameter_reference.md#USB_MAV_MODE): Profile for the USB port (used when MAVLink is set or detected on USB).
- [MAV_S_MODE](../advanced_config/parameter_reference.md#MAV_S_MODE): Profile for the internal SOM (System on Module) to FMU communication channel, used on boards where the FMU and companion computer are co-located on the same module.
Note that not all profiles can necessarily be set on these ports.
## Adding Messages to a Profile
You can add messages to a profile in appropriate `case` switch in the [Mavlink::configure_streams_to_default(const char \*configure_single_stream)](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp#L1430) method (see [mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp)).
If you're testing with a GCS over USB you might add the message to the `MAVLINK_MODE_CONFIG` case using the `configure_stream_local()` method.
For example, to stream `BATTERY_STATUS_DEMO` at 5 Hz:
```cpp
case MAVLINK_MODE_CONFIG: // USB
// Note: streams requiring low latency come first
...
configure_stream_local("BATTERY_STATUS_DEMO", 5.0f);
...
```
See [Streaming MAVLink Messages](streaming_messages.md) for a more detailed example.
+11 -22
View File
@@ -4,7 +4,7 @@ This tutorial demonstrates how to stream a uORB message as a MAVLink message, an
## 개요
[MAVLink messages](../middleware/mavlink.md) are streamed using a streaming class, derived from `MavlinkStream`, that has been added to the PX4 stream list.
[MAVLink messages](../middleware/mavlink.md) are streamed using a streaming class, derived from `MavlinkStream`, that has been added to the [PX4 stream list](#add-the-new-class-to-the-streaming-list).
The class has framework methods that you implement so PX4 can get information it needs from the generated MAVLink message definition.
It also has a `send()` method that is called each time the message needs to be sent — you override this to copy information from a uORB subscription to the MAVLink message object that is to be sent.
@@ -190,15 +190,17 @@ Most streaming classes are very similar (see examples in [/src/modules/mavlink/s
:::
Next we include our new class in [mavlink_messages.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_messages.cpp#L2193).
Add the line below to the part of the file where all the other streams are included:
### Add the new class to the streaming list
Next we add our new class to the streaming list.
First open [mavlink_messages.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_messages.cpp#L2193) and add the line below to the part of the file where all the other streams are included:
```cpp
#include "streams/BATTERY_STATUS_DEMO.hpp"
```
Finally append the stream class to the `streams_list` at the bottom of
[mavlink_messages.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_messages.cpp)
Then append the stream class to the `streams_list` at the bottom of [mavlink_messages.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_messages.cpp)
```C
StreamListItem *streams_list[] = {
@@ -215,25 +217,12 @@ We cover that in the next sections.
## Streaming by Default
The easiest way to stream your messages by default (as part of a build) is to add them to [mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp) in the appropriate message group.
The easiest way to stream your messages by default (as part of a build) is to add them to appropriate [MAVLink Profile](../mavlink/mavlink_profiles.md), such as `MAVLINK_MODE_NORMAL` if you're streaming to a GCS over WiFI, or `MAVLINK_MODE_OSD` for an OSD device.
If you search in the file you'll find groups of messages defined in a switch statement:
This is covered in [Adding Messages to a Profile](..//mavlink/mavlink_profiles.md#adding-messages-to-a-profile), but in summary you first open [mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp), search for the method `Mavlink::configure_streams_to_default`, and then find the profile that you wish to update.
- `MAVLINK_MODE_NORMAL`: Streamed to a GCS.
- `MAVLINK_MODE_ONBOARD`: Streamed to a companion computer on a fast link, such as Ethernet
- `MAVLINK_MODE_ONBOARD_LOW_BANDWIDTH`: Streamed to a companion computer for re-routing to a reduced-traffic link, such as a GCS.
- `MAVLINK_MODE_GIMBAL`: Streamed to a gimbal
- `MAVLINK_MODE_EXTVISION`: Streamed to an external vision system
- `MAVLINK_MODE_EXTVISIONMIN`: Streamed to an external vision system on a slower link
- `MAVLINK_MODE_OSD`: Streamed to an OSD, such as an FPV headset.
- `MAVLINK_MODE_CUSTOM`: Stream nothing by default. Used when configuring streaming using MAVLink.
- `MAVLINK_MODE_MAGIC`: Same as `MAVLINK_MODE_CUSTOM`
- `MAVLINK_MODE_CONFIG`: Streaming over USB with higher rates than `MAVLINK_MODE_NORMAL`.
- `MAVLINK_MODE_MINIMAL`: Stream a minimal set of messages. Normally used for poor telemetry links.
- `MAVLINK_MODE_IRIDIUM`: Streamed to an iridium satellite phone
Normally you'll be testing on a GCS, so you could just add the message to the `MAVLINK_MODE_NORMAL` case using the `configure_stream_local()` method.
For example, to stream CA_TRAJECTORY at 5 Hz:
If you're just testing on a GCS, you could add the message to the `MAVLINK_MODE_NORMAL` case using the `configure_stream_local()` method.
For example, to stream `BATTERY_STATUS_DEMO` at 5 Hz:
```cpp
case MAVLINK_MODE_CONFIG: // USB
+192 -190
View File
@@ -96,203 +96,205 @@ They are not build into the module, and hence are neither published or subscribe
:::details
See messages
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [Vtx](../msg_docs/Vtx.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [Mission](../msg_docs/Mission.md)
- [EventV0](../msg_docs/EventV0.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [Vtx](../msg_docs/Vtx.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [LedControl](../msg_docs/LedControl.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [Rpm](../msg_docs/Rpm.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [Gripper](../msg_docs/Gripper.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [Ping](../msg_docs/Ping.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [EscReport](../msg_docs/EscReport.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [InputRc](../msg_docs/InputRc.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [Event](../msg_docs/Event.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [InputRc](../msg_docs/InputRc.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [Gripper](../msg_docs/Gripper.md)
- [EscReport](../msg_docs/EscReport.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [LedControl](../msg_docs/LedControl.md)
- [Event](../msg_docs/Event.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [Rpm](../msg_docs/Rpm.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
- [EventV0](../msg_docs/EventV0.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [Mission](../msg_docs/Mission.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [Ping](../msg_docs/Ping.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
:::
+3 -50
View File
@@ -191,28 +191,13 @@ Source: [drivers/dshot](https://github.com/PX4/PX4-Autopilot/tree/main/src/drive
### 설명
This is the DShot output driver. It is similar to the fmu driver, and can be used as drop-in replacement
This is the DShot output driver. It can be used as drop-in replacement
to use DShot as ESC communication protocol instead of PWM.
On startup, the module tries to occupy all available pins for DShot output.
It skips all pins already in use (e.g. by a camera trigger module).
It supports:
- DShot150, DShot300, DShot600
- telemetry via separate UART and publishing as esc_status message
- sending DShot commands via CLI
### 예
Permanently reverse motor 1:
```
dshot reverse -m 1
dshot save -m 1
```
After saving, the reversed direction will be regarded as the normal one. So to reverse again repeat the same commands.
### Usage {#dshot_usage}
@@ -226,36 +211,6 @@ dshot <command> [arguments...]
values: <device>
[-x] Swap RX/TX pins
reverse Reverse motor direction
[-m <val>] Motor index (1-based, default=all)
normal Normal motor direction
[-m <val>] Motor index (1-based, default=all)
save Save current settings
[-m <val>] Motor index (1-based, default=all)
3d_on Enable 3D mode
[-m <val>] Motor index (1-based, default=all)
3d_off Disable 3D mode
[-m <val>] Motor index (1-based, default=all)
beep1 Send Beep pattern 1
[-m <val>] Motor index (1-based, default=all)
beep2 Send Beep pattern 2
[-m <val>] Motor index (1-based, default=all)
beep3 Send Beep pattern 3
[-m <val>] Motor index (1-based, default=all)
beep4 Send Beep pattern 4
[-m <val>] Motor index (1-based, default=all)
beep5 Send Beep pattern 5
[-m <val>] Motor index (1-based, default=all)
stop
status print status info
@@ -1109,7 +1064,7 @@ px4io <command> [arguments...]
## rgbled
Source: [drivers/lights/rgbled_ncp5623c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled_ncp5623c)
Source: [drivers/lights/rgbled](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled)
### Usage {#rgbled_usage}
@@ -1124,9 +1079,7 @@ rgbled <command> [arguments...]
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 57
[-o <val>] RGB PWM Assignment
default: 123
default: 85
stop
+42
View File
@@ -0,0 +1,42 @@
---
pageClass: is-wide-page
---
# EscEepromRead (UORB message)
**TOPICS:** esc_eeprom_read
## Fields
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| --------- | ----------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | us | | Time since system start |
| firmware | `uint8` | | | ESC firmware type (see ESC_FIRMWARE enum in MAVLink) |
| index | `uint8` | | | Index of the ESC (0 = ESC1, 1 = ESC2, etc.) |
| length | `uint16` | | | Length of valid data |
| data | `uint8[48]` | | | Raw ESC EEPROM data |
## Constants
| 명칭 | 형식 | Value | 설명 |
| ----------------------------------------------------------------------------------------- | ------- | ----- | -------------------------------- |
| <a id="#ORB_QUEUE_LENGTH"></a> ORB_QUEUE_LENGTH | `uint8` | 8 | To support 8 queued up responses |
## Source Message
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscEepromRead.msg)
:::details
Click here to see original file
```c
uint64 timestamp # [us] Time since system start
uint8 firmware # [-] ESC firmware type (see ESC_FIRMWARE enum in MAVLink)
uint8 index # [-] Index of the ESC (0 = ESC1, 1 = ESC2, etc.)
uint16 length # [-] Length of valid data
uint8[48] data # [-] Raw ESC EEPROM data
uint8 ORB_QUEUE_LENGTH = 8 # To support 8 queued up responses
```
:::
+44
View File
@@ -0,0 +1,44 @@
---
pageClass: is-wide-page
---
# EscEepromWrite (UORB message)
**TOPICS:** esc_eeprom_write
## Fields
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| ------------------------------- | ----------- | ---------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | us | | Time since system start |
| firmware | `uint8` | | | ESC firmware type (see ESC_FIRMWARE enum in MAVLink) |
| index | `uint8` | | | Index of the ESC (0 = ESC1, 1 = ESC2, etc, 255 = All) |
| length | `uint16` | | | Length of valid data |
| data | `uint8[48]` | | | Raw ESC EEPROM data |
| write_mask | `uint32[2]` | | | Bitmask indicating which bytes in the data array should be written (max 48 values) |
## Constants
| 명칭 | 형식 | Value | 설명 |
| ----------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------- |
| <a id="#ORB_QUEUE_LENGTH"></a> ORB_QUEUE_LENGTH | `uint8` | 8 | To support 8 queued up requests |
## Source Message
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscEepromWrite.msg)
:::details
Click here to see original file
```c
uint64 timestamp # [us] Time since system start
uint8 firmware # [-] ESC firmware type (see ESC_FIRMWARE enum in MAVLink)
uint8 index # [-] Index of the ESC (0 = ESC1, 1 = ESC2, etc, 255 = All)
uint16 length # [-] Length of valid data
uint8[48] data # [-] Raw ESC EEPROM data
uint32[2] write_mask # [-] Bitmask indicating which bytes in the data array should be written (max 48 values)
uint8 ORB_QUEUE_LENGTH = 8 # To support 8 queued up requests
```
:::
+48 -43
View File
@@ -8,28 +8,26 @@ pageClass: is-wide-page
## Fields
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| -------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | | | time since system start (microseconds) |
| esc_errorcount | `uint32` | | | Number of reported errors by ESC - if supported |
| esc_rpm | `int32` | | | Motor RPM, negative for reverse rotation [RPM] - if supported |
| esc_voltage | `float32` | | | Voltage measured from current ESC [V] - if supported |
| esc_current | `float32` | | | Current measured from current ESC [A] - if supported |
| esc_temperature | `float32` | | | Temperature measured from current ESC [degC] - if supported |
| motor_temperature | `int16` | | | Temperature measured from current motor [degC] - if supported |
| esc_address | `uint8` | | | Address of current ESC (in most cases 1-8 / must be set by driver) |
| esc_cmdcount | `uint8` | | | Counter of number of commands |
| esc_state | `uint8` | | | State of ESC - depend on Vendor |
| actuator_function | `uint8` | | | actuator output function (one of Motor1...MotorN) |
| failures | `uint16` | | | Bitmask to indicate the internal ESC faults |
| esc_power | `int8` | | | Applied power 0-100 in % (negative values reserved) |
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| -------------------------------------- | --------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | us | | Time since system start |
| esc_errorcount | `uint32` | | | Number of reported errors by ESC - if supported |
| esc_rpm | `int32` | rpm | | Motor RPM, negative for reverse rotation - if supported |
| esc_voltage | `float32` | V | | Voltage measured from current ESC - if supported |
| esc_current | `float32` | A | | Current measured from current ESC - if supported |
| esc_temperature | `float32` | degC | | Temperature measured from current ESC - if supported |
| motor_temperature | `int16` | degC | | Temperature measured from current motor - if supported |
| esc_state | `uint8` | | | State of ESC - depend on Vendor |
| actuator_function | `uint8` | | | Actuator output function (one of Motor1...MotorN) |
| failures | `uint16` | | [FAILURE](#FAILURE) | Bitmask to indicate the internal ESC faults |
| esc_power | `int8` | % | [0 : 100] | Applied power (negative values reserved) |
## Constants
## Enums
### FAILURE {#FAILURE}
| 명칭 | 형식 | Value | 설명 |
| ------------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <a id="#ACTUATOR_FUNCTION_MOTOR1"></a> ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | |
| <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) |
@@ -40,7 +38,14 @@ pageClass: is-wide-page
| <a id="#FAILURE_MOTOR_WARN_TEMPERATURE"></a> FAILURE_MOTOR_WARN_TEMPERATURE | `uint8` | 7 | (1 << 7) |
| <a id="#FAILURE_WARN_ESC_TEMPERATURE"></a> FAILURE_WARN_ESC_TEMPERATURE | `uint8` | 8 | (1 << 8) |
| <a id="#FAILURE_OVER_ESC_TEMPERATURE"></a> FAILURE_OVER_ESC_TEMPERATURE | `uint8` | 9 | (1 << 9) |
| <a id="#ESC_FAILURE_COUNT"></a> ESC_FAILURE_COUNT | `uint8` | 10 | Counter - keep it as last element! |
## Constants
| 명칭 | 형식 | Value | 설명 |
| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------ |
| <a id="#ACTUATOR_FUNCTION_MOTOR1"></a> ACTUATOR_FUNCTION_MOTOR1 | `uint8` | 101 | |
| <a id="#ACTUATOR_FUNCTION_MOTOR_MAX"></a> ACTUATOR_FUNCTION_MOTOR_MAX | `uint8` | 112 | output_functions.yaml Motor.start + Motor.count - 1 |
| <a id="#ESC_FAILURE_COUNT"></a> ESC_FAILURE_COUNT | `uint8` | 10 | Counter - keep it as last element! |
## Source Message
@@ -50,36 +55,36 @@ pageClass: is-wide-page
Click here to see original file
```c
uint64 timestamp # time since system start (microseconds)
uint32 esc_errorcount # Number of reported errors by ESC - if supported
int32 esc_rpm # Motor RPM, negative for reverse rotation [RPM] - if supported
float32 esc_voltage # Voltage measured from current ESC [V] - if supported
float32 esc_current # Current measured from current ESC [A] - if supported
float32 esc_temperature # Temperature measured from current ESC [degC] - if supported
int16 motor_temperature # Temperature measured from current motor [degC] - if supported
uint8 esc_address # Address of current ESC (in most cases 1-8 / must be set by driver)
uint8 esc_cmdcount # Counter of number of commands
uint64 timestamp # [us] Time since system start
uint8 esc_state # State of ESC - depend on Vendor
uint32 esc_errorcount # [-] Number of reported errors by ESC - if supported
int32 esc_rpm # [rpm] Motor RPM, negative for reverse rotation - if supported
float32 esc_voltage # [V] Voltage measured from current ESC - if supported
float32 esc_current # [A] Current measured from current ESC - if supported
float32 esc_temperature # [degC] Temperature measured from current ESC - if supported
int16 motor_temperature # [degC] Temperature measured from current motor - if supported
uint8 esc_state # [-] State of ESC - depend on Vendor
uint8 actuator_function # [-] Actuator output function (one of Motor1...MotorN)
uint8 actuator_function # actuator output function (one of Motor1...MotorN)
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101
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)
uint16 failures # [@enum FAILURE] Bitmask to indicate the internal ESC faults
int8 esc_power # [%] [@range 0,100] Applied power (negative values reserved)
uint8 FAILURE_OVER_CURRENT = 0 # (1 << 0)
uint8 FAILURE_OVER_VOLTAGE = 1 # (1 << 1)
uint8 FAILURE_MOTOR_OVER_TEMPERATURE = 2 # (1 << 2)
uint8 FAILURE_OVER_RPM = 3 # (1 << 3)
uint8 FAILURE_INCONSISTENT_CMD = 4 # (1 << 4) Set if ESC received an inconsistent command (i.e out of boundaries)
uint8 FAILURE_MOTOR_STUCK = 5 # (1 << 5)
uint8 FAILURE_GENERIC = 6 # (1 << 6)
uint8 FAILURE_MOTOR_WARN_TEMPERATURE = 7 # (1 << 7)
uint8 FAILURE_WARN_ESC_TEMPERATURE = 8 # (1 << 8)
uint8 FAILURE_OVER_ESC_TEMPERATURE = 9 # (1 << 9)
uint8 ESC_FAILURE_COUNT = 10 # Counter - keep it as last element!
uint8 FAILURE_OVER_CURRENT = 0 # (1 << 0)
uint8 FAILURE_OVER_VOLTAGE = 1 # (1 << 1)
uint8 FAILURE_MOTOR_OVER_TEMPERATURE = 2 # (1 << 2)
uint8 FAILURE_OVER_RPM = 3 # (1 << 3)
uint8 FAILURE_INCONSISTENT_CMD = 4 # (1 << 4) Set if ESC received an inconsistent command (i.e out of boundaries)
uint8 FAILURE_MOTOR_STUCK = 5 # (1 << 5)
uint8 FAILURE_GENERIC = 6 # (1 << 6)
uint8 FAILURE_MOTOR_WARN_TEMPERATURE = 7 # (1 << 7)
uint8 FAILURE_WARN_ESC_TEMPERATURE = 8 # (1 << 8)
uint8 FAILURE_OVER_ESC_TEMPERATURE = 9 # (1 << 9)
uint8 ESC_FAILURE_COUNT = 10 # Counter - keep it as last element!
```
:::
+51 -40
View File
@@ -8,27 +8,34 @@ pageClass: is-wide-page
## Fields
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| ---------------------------------------------------------- | -------------- | ---------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | | | time since system start (microseconds) |
| counter | `uint16` | | | incremented by the writing thread everytime new data is stored |
| esc_count | `uint8` | | | number of connected ESCs |
| esc_connectiontype | `uint8` | | | how ESCs connected to the system |
| esc_online_flags | `uint8` | | | Bitmask indicating which ESC is online/offline |
| esc_armed_flags | `uint8` | | | Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set. |
| esc | `EscReport[8]` | | | |
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| ---------------------------------------------------------- | --------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| timestamp | `uint64` | us | | Time since system start |
| counter | `uint16` | | | Incremented by the writing thread everytime new data is stored |
| esc_count | `uint8` | | | Number of connected ESCs |
| esc_connectiontype | `uint8` | | [ESC_CONNECTION_TYPE](#ESC_CONNECTION_TYPE) | How ESCs connected to the system |
| esc_online_flags | `uint16` | | | Bitmask indicating which ESC is online/offline (in motor order) |
| esc_armed_flags | `uint16` | | | Bitmask indicating which ESC is armed (in motor order) |
| esc | `EscReport[12]` | | | |
## Enums
### ESC_CONNECTION_TYPE {#ESC_CONNECTION_TYPE}
| 명칭 | 형식 | Value | 설명 |
| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ------------------------ |
| <a id="#ESC_CONNECTION_TYPE_PPM"></a> ESC_CONNECTION_TYPE_PPM | `uint8` | 0 | Traditional PPM ESC |
| <a id="#ESC_CONNECTION_TYPE_SERIAL"></a> ESC_CONNECTION_TYPE_SERIAL | `uint8` | 1 | Serial Bus connected ESC |
| <a id="#ESC_CONNECTION_TYPE_ONESHOT"></a> ESC_CONNECTION_TYPE_ONESHOT | `uint8` | 2 | One Shot PPM |
| <a id="#ESC_CONNECTION_TYPE_I2C"></a> ESC_CONNECTION_TYPE_I2C | `uint8` | 3 | I2C |
| <a id="#ESC_CONNECTION_TYPE_CAN"></a> ESC_CONNECTION_TYPE_CAN | `uint8` | 4 | CAN-Bus |
| <a id="#ESC_CONNECTION_TYPE_DSHOT"></a> ESC_CONNECTION_TYPE_DSHOT | `uint8` | 5 | DShot |
## Constants
| 명칭 | 형식 | Value | 설명 |
| ------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- | ---------------------------------------------------------------------------------------------------- |
| <a id="#CONNECTED_ESC_MAX"></a> CONNECTED_ESC_MAX | `uint8` | 8 | The number of ESCs supported. Current (Q2/2013) we support 8 ESCs |
| <a id="#ESC_CONNECTION_TYPE_PPM"></a> ESC_CONNECTION_TYPE_PPM | `uint8` | 0 | Traditional PPM ESC |
| <a id="#ESC_CONNECTION_TYPE_SERIAL"></a> ESC_CONNECTION_TYPE_SERIAL | `uint8` | 1 | Serial Bus connected ESC |
| <a id="#ESC_CONNECTION_TYPE_ONESHOT"></a> ESC_CONNECTION_TYPE_ONESHOT | `uint8` | 2 | One Shot PPM |
| <a id="#ESC_CONNECTION_TYPE_I2C"></a> ESC_CONNECTION_TYPE_I2C | `uint8` | 3 | I2C |
| <a id="#ESC_CONNECTION_TYPE_CAN"></a> ESC_CONNECTION_TYPE_CAN | `uint8` | 4 | CAN-Bus |
| <a id="#ESC_CONNECTION_TYPE_DSHOT"></a> ESC_CONNECTION_TYPE_DSHOT | `uint8` | 5 | DShot |
| 명칭 | 형식 | Value | 설명 |
| ------------------------------------------------------------------------------------------- | ------- | ----- | ---------------------------------------------------------------- |
| <a id="#CONNECTED_ESC_MAX"></a> CONNECTED_ESC_MAX | `uint8` | 12 | The number of ESCs supported (Motor1-Motor12) |
## Source Message
@@ -38,34 +45,38 @@ pageClass: is-wide-page
Click here to see original file
```c
uint64 timestamp # time since system start (microseconds)
uint8 CONNECTED_ESC_MAX = 8 # The number of ESCs supported. Current (Q2/2013) we support 8 ESCs
uint64 timestamp # [us] Time since system start
uint8 CONNECTED_ESC_MAX = 12 # The number of ESCs supported (Motor1-Motor12)
uint8 ESC_CONNECTION_TYPE_PPM = 0 # Traditional PPM ESC
uint8 ESC_CONNECTION_TYPE_SERIAL = 1 # Serial Bus connected ESC
uint8 ESC_CONNECTION_TYPE_ONESHOT = 2 # One Shot PPM
uint8 ESC_CONNECTION_TYPE_I2C = 3 # I2C
uint8 ESC_CONNECTION_TYPE_CAN = 4 # CAN-Bus
uint8 ESC_CONNECTION_TYPE_DSHOT = 5 # DShot
uint8 ESC_CONNECTION_TYPE_PPM = 0 # Traditional PPM ESC
uint8 ESC_CONNECTION_TYPE_SERIAL = 1 # Serial Bus connected ESC
uint8 ESC_CONNECTION_TYPE_ONESHOT = 2 # One Shot PPM
uint8 ESC_CONNECTION_TYPE_I2C = 3 # I2C
uint8 ESC_CONNECTION_TYPE_CAN = 4 # CAN-Bus
uint8 ESC_CONNECTION_TYPE_DSHOT = 5 # DShot
uint16 counter # incremented by the writing thread everytime new data is stored
uint16 counter # [-] Incremented by the writing thread everytime new data is stored
uint8 esc_count # number of connected ESCs
uint8 esc_connectiontype # how ESCs connected to the system
uint8 esc_count # [-] Number of connected ESCs
uint8 esc_connectiontype # [@enum ESC_CONNECTION_TYPE] How ESCs connected to the system
uint8 esc_online_flags # Bitmask indicating which ESC is online/offline
# esc_online_flags bit 0 : Set to 1 if ESC0 is online
# esc_online_flags bit 1 : Set to 1 if ESC1 is online
# esc_online_flags bit 2 : Set to 1 if ESC2 is online
# esc_online_flags bit 3 : Set to 1 if ESC3 is online
# esc_online_flags bit 4 : Set to 1 if ESC4 is online
# esc_online_flags bit 5 : Set to 1 if ESC5 is online
# esc_online_flags bit 6 : Set to 1 if ESC6 is online
# esc_online_flags bit 7 : Set to 1 if ESC7 is online
uint16 esc_online_flags # Bitmask indicating which ESC is online/offline (in motor order)
# esc_online_flags bit 0 : Set to 1 if Motor1 is online
# esc_online_flags bit 1 : Set to 1 if Motor2 is online
# esc_online_flags bit 2 : Set to 1 if Motor3 is online
# esc_online_flags bit 3 : Set to 1 if Motor4 is online
# esc_online_flags bit 4 : Set to 1 if Motor5 is online
# esc_online_flags bit 5 : Set to 1 if Motor6 is online
# esc_online_flags bit 6 : Set to 1 if Motor7 is online
# esc_online_flags bit 7 : Set to 1 if Motor8 is online
# esc_online_flags bit 8 : Set to 1 if Motor9 is online
# esc_online_flags bit 9 : Set to 1 if Motor10 is online
# esc_online_flags bit 10: Set to 1 if Motor11 is online
# esc_online_flags bit 11: Set to 1 if Motor12 is online
uint8 esc_armed_flags # Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set.
uint16 esc_armed_flags # [-] Bitmask indicating which ESC is armed (in motor order)
EscReport[8] esc
EscReport[12] esc
```
:::
+46 -39
View File
@@ -10,45 +10,48 @@ GPS position in WGS84 coordinates. the field 'timestamp' is for the position & v
## Fields
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| ----------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | | | time since system start (microseconds) |
| timestamp_sample | `uint64` | | | |
| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles |
| latitude_deg | `float64` | | | Latitude in degrees, allows centimeter level RTK precision |
| longitude_deg | `float64` | | | Longitude in degrees, allows centimeter level RTK precision |
| altitude_msl_m | `float64` | | | Altitude above MSL, meters |
| altitude_ellipsoid_m | `float64` | | | Altitude above Ellipsoid, meters |
| s_variance_m_s | `float32` | | | GPS speed accuracy estimate, (metres/sec) |
| c_variance_rad | `float32` | | | GPS course accuracy estimate, (radians) |
| fix_type | `uint8` | | | Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix. |
| eph | `float32` | | | GPS horizontal position accuracy (metres) |
| epv | `float32` | | | GPS vertical position accuracy (metres) |
| hdop | `float32` | | | Horizontal dilution of precision |
| vdop | `float32` | | | Vertical dilution of precision |
| noise_per_ms | `int32` | | | GPS noise per millisecond |
| automatic_gain_control | `uint16` | | | Automatic gain control monitor |
| jamming_state | `uint8` | | | indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected |
| jamming_indicator | `int32` | | | indicates jamming is occurring |
| spoofing_state | `uint8` | | | indicates whether spoofing has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected |
| authentication_state | `uint8` | | | GPS signal authentication state |
| vel_m_s | `float32` | | | GPS ground speed, (metres/sec) |
| vel_n_m_s | `float32` | | | GPS North velocity, (metres/sec) |
| vel_e_m_s | `float32` | | | GPS East velocity, (metres/sec) |
| vel_d_m_s | `float32` | | | GPS Down velocity, (metres/sec) |
| cog_rad | `float32` | | | Course over ground (NOT heading, but direction of movement), -PI..PI, (radians) |
| vel_ned_valid | `bool` | | | True if NED velocity is valid |
| timestamp_time_relative | `int32` | | | timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds) |
| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 |
| satellites_used | `uint8` | | | Number of satellites used |
| system_error | `uint32` | | | General errors with the connected GPS receiver |
| heading | `float32` | | | heading angle of XYZ body frame rel to NED. Set to NaN if not available and updated (used for dual antenna GPS), (rad, [-PI, PI]) |
| heading_offset | `float32` | | | heading offset of dual antenna array in body frame. Set to NaN if not applicable. (rad, [-PI, PI]) |
| heading_accuracy | `float32` | | | heading accuracy (rad, [0, 2PI]) |
| rtcm_injection_rate | `float32` | | | RTCM message injection rate Hz |
| selected_rtcm_instance | `uint8` | | | uorb instance that is being used for RTCM corrections |
| rtcm_crc_failed | `bool` | | | RTCM message CRC failure detected |
| rtcm_msg_used | `uint8` | | | Indicates if the RTCM message was used successfully by the receiver |
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
| ----------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| timestamp | `uint64` | | | time since system start (microseconds) |
| timestamp_sample | `uint64` | | | |
| device_id | `uint32` | | | unique device ID for the sensor that does not change between power cycles |
| latitude_deg | `float64` | | | Latitude in degrees, allows centimeter level RTK precision |
| longitude_deg | `float64` | | | Longitude in degrees, allows centimeter level RTK precision |
| altitude_msl_m | `float64` | | | Altitude above MSL, meters |
| altitude_ellipsoid_m | `float64` | | | Altitude above Ellipsoid, meters |
| s_variance_m_s | `float32` | | | GPS speed accuracy estimate, (metres/sec) |
| c_variance_rad | `float32` | | | GPS course accuracy estimate, (radians) |
| fix_type | `uint8` | | | Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix. |
| eph | `float32` | | | GPS horizontal position accuracy (metres) |
| epv | `float32` | | | GPS vertical position accuracy (metres) |
| hdop | `float32` | | | Horizontal dilution of precision |
| vdop | `float32` | | | Vertical dilution of precision |
| noise_per_ms | `int32` | | | GPS noise per millisecond |
| automatic_gain_control | `uint16` | | | Automatic gain control monitor |
| jamming_state | `uint8` | | | indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected |
| jamming_indicator | `int32` | | | indicates jamming is occurring |
| spoofing_state | `uint8` | | | indicates whether spoofing has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected |
| authentication_state | `uint8` | | | GPS signal authentication state |
| vel_m_s | `float32` | | | GPS ground speed, (metres/sec) |
| vel_n_m_s | `float32` | | | GPS North velocity, (metres/sec) |
| vel_e_m_s | `float32` | | | GPS East velocity, (metres/sec) |
| vel_d_m_s | `float32` | | | GPS Down velocity, (metres/sec) |
| cog_rad | `float32` | | | Course over ground (NOT heading, but direction of movement), -PI..PI, (radians) |
| vel_ned_valid | `bool` | | | True if NED velocity is valid |
| timestamp_time_relative | `int32` | | | timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds) |
| time_utc_usec | `uint64` | | | Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0 |
| satellites_used | `uint8` | | | Number of satellites used |
| system_error | `uint32` | | | General errors with the connected GPS receiver |
| heading | `float32` | | | heading angle of XYZ body frame rel to NED. Set to NaN if not available and updated (used for dual antenna GPS), (rad, [-PI, PI]) |
| heading_offset | `float32` | | | heading offset of dual antenna array in body frame. Set to NaN if not applicable. (rad, [-PI, PI]) |
| heading_accuracy | `float32` | | | heading accuracy (rad, [0, 2PI]) |
| rtcm_injection_rate | `float32` | | | RTCM message injection rate Hz |
| selected_rtcm_instance | `uint8` | | | uorb instance that is being used for RTCM corrections |
| rtcm_crc_failed | `bool` | | | RTCM message CRC failure detected |
| rtcm_msg_used | `uint8` | | | Indicates if the RTCM message was used successfully by the receiver |
| antenna_offset_x | `float32` | m [body frame FRD] | | X Position of GNSS antenna |
| antenna_offset_y | `float32` | m [body frame FRD] | | Y Position of GNSS antenna |
| antenna_offset_z | `float32` | m [body frame FRD] | | Z Position of GNSS antenna |
## Constants
@@ -183,6 +186,10 @@ uint8 RTCM_MSG_USED_NOT_USED = 1
uint8 RTCM_MSG_USED_USED = 2
uint8 rtcm_msg_used # Indicates if the RTCM message was used successfully by the receiver
float32 antenna_offset_x # [m] [@frame body frame FRD] X Position of GNSS antenna
float32 antenna_offset_y # [m] [@frame body frame FRD] Y Position of GNSS antenna
float32 antenna_offset_z # [m] [@frame body frame FRD] Z Position of GNSS antenna
# TOPICS sensor_gps vehicle_gps_position
```
+28
View File
@@ -1052,6 +1052,20 @@ Actuator configuration command.
| 6 | | | ? |
| 7 | | | ? |
### VEHICLE_CMD_ESC_REQUEST_EEPROM (312)
Request EEPROM data from an ESC.
| Param | 단위 | Range/Enum | 설명 |
| ----- | -- | ---------- | ------------- |
| 1 | | | ESC Index |
| 2 | | | Firmware Type |
| 3 | | | Unused |
| 4 | | | Unused |
| 5 | | | Unused |
| 6 | | | ? |
| 7 | | | ? |
### VEHICLE_CMD_COMPONENT_ARM_DISARM (400)
Arms / Disarms a component.
@@ -1536,6 +1550,12 @@ Change mode by specifying nav_state directly.
| <a id="#VEHICLE_MOUNT_MODE_RC_TARGETING"></a> VEHICLE_MOUNT_MODE_RC_TARGETING | `uint8` | 3 | Load neutral position and start RC Roll,Pitch,Yaw control with stabilization. |
| <a id="#VEHICLE_MOUNT_MODE_GPS_POINT"></a> VEHICLE_MOUNT_MODE_GPS_POINT | `uint8` | 4 | Load neutral position and start to point to Lat,Lon,Alt. |
| <a id="#VEHICLE_MOUNT_MODE_ENUM_END"></a> VEHICLE_MOUNT_MODE_ENUM_END | `uint8` | 5 | |
| <a id="#ACTUATOR_CONFIGURATION_NONE"></a> ACTUATOR_CONFIGURATION_NONE | `uint8` | 0 | Do nothing. |
| <a id="#ACTUATOR_CONFIGURATION_BEEP"></a> ACTUATOR_CONFIGURATION_BEEP | `uint8` | 1 | Command the actuator to beep now. |
| <a id="#ACTUATOR_CONFIGURATION_3D_MODE_ON"></a> ACTUATOR_CONFIGURATION_3D_MODE_ON | `uint8` | 2 | Permanently set the actuator (ESC) to 3D mode (reversible thrust). |
| <a id="#ACTUATOR_CONFIGURATION_3D_MODE_OFF"></a> ACTUATOR_CONFIGURATION_3D_MODE_OFF | `uint8` | 3 | Permanently set the actuator (ESC) to non 3D mode (non-reversible thrust). |
| <a id="#ACTUATOR_CONFIGURATION_SPIN_DIRECTION1"></a> ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 | `uint8` | 4 | Permanently set the actuator (ESC) to spin direction 1 (which can be clockwise or counter-clockwise). |
| <a id="#ACTUATOR_CONFIGURATION_SPIN_DIRECTION2"></a> ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 | `uint8` | 5 | Permanently set the actuator (ESC) to spin direction 2 (opposite of direction 1). |
| <a id="#PARACHUTE_ACTION_DISABLE"></a> PARACHUTE_ACTION_DISABLE | `uint8` | 0 | |
| <a id="#PARACHUTE_ACTION_ENABLE"></a> PARACHUTE_ACTION_ENABLE | `uint8` | 1 | |
| <a id="#PARACHUTE_ACTION_RELEASE"></a> PARACHUTE_ACTION_RELEASE | `uint8` | 2 | |
@@ -1661,6 +1681,7 @@ uint16 VEHICLE_CMD_GIMBAL_DEVICE_INFORMATION = 283 # Command to ask information
uint16 VEHICLE_CMD_MISSION_START = 300 # Start running a mission. |first_item: the first mission item to run|last_item: the last mission item to run (after this item is run, the mission ends)|
uint16 VEHICLE_CMD_ACTUATOR_TEST = 310 # Actuator testing command. |[@range -1,1] value|[s] timeout|Unused|Unused|output function|
uint16 VEHICLE_CMD_CONFIGURE_ACTUATOR = 311 # Actuator configuration command. |configuration|Unused|Unused|Unused|output function|
uint16 VEHICLE_CMD_ESC_REQUEST_EEPROM = 312 # Request EEPROM data from an ESC. |ESC Index|Firmware Type|Unused|Unused|Unused|
uint16 VEHICLE_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component. |1 to arm, 0 to disarm.
uint16 VEHICLE_CMD_RUN_PREARM_CHECKS = 401 # Instructs a target system to run pre-arm checks.
uint16 VEHICLE_CMD_INJECT_FAILURE = 420 # Inject artificial failure for testing purposes.
@@ -1710,6 +1731,13 @@ uint8 VEHICLE_ROI_LOCATION = 3 # Point toward fixed location.
uint8 VEHICLE_ROI_TARGET = 4 # Point toward target.
uint8 VEHICLE_ROI_ENUM_END = 5
uint8 ACTUATOR_CONFIGURATION_NONE = 0 # Do nothing.
uint8 ACTUATOR_CONFIGURATION_BEEP = 1 # Command the actuator to beep now.
uint8 ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 # Permanently set the actuator (ESC) to 3D mode (reversible thrust).
uint8 ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 # Permanently set the actuator (ESC) to non 3D mode (non-reversible thrust).
uint8 ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 # Permanently set the actuator (ESC) to spin direction 1 (which can be clockwise or counter-clockwise).
uint8 ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 # Permanently set the actuator (ESC) to spin direction 2 (opposite of direction 1).
uint8 PARACHUTE_ACTION_DISABLE = 0
uint8 PARACHUTE_ACTION_ENABLE = 1
uint8 PARACHUTE_ACTION_RELEASE = 2
+2
View File
@@ -85,6 +85,8 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
- [DistanceSensorModeChangeRequest](DistanceSensorModeChangeRequest.md)
- [DronecanNodeStatus](DronecanNodeStatus.md)
- [Ekf2Timestamps](Ekf2Timestamps.md) — this message contains the (relative) timestamps of the sensor inputs used by EKF2. It can be used for reproducible replay.
- [EscEepromRead](EscEepromRead.md)
- [EscEepromWrite](EscEepromWrite.md)
- [EscReport](EscReport.md)
- [EscStatus](EscStatus.md)
- [EstimatorAidSource1d](EstimatorAidSource1d.md)
+55 -102
View File
@@ -47,74 +47,12 @@ You should set the parameter to the highest speed supported by your ESC (accordi
ESC가 초기화되고 모터가 올바른 방향으로 회전하여야 합니다.
- If the motors do not spin in the correct direction (for the [selected airframe](../airframes/airframe_reference.md)) you can reverse them in the UI using the **Set Spin Direction** option (this option appears after you select DShot and assign motors).
You can also reverse motors by sending an [ESC Command](#commands).
## ESC Commands {#commands}
Commands can be sent to the ESC via the [MAVLink shell](../debug/mavlink_shell.md).
See [here](../modules/modules_driver.md#dshot) for a full reference of the supported commands.
가장 중요한 것은 다음과 같습니다.
- Make a motor connected to FMU output pin 1 beep (helps with identifying motors)
```sh
dshot beep1 -m 1
```
- Retrieve ESC information (requires telemetry, see below):
```sh
nsh> dshot esc_info -m 2
INFO [dshot] ESC Type: #TEKKO32_4in1#
INFO [dshot] MCU Serial Number: xxxxxx-xxxxxx-xxxxxx-xxxxxx
INFO [dshot] Firmware version: 32.60
INFO [dshot] Rotation Direction: normal
INFO [dshot] 3D Mode: off
INFO [dshot] Low voltage Limit: off
INFO [dshot] Current Limit: off
INFO [dshot] LED 0: unsupported
INFO [dshot] LED 1: unsupported
INFO [dshot] LED 2: unsupported
INFO [dshot] LED 3: unsupported
```
- Permanently set the spin direction of a motor connected to FMU output pin 1 (while motors are _not_ spinning):
- Set spin direction to `reversed`:
```sh
dshot reverse -m 1
dshot save -m 1
```
Retrieving ESC information will then show:
```sh
Rotation Direction: reversed
```
- Set spin direction to `normal`:
```sh
dshot normal -m 1
dshot save -m 1
```
Retrieving ESC information will then show:
```sh
Rotation Direction: normal
```
:::note
- The commands will have no effect if the motors are spinning, or if the ESC is already set to the corresponding direction.
- The ESC will revert to its last saved direction (normal or reversed) on reboot if `save` is not called after changing the direction.
:::
## ESC Telemetry
Some ESCs are capable of sending telemetry back to the flight controller through a UART RX port.
@@ -133,61 +71,76 @@ The provided telemetry includes:
1. 모든 ESC의 모든 원격 측정 와이어를 함께 연결한 다음, 사용하지 않는 비행 콘트롤러 직렬 포트의 RX핀 중 하나에 연결합니다.
2. Enable telemetry on that serial port using [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG).
재부팅 후 다음을 사용하여 텔레메트리 작동 여부를 확인할 수 있습니다 (배터리가 연결되어 있는 지 확인).
```sh
dshot esc_info -m 1
```
:::tip
You may have to configure [MOT_POLE_COUNT](../advanced_config/parameter_reference.md#MOT_POLE_COUNT) to get the correct RPM values.
You may have to configure the per-motor pole count parameters ([`DSHOT_MOT_POL1``DSHOT_MOT_POL12`](../advanced_config/parameter_reference.md#DSHOT_MOT_POL1)) to get correct RPM values.
The default value for these is 14 poles, which is typical for 5-inch prop motors.
:::
:::tip
Not all DSHOT-capable ESCs support `[esc_info]`(e.g. APD 80F3x), even when telemetry is supported and enabled.
결과 오류는 다음과 같습니다.
```sh
ERROR [dshot] No data received. If telemetry is setup correctly, try again.
```
세부 사항은 제조업체 문서를 확인하십시오.
[Extended DShot Telemetry (EDT)](#extended-dshot-telemetry-edt) can provide temperature, voltage, and current through the BDShot signal — no serial telemetry wire needed.
:::
## Bidirectional DShot (Telemetry)
<Badge type="tip" text="PX4 v1.16" />
Bidirectional DShot is a protocol that can provide telemetry including: high rate ESC RPM data, voltage, current, and temperature with a single wire.
Bidirectional DShot (BDShot) enables the ESC to send eRPM telemetry back to the flight controller on the same signal wire used for throttle commands — no additional telemetry wire is needed for RPM data.
High-rate eRPM data significantly improves the performance of [Dynamic Notch Filters](../config_mc/filter_tuning.md#dynamic-notch-filters) and enables more precise vehicle tuning.
The PX4 implementation currently enables only ESC RPM (eRPM) data collection from each ESC at high frequencies.
This telemetry significantly improves the performance of [Dynamic Notch Filters](../config_mc/filter_tuning.md#dynamic-notch-filters) and enables more precise vehicle tuning.
With [Extended DShot Telemetry (EDT)](#extended-dshot-telemetry-edt) enabled, BDShot can also provide temperature, voltage, and current data.
### Hardware Support
BDShot requires a flight controller with DMA-capable timers.
Any FMU output on a supported timer can be used for BDShot — multiple timers are supported through sequential burst/capture.
Supported processors:
- **STM32H7**: All FMU outputs on DMA-capable timers
- **i.MXRT** (V6X-RT & Tropic): All FMU outputs
:::info
The [ESC Telemetry](#esc-telemetry) described above is currently still necessary if you want voltage, current, or temperature information.
It's setup and use is independent of bidirectional DShot.
:::
### 하드웨어 설정
The ESC must be connected to FMU outputs only.
These will be labeled `MAIN` on flight controllers that only have one PWM bus, and `AUX` on controllers that have both `MAIN` and `AUX` ports (i.e. FCs that have an IO board).
:::warning
**Limited hardware support**
This feature is only supported on flight controllers with the following processors:
- STM32H7: First four FMU outputs
- Must be connected to the first 4 FMU outputs, and these outputs must also be mapped to the same timer.
- [KakuteH7](../flight_controller/kakuteh7v2.md) is not supported because the outputs are not mapped to the same timer.
- [i.MXRT](../flight_controller/nxp_mr_vmu_rt1176.md) (V6X-RT & Tropic): 8 FMU outputs.
No other boards are supported.
These are labeled `MAIN` on controllers with a single PWM bus, and `AUX` on controllers with both `MAIN` and `AUX` ports (i.e. those with an IO board).
:::
### Configuration {#bidirectional-dshot-configuration}
### PX4 Configuration {#bidirectional-dshot-configuration}
To enable bidirectional DShot, set the [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) parameter.
BDShot is enabled **per-timer** in the [Actuator Configuration](../config/actuators.md) UI.
Select **BDShot150**, **BDShot300**, or **BDShot600** as the output protocol instead of the corresponding DShot speed.
There is no separate enable parameter — choosing a BDShot protocol activates bidirectional telemetry on that timer's outputs.
The system calculates actual motor RPM from the received eRPM data using the [MOT_POLE_COUNT](../advanced_config/parameter_reference.md#MOT_POLE_COUNT) parameter.
This parameter must be set correctly for accurate RPM reporting.
The system calculates actual motor RPM from eRPM data using per-motor pole count parameters: `DSHOT_MOT_POL1` through `DSHOT_MOT_POL12` (one per motor output).
The default is 14 poles, which is typical for 5-inch prop motors.
If you are using AM32 ESCs, the motor pole count must also be set in the AM32 firmware configuration (e.g. via the AM32 configurator tool) to match.
### Extended DShot Telemetry (EDT)
EDT extends BDShot by interleaving temperature, voltage, and current data into the eRPM telemetry frames.
This allows ESC health monitoring through the same signal wire, without requiring a separate serial telemetry connection.
To enable EDT:
1. Configure BDShot on the desired outputs (see above).
2. Set `DSHOT_BIDIR_EDT` to `1` and reboot.
The ESC firmware must support EDT (e.g. [AM32](https://github.com/am32-firmware/AM32)).
When both serial telemetry and BDShot/EDT are enabled, the driver merges data from both sources.
## AM32 ESC Settings (EEPROM)
PX4 can read and write AM32 ESC firmware settings (EEPROM) via a ground station, enabling remote ESC configuration without connecting directly to each ESC.
### Requirements
- ESCs running [AM32 firmware](https://github.com/am32-firmware/AM32) with serial telemetry connected ([DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG))
- `DSHOT_ESC_TYPE` set to `1` (AM32)
- Ground station with ESC EEPROM support (QGroundControl feature in development)
- MAVLink development dialect enabled on the flight controller
### How It Works
PX4 automatically reads the full EEPROM from each ESC on boot.
The ground station can then display individual settings and allow the user to modify them.
Changes are written back to the ESC one byte at a time using the DShot programming protocol.
+3 -28
View File
@@ -26,38 +26,12 @@ The number in the name means nothing; you can assign any instance to any port.
- <a id="MAV_X_CONFIG"></a>[MAV_X_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG) - Set the serial port (UART) for this instance "X", where X is 0, 1, 2.
It can be any unused port, e.g.: `TELEM2`, `TELEM3`, `GPS2` etc.
For more information see [Serial Port Configuration](../peripherals/serial_configuration.md).
- <a id="MAV_X_MODE"></a>[MAV_X_MODE](../advanced_config/parameter_reference.md#MAV_0_MODE) - Specify the telemetry mode/target (the set of messages to stream for the current instance and their rate).
기본값은 아래와 같습니다.
- _Normal_: Standard set of messages for a GCS.
- _Custom_ or _Magic_: Nothing (in the default PX4 implementation).
모드는 새 모드를 개발시 테스트용으로 사용할 수 있습니다.
- _Onboard_: Standard set of messages for a companion computer.
- _OSD_: Standard set of messages for an OSD system.
- _Config_: Standard set of messages and rate configuration for a fast link (e.g. USB).
- _Minimal_: Minimal set of messages for use with a GCS connected on a high latency link.
- _External Vision_: Messages for offboard vision systems.
- _Gimbal_: Messages for a gimbal. Note this also enables [message forwarding](#MAV_X_FORWARD)
- _Onboard Low Bandwidth_: Standard set of messages for a companion computer connected on a lower speed link.
- _uAvionix_: Messages for a uAvionix ADS-B beacon.
::: info
If you need to find the specific set of message for each mode search for `MAVLINK_MODE_` in [/src/modules/mavlink/mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp).
:::
:::tip
The mode defines the _default_ messages and rates.
A connected MAVLink system can still request the streams/rates that it wants using [MAV_CMD_SET_MESSAGE_INTERVAL](https://mavlink.io/en/messages/common.html#MAV_CMD_SET_MESSAGE_INTERVAL).
:::
- <a id="MAV_X_MODE"></a>[MAV_X_MODE](../advanced_config/parameter_reference.md#MAV_0_MODE) - Specify the [MAVLink profile](../mavlink/mavlink_profiles.md) for the instance, such as _Normal_ or _OSD_.
Profiles define a particular set of streamed messages and their rates — you should choose a profile that is appropriate for your channel and the peripheral.
- <a id="MAV_X_RATE"></a>[MAV_X_RATE](../advanced_config/parameter_reference.md#MAV_0_MODE) - Set the maximum _data rate_ for this instance (bytes/second).
- 이는 개별 메시지의 모든 스트림에 대한 결합 비율입니다 (총 비율이이 값을 초과하면 개별 메시지에 대한 비율이 감소됨).
- 기본 설정은 일반적으로 허용되지만 원격 분석 링크가 포화 상태가 되고, 너무 많은 메시지가 삭제되는 경우에는 감소할 수 있습니다.
- 값이 0이면 데이터 속도가 이론적인 값의 절반으로 설정됩니다.
- <a id="MAV_X_FORWARD"></a>[MAV_X_FORWARD](../advanced_config/parameter_reference.md#MAV_0_FORWARD) - Enable forwarding of MAVLink packets received by the current instance onto other interfaces.
예를 들어 GCS가 보조 컴퓨터에 연결된 MAVLink 지원 카메라와 통신할 수 있도록 GCS와 보조 컴퓨터간에 메시지를 전송에 사용할 수 있습니다.
@@ -121,6 +95,7 @@ Links to setup instructions for specific MAVLink components:
## See Also
- [MAVLink Profiles](../mavlink/mavlink_profiles.md)
- [Serial Port Configuration](../peripherals/serial_configuration.md)
- [PX4 Ethernet Setup > PX4 MAVLink Serial Port Configuration](../advanced_config/ethernet_setup.md#px4-mavlink-serial-port-configuration)
- [Serial Port Mapping](../hardware/serial_port_mapping.md)
+1 -1
View File
@@ -50,7 +50,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
### Estimation
- TBD
- Added [EKF2_POS_LOCK](../advanced_config/parameter_reference.md#EKF2_POS_LOCK) to force constant position fusion while landed, useful for vehicles relying on dead-reckoning sensors (airspeed, optical flow) that provide no aiding on the ground.
### 센서
+1 -1
View File
@@ -580,7 +580,7 @@ For ease of use we expose these valid combinations as new SetpointTypes.
The RoverSetpointTypes exposed through the control interface are combinations of these setpoints that lead to a valid control input:
| SetpointType | Position | Speed | 스로틀 | Attitude | 주파수 | Steering | Control Flags |
| SetpointType | Position | Speed | Throttle | Attitude | 주파수 | Steering | Control Flags |
| ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------------ |
| [RoverPosition](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverPositionSetpointType.html#details) | &check; | (&check;) | (&check;) | (&check;) | (&check;) | (&check;) | Position, Velocity, Attitude, Rate, Control Allocation |
| [RoverSpeedAttitude](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedAttitudeSetpointType.html) | | &check; | (&check;) | &check; | (&check;) | (&check;) | Velocity, Attitude, Rate, Control Allocation |
+1 -1
View File
@@ -65,7 +65,7 @@ This calibration is controlled by the [SENS_BAR_AUTOCAL](../advanced_config/para
The algorithm monitors GNSS quality, collects altitude differences over a 2-second filtered window, and verifies stability within 4m tolerance.
Once stable, it uses binary search to calculate pressure offsets that align baro altitude with GNSS altitude (0.1m precision), then applies the offset to all sensors and saves the parameters.
참고:
Notes:
- **EKF Independence**: GNSS-baro calibration operates independently of EKF2 altitude fusion settings.
- **Execution Timing**: Calibration runs even when [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) altitude fusion is disabled.
+6
View File
@@ -34,6 +34,12 @@ The information is written to the corresponding uORB topics: [DistanceSensor](..
| 우측 | - X |
| 좌측 | + X |
:::info
The integrated flow values are **angular measurements** (radians) representing rotation of the image about the sensor's body axes using the right-hand convention.
They are _not_ translational displacements along those axes, which is why forward vehicle movement (along X) appears in the Y flow axis, and rightward movement (along Y) appears in the X flow axis.
Specifically, forward movement causes the ground image to rotate about the Y axis (+ Y), while rightward movement causes a negative rotation about the X axis (- X).
:::
광류 데이터는 다른 속도 데이터 소스와 융합됩니다.
The approach used for fusing sensor data and any offsets from the center of the vehicle must be configured in the [estimator](#estimators).
+1 -1
View File
@@ -308,7 +308,7 @@ For all variants of SIH:
:::
- `param set-default EKF2_GPS_DELAY 0` to improve state estimator performance (the assumption of instant GPS measurements would normally be unrealistic, but is accurate for SIH).
- `param set-default SENS_GPS0_DELAY 0` to improve state estimator performance (the assumption of instant GPS measurements would normally be unrealistic, but is accurate for SIH).
For SIH on FC:
+1 -1
View File
@@ -7,7 +7,7 @@ Regression test for DSHOT working with PX4
## Preflight
- Ensure vehicle is using a DSHOT ESC
- Parameter [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) is enabled
- Bidirectional DShot is configured (BDShot150/300/600 selected in [Actuator Configuration](../config/actuators.md))
- Parameter [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG) is configured (if ESC supports telemetry)
- Parameter [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) has Debug (`5`) checked
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
+3
View File
@@ -165,6 +165,7 @@
- [ARK Electronics ARKV6X](flight_controller/ark_v6x.md)
- [ARK FPV Flight Controller](flight_controller/ark_fpv.md)
- [ARK Pi6X Flow Flight Controller](flight_controller/ark_pi6x.md)
- [CORVON 743v1](flight_controller/corvon_743v1.md)
- [CUAV Nora](flight_controller/cuav_nora.md)
- [CUAV V5+ (FMUv5)](flight_controller/cuav_v5_plus.md)
- [Wiring Quickstart](assembly/quick_start_cuav_v5_plus.md)
@@ -497,6 +498,7 @@
- [Flight Controller Porting Guide](hardware/porting_guide.md)
- [PX4 Конфігурація плати (kconfig)](hardware/porting_guide_config.md)
- [Посібник з портування NuttX](hardware/porting_guide_nuttx.md)
- [Board Firmware Packaging (.deb)](hardware/board_packaging.md)
- [Serial Port Mapping](hardware/serial_port_mapping.md)
- [Airframes](dev_airframes/index.md)
- [Adding a New Airframe](dev_airframes/adding_a_new_frame.md)
@@ -777,6 +779,7 @@
- [MAVLink Messaging](mavlink/index.md)
- [Adding Messages](mavlink/adding_messages.md)
- [Streaming Messages](mavlink/streaming_messages.md)
- [MAVLink Profiles](mavlink/mavlink_profiles.md)
- [Receiving Messages](mavlink/receiving_messages.md)
- [Custom MAVLink Messages](mavlink/custom_messages.md)
- [Message Signing](mavlink/message_signing.md)
+12 -1
View File
@@ -57,6 +57,17 @@ param set PWM_MAIN_FUNC10 2064
param set PPS_CAP_ENABLE 1
```
#### Multi-GPS Setups
If you have multiple GPS receivers, set `PPS_CAP_GPS_ID` to the device ID of the GPS receiver that emits the PPS signal.
When set to `0` (default), the driver uses the first available GPS instance.
You can find the device ID by running:
```sh
listener sensor_gps
```
### Підключення
The wiring configuration depends on your specific flight controller.
@@ -131,5 +142,5 @@ See also:
The PPS signal provides much higher temporal precision than the transmitted time data, which has latency and jitter from serial communication.
:::warning
If the PPS driver does not sending any data for 5 seconds (despite having `PPS_CAP_ENABLE` set to 1), the `EKF2_GPS_DELAY` will be used instead for estimating the latency.
If the PPS driver does not send any data for 5 seconds (despite having `PPS_CAP_ENABLE` set to 1), the corresponding `SENS_GPS*_DELAY` parameter will be used instead for estimating the latency.
:::
@@ -402,6 +402,16 @@ With Valid GNSS Data:
- **Alternative Sources**: Dead-reckoning mode provides enhanced protection by requiring absence of alternative navigation sources before allowing resets.
- **Boot Vulnerability**: Initial faulty GNSS data cannot be detected automatically; requires operator intervention and manual position correction.
#### Ground Position Lock
When a vehicle equipped with dead-reckoning sensors (e.g. airspeed for fixed-wing, or optical flow) is sitting on the ground before takeoff, those sensors provide little to no aiding — airspeed and optical flow measurements are unreliable at rest. In this case, the EKF relies on _constant position fusion_ (fusing a synthetic position measurement at the last known position) to prevent the estimate from drifting. However, this is only active when the vehicle is detected as stationary, so handling the vehicle or starting the engine can interrupt it.
To counter this, [EKF2_POS_LOCK](../advanced_config/parameter_reference.md#EKF2_POS_LOCK) can be enabled to force constant position fusion to run while landed and the global horizontal position has already been initialized.
:::note
`EKF2_POS_LOCK` has no effect in flight.
:::
### Далекомір
[Range finder](../sensor/rangefinders.md) distance to ground is used by a single state filter to estimate the vertical position of the terrain relative to the height datum.
+1 -1
View File
@@ -20,7 +20,7 @@ For more information see [Setting the Compass Orientation](../config/flight_cont
## Положення
In order to compensate for the relative motion between the receiver and the CoG, you should [configure](../advanced_config/parameters.md) the following parameters to set the offsets: [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z).
In order to compensate for the relative motion between the receiver and the CoG, you should [configure](../advanced_config/parameters.md) the following parameters to set the offsets: [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ).
Це важливо, оскільки кадр тіла, що оцінюється EKF, буде збігатися з місцезнаходженням модуля GNSS та вважатиме його розміщеним на CoG(ЦМ). Якщо модуль GNSS значно відокремлений від CoG(ЦМ), то обертання навколо CoG(ЦМ) буде інтерпретовано як зміна висоти, що у деяких режимах польоту (наприклад, режим позиції) може призвести до непотрібних корекцій.
@@ -99,7 +99,7 @@ RPi CM4 та контролер польоту повинні бути живл
Цей розділ пояснює, як встановити вашу улюблену дистрибутив Linux, таку як "Raspberry Pi OS 64bit", на RPi EMCC.
Примітки:
Notes:
- Якщо ви використовуєте PX4, вам потрібно використовувати версію PX4 1.13.1 або новішу, щоб PX4 впізнав цю базову плату.
- Вентилятор не показує, чи живиться/працює RPi CM4.
+1 -1
View File
@@ -31,7 +31,7 @@ PX4 відокремлює цю логіку перекладу, що назив
![Pipeline Overview](../../assets/concepts/control_allocation_pipeline.png)
Примітки:
Notes:
- Регулятор швидкості видає задані значення моменту та тяги
- модуль `control_allocator`:
-1
View File
@@ -675,7 +675,6 @@ First set the _frame rate_ for the servos used in each group of outputs.
- Якщо використовується кнопка безпеки, її потрібно натиснути перед тим, як буде дозволено проводити випробування приводу.
- Вимикач вимкнення все ще може бути використаний для негайного зупинення двигунів.
- Сервоприводи фактично не рухаються, поки не буде змінено відповідний слайдер.
- The parameter [COM_MOT_TEST_EN](../advanced_config/parameter_reference.md#COM_MOT_TEST_EN) can be used to completely disable actuator testing.
- On the shell, [actuator_test](../modules/modules_command.md#actuator-test) can be used as well for actuator testing.
- VTOLs will automatically turn off motors pointing upwards during **fixed-wing flight**:
- Стандартний VTOL: Двигуни, визначені як багатокоптерні двигуни, будуть вимкнені
+2 -2
View File
@@ -86,7 +86,7 @@ Once you've calibrated the vehicle in all the positions _QGroundControl_ will di
2-3 коливань на кут близько 30 градусів у кожному напрямку зазвичай достатньо.
2. Зачекайте, поки оцінка заголовку стабілізується, і перевірте, що компас вказує в правильному напрямку (це може зайняти кілька секунд).
Примітки:
Notes:
- Немає можливості початку/зупинки для цього типу калібрування (алгоритм працює безперервно, коли транспортний засіб роззброєний).
- Калібрування негайно застосовується до даних (перезавантаження не потрібно), але зберігається в параметрах калібрування лише після відброшення транспортного засобу (калібрування втрачається, якщо між калібруванням і вимкненням не виконана послідовність увімкнення/вимкнення).
@@ -109,7 +109,7 @@ This calibration process leverages external knowledge of vehicle's orientation a
commander calibrate mag quick
```
Примітки:
Notes:
- This method is specifically designed for vehicles where full rotation is impractical or impossible.
If full rotation is possible, use the [complete calibration](#complete-calibration) instead.
+1 -1
View File
@@ -45,7 +45,7 @@ If you have multiple control sources, such as an RC system and/or one or more Jo
The [MAVLink instance](../peripherals/mavlink_peripherals.md#mavlink-instances) refers to an instance assigned to a serial port, such as [MAV_0_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG).
Примітки:
Notes:
- RC checks are run for any option that uses RC (so not for `MAVLink only` or `Disable manual control`).
- When using priority sources, sources are evaluated as soon as they become valid and may trigger an immediate switch (if higher priority than the currently active source).
+1 -1
View File
@@ -72,7 +72,7 @@ The ESC RPM feedback is used to track the rotor blade pass frequency and its har
ESC RPM feedback requires ESCs capable of providing RPM feedback such as [DShot](../peripherals/dshot.md) with telemetry connected, a bidirectional DShot set up ([work in progress](https://github.com/PX4/PX4-Autopilot/pull/23863)), or [UAVCAN/DroneCAN ESCs](../dronecan/escs.md).
Before enabling, make sure that the ESC RPM is correct.
You might have to adjust the [pole count of the motors](../advanced_config/parameter_reference.md#MOT_POLE_COUNT).
You might have to adjust the per-motor pole count (`DSHOT_MOT_POL1``DSHOT_MOT_POL12`).
The following parameters should be set to enable and configure dynamic notch filters:
+1 -1
View File
@@ -342,7 +342,7 @@ PX4-Autopilot/
│ │ ├── public_key.pub # Public key in hex format
```
Примітки:
Notes:
- The script will not overwrite any existing keys in the folders.
It will generate a new public key if the folder only includes a private key.
+1 -1
View File
@@ -97,7 +97,7 @@ There is also CAN built-in bus termination via [CANNODE_TERM](../advanced_config
You need to set necessary [DroneCAN](index.md) parameters and define offsets if the sensor is not centred within the vehicle:
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK G5 RTK GPS from the vehicle's centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK G5 RTK GPS from the vehicle's centre of gravity.
## Значення LED індикаторів
+1 -1
View File
@@ -99,7 +99,7 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK G5 RTK HEADING GPS from the vehicle's centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK G5 RTK HEADING GPS from the vehicle's centre of gravity.
### Parameter references
+1 -1
View File
@@ -91,7 +91,7 @@ DroneCAN configuration in PX4 is explained in more detail in [DroneCAN > Enablin
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
### ARK GPS Configuration
+4 -1
View File
@@ -84,8 +84,9 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- If using [Moving Baseline & GPS Heading](#setting-up-moving-baseline--gps-heading), set [SENS_GPS_PRIME](../advanced_config/parameter_reference.md#SENS_GPS_PRIME) to the CAN node ID of the _Moving Base_ module. The moving base is preferred because the rover receiver in a moving baseline configuration can experience degraded navigation rate and increased data latency when corrections are intermittent.
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK RTK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK RTK GPS from the vehicles centre of gravity.
### ARK RTK GPS Configuration
@@ -137,6 +138,7 @@ For more information see [Rover and Fixed Base](../dronecan/index.md#rover-and-f
- On the _Moving Base_, set the following:
- [GPS_UBX_MODE](../advanced_config/parameter_reference.md#GPS_UBX_MODE) to `4`.
- [CANNODE_PUB_MBD](../advanced_config/parameter_reference.md#CANNODE_PUB_MBD) to `1`.
- On the _Flight Controller_, set [SENS_GPS_PRIME](../advanced_config/parameter_reference.md#SENS_GPS_PRIME) to the CAN node ID of the _Moving Base_ (see [PX4 Configuration](#px4-configuration)).
Налаштування через UART:
@@ -155,6 +157,7 @@ For more information see [Rover and Fixed Base](../dronecan/index.md#rover-and-f
- [GPS_YAW_OFFSET](../advanced_config/parameter_reference.md#GPS_YAW_OFFSET) to `0` if your _Rover_ is in front of your _Moving Base_, `90` if _Rover_ is right of _Moving Base_, `180` if _Rover_ is behind _Moving Base_, or `270` if _Rover_ is left of _Moving Base_.
- On the _Moving Base_, set the following:
- [GPS_UBX_MODE](../advanced_config/parameter_reference.md#GPS_UBX_MODE) to `2`.
- On the _Flight Controller_, set [SENS_GPS_PRIME](../advanced_config/parameter_reference.md#SENS_GPS_PRIME) to the CAN node ID of the _Moving Base_ (see [PX4 Configuration](#px4-configuration)).
For more information see [Rover and Moving Base](../dronecan/index.md#rover-and-moving-base) in the DroneCAN guide.
+1 -1
View File
@@ -85,7 +85,7 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK RTK GPS L1 L5 from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK RTK GPS L1 L5 from the vehicles centre of gravity.
### ARK RTK GPS L1 L5 Configuration
+1 -1
View File
@@ -88,7 +88,7 @@ You need to set necessary [DroneCAN](index.md) parameters and define offsets if
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable GPS blending to ensure the heading is always published by setting [SENS_GPS_MASK](../advanced_config/parameter_reference.md#SENS_GPS_MASK) to 7 (all three bits checked).
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK X20 RTK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK X20 RTK GPS from the vehicles centre of gravity.
### ARK X20 RTK GPS Configuration
+1 -1
View File
@@ -94,4 +94,4 @@ DroneCAN configuration in PX4 is explained in more detail in [DroneCAN > Enablin
- Enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
- Enable [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS), [UAVCAN_SUB_MAG](../advanced_config/parameter_reference.md#UAVCAN_SUB_MAG), and [UAVCAN_SUB_BARO](../advanced_config/parameter_reference.md#UAVCAN_SUB_BARO).
- Set [CANNODE_TERM](../advanced_config/parameter_reference.md#CANNODE_TERM) to `1` if this is that last node on the CAN bus.
- The parameters [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
- The parameters [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ) can be set to account for the offset of the ARK GPS from the vehicles centre of gravity.
+1 -1
View File
@@ -194,7 +194,7 @@ GPS CANNODE parameter ([set using QGC](#qgc-cannode-parameter-configuration)):
Інші параметри PX4:
- If the GPS is not positioned at the vehicle centre of gravity you can account for the offset using [EKF2_GPS_POS_X](../advanced_config/parameter_reference.md#EKF2_GPS_POS_X), [EKF2_GPS_POS_Y](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Y) and [EKF2_GPS_POS_Z](../advanced_config/parameter_reference.md#EKF2_GPS_POS_Z).
- If the GPS is not positioned at the vehicle centre of gravity you can account for the offset using [SENS_GPS0_OFFX](../advanced_config/parameter_reference.md#SENS_GPS0_OFFX), [SENS_GPS0_OFFY](../advanced_config/parameter_reference.md#SENS_GPS0_OFFY) and [SENS_GPS0_OFFZ](../advanced_config/parameter_reference.md#SENS_GPS0_OFFZ).
- If the GPS module provides yaw information, you can enable GPS yaw fusion by setting bit 3 of [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) to true.
#### RTK-GPS
+1 -1
View File
@@ -42,7 +42,7 @@ Each function is represented by a value that defines two behaviours: one when th
| 6 | Status/Green | System status colour | Зелений |
| 7 | Status/Off | System status colour | Off |
Примітки:
Notes:
- The [system status colours](../getting_started/led_meanings.md#ui-led) is the same LED pattern used by the flight controller's onboard status LED (e.g. red when disarmed, green when armed and ready).
- A fixed colour, commonly used to indicate aircraft orientation. For example it is a common convention to have a red light on the port side, green on starboard, or white to the rear.
+12
View File
@@ -58,6 +58,18 @@ The ESC comes in variants without connectors that you can solder in place, and a
- Open source AM32 firmware
- [DIU Blue Framework Listed](https://www.diu.mil/blue-uas/framework)
## Конфігурація PX4
The ARK 4IN1 ESC supports DShot 300/600, Bidirectional DShot, and PWM input protocols.
- **Bidirectional DShot**: Select BDShot300 or BDShot600 in the [Actuator Configuration](../config/actuators.md) to enable eRPM telemetry.
- **[Extended DShot Telemetry (EDT)](https://github.com/bird-sanctuary/extended-dshot-telemetry)**: AM32 firmware supports EDT, which provides temperature, voltage, and current through the BDShot signal. Enable with `DSHOT_BIDIR_EDT=1`.
- **AM32 EEPROM Settings**: Set `DSHOT_ESC_TYPE=1` to enable reading and writing ESC firmware settings via a ground station.
See [DShot ESCs](../peripherals/dshot.md) for full setup details.
## Дивіться також
- [ARK 4IN1 ESC CONS](https://docs.arkelectron.com/electronic-speed-controller/ark-4in1-esc) (ARK Docs)
- [DShot and Bidirectional DShot](https://brushlesswhoop.com/dshot-and-bidirectional-dshot/) (brushlesswhoop.com - General DShot reference)
- [Extended DShot Telemetry (EDT) Specification](https://github.com/bird-sanctuary/extended-dshot-telemetry) (bird-sanctuary)
@@ -18,6 +18,7 @@ This category includes boards that are not fully compliant with the pixhawk stan
- [ARK Electronics ARKV6X](../flight_controller/ark_v6x.md) (and [ARK Electronics Pixhawk Autopilot Bus Carrier](../flight_controller/ark_pab.md))
- [ARK FPV Flight Controller](../flight_controller/ark_fpv.md)
- [ARK Pi6X Flow Flight Controller](../flight_controller/ark_pi6x.md)
- [CORVON 743v1](../flight_controller/corvon_743v1.md)
- [CUAV Nora](../flight_controller/cuav_nora.md) (CUAV X7 variant)
- [CUAV V5+](../flight_controller/cuav_v5_plus.md) (FMUv5)
- [CUAV V5 nano](../flight_controller/cuav_v5_nano.md) (FMUv5)
+112
View File
@@ -0,0 +1,112 @@
# CORVON 743v1
<Badge type="tip" text="PX4 v1.18" />
:::warning
PX4 не розробляє цей (або будь-який інший) автопілот. Contact the manufacturer for hardware support or compliance issues.
:::
The _CORVON 743v1_ is a flight controller designed by Feikong Technology Co., Ltd under the CORVON brand.
It features a powerful STM32H743 processor, dual high-performance IMUs (BMI088/BMI270), and an extensive array of interfaces.
With its highly integrated 36x36mm footprint and 9g weight, and specialized interfaces like a direct plug-and-play DJI O3 Air Unit connector, this flight controller is optimized for space-constrained FPV builds and agile multirotors that require top-tier processing power and sensor redundancy.
The board uses [Pixhawk Autopilot Standard Connections](https://docs.px4.io/main/en/flight_controller/autopilot_pixhawk_standard.html).
<img src="../../assets/flight_controller/corvon_743v1/corvon_743v1_top.jpg" width="400px" title="CORVON 743v1 Top Baseboard" /> <img src="../../assets/flight_controller/corvon_743v1/corvon_743v1_bottom.jpg" width="400px" title="CORVON 743v1 Bottom Interfaces" />
:::info
This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md).
:::
## Основні характеристики
- **MCU:** STM32H743VIT6 MCU (32 Bit Arm® Cortex®-M7, 480MHz, 2MB Flash, 1MB RAM)
- **IMU:** Bosch BMI088, BMI270 (Dual IMU redundancy)
- **Barometer:** DPS310
- **Magnetometer:** IST8310
- **OSD:** Onboard AT7456E
- **Interfaces:**
- 7x UARTs
- 1x CAN (UAVCAN)
- 1x I2C
- Dedicated RC Input (UART6)
- 10x PWM outputs (DShot & Bi-Directional DShot supported)
- Dedicated DJI O3 Air Unit connector
- **Power:**
- 9V 3A BEC
- 5V 3A BEC
- ADC for battery voltage (up to 6S) and current monitoring
## Де купити
Order from [CORVON](https://corvon.tech).
## Physical / Mechanical
- **Mounting:** 30.5 x 30.5mm, Φ4mm
- **Dimensions:** 36 x 36 x 8 mm
- **Weight:** 9g
## Характеристики
### Processors & Sensors
- **FMU Processor:** STM32H743
- 32 Bit Arm® Cortex®-M7, 480MHz
- 2MB Flash, 1MB RAM
- **On-board Sensors:**
- Accel/Gyro: Bosch BMI088, BMI270
- Barometer: DPS310
- Compass: IST8310
### Power Configuration
The board has an internal voltage sensor and connections on the ESC connector for an external current sensor.
- The voltage sensor handles up to 6S LiPo batteries.
- Two onboard BECs provide robust peripheral power (9V 3A and 5V 3A).
## Connectors & Pinouts
The following image shows the port connection details, including RC, UARTs, CAN, I2C, SWD Debug, and VTX connections.
<img src="../../assets/flight_controller/corvon_743v1/CORVON743V1_PortsConnection.png" width="800px" title="CORVON 743v1 Ports" />
### Standard Serial Port Mapping
| UART | PX4 Target Config | Default Usage |
| ------ | ----------------- | ------------- |
| USART1 | TELEM1 | MAVLink |
| UART4 | TELEM2 | MAVLink |
| USART2 | GPS1 | GPS |
| USART3 | TELEM3 | |
| UART8 | URT6 | |
| USART6 | RC | RC-вхід |
| UART7 | TELEM4 | ESC Telemetry |
### Відладочний порт
The board features a **4-pin SWD Debug** interface located on the right side of the board. This includes `SWCLK`, `SWDIO`, `3V3`, and `GND` for full hardware debugging. While a dedicated UART isn't strictly reserved for the NSH console by default, the full-speed USB connection provides MAVLink Console access out of the box.
### RC-вхід
RC Input is mapped to **UART6** via the explicit `SBUS/CRSF` connector block.
- It fully supports PX4's standard `RC_INPUT` module protocols.
- The connector exposes both `RX6` and `TX6`, which makes it fully capable of bidirectional receiver protocols such as TBS Crossfire (CRSF), ELRS, and FPort, as well as traditional single-wire standards like SBUS (which operates inverted on RX6).
## Building/Loading Firmware
:::tip
Most users will not need to build this firmware (from PX4 v1.18).
It is pre-built and automatically installed by _QGroundControl_ when appropriate hardware is connected.
:::
To [build PX4](../dev_setup/building_px4.md) for this target from source:
```sh
make corvon_743v1_default
```
Initial firmware flashing can be done over USB via QGroundControl. The bootloader status aligns with standard generic PX4 LED indications (Red = Bootloader/Error, Blue = Active/Activity, Green = Powered).
@@ -116,7 +116,7 @@ The [Pixhawk V6X Wiring Quick Start](../assembly/quick_start_cuav_pixhawk_v6x.md
![Pixhawk V6x Pinout](../../assets/flight_controller/cuav_pixhawk_v6x/pixhawk_v6x_pinouts.png)
Примітки:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
@@ -174,7 +174,7 @@ _MR-VMU-RT1176_ connectors (following [Pixhawk Connector Standard](https://githu
[NXP MR-VMU-RT1176 Baseboard Pinout](https://nxp.gitbook.io/vmu-rt1176/pin-out) (nxp.gitbook.io)
Примітки:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -149,7 +149,7 @@ The [Pixhawk 6X Wiring Quick Start](../assembly/quick_start_pixhawk6x.md) provid
- [Holybro Pixhawk Baseboard Pinout](https://docs.holybro.com/autopilot/pixhawk-6x/pixhawk-baseboard-pinout)
- [Holybro Pixhawk Mini-Baseboard Pinout](https://docs.holybro.com/autopilot/pixhawk-6x/pixhawk-mini-baseboard-pinout)
Примітки:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -180,7 +180,7 @@ Sample Wiring Diagram
- [Holybro Pixhawk Jetson Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-jetson-baseboard)
- [Holybro Pixhawk RPi CM4 Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard)
Примітки:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -140,7 +140,7 @@ The [Pixhawk 6X Wiring Quick Start](../assembly/quick_start_pixhawk6x.md) provid
- [Holybro Pixhawk Jetson Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-jetson-baseboard)
- [Holybro Pixhawk RPi CM4 Baseboard](https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard)
Примітки:
Notes:
- The [camera capture pin](../camera/fc_connected_camera.md#camera-capture-configuration) (`PI0`) is pin 2 on the AD&IO port, marked above as `FMU_CAP1`.
+1 -1
View File
@@ -22,7 +22,7 @@ When throw launch is enabled, the vehicle is initially armed in a "lockdown" sta
Транспортний засіб виявляє, що його викинули на підставі досягнення певної швидкості (5 м/с), а потім запускає двигуни на вершині кидка (як тільки він визначає, що почав падати).
Вам потрібно кинути транспортний засіб настільки високо, щоб він міг стабілізувати свою висоту добре до того, як впаде десь близько до людей або перешкод.
Примітки:
Notes:
- Режим за замовчуванням вимкнено, і його необхідно активувати, використовуючи [параметр](#parameters), перш ніж озброювати.
- Коли ввімкнено, ви не можете злітати з землі, використовуючи звичайні режими.
+44 -4
View File
@@ -164,6 +164,42 @@ $$\dot{B} = \gamma - \frac{\dot{V_T}}{g}$$
## Контролер положення фіксованого крила
### Setpoint modificaiton
Most fixed-wing aircraft cannot generate a sustained yaw rate using the rudder alone. As a result, the yaw component of the quaternion attitude error should be removed before computing the control action.
This is achieved by premultiplying the setpoint quaternion with a rotation about the global down axis. The additional rotation cancels the yaw component of the attitude error while preserving the roll and pitch components.
The yaw offset is
$$
\psi =-2\frac{\hat{q}_0 q_3 - \hat{q}_1 q_2 + \hat{q}_2 q_1 -\hat{q}_3 q_0}
{\hat{q}_0 q_0 - \hat{q}_1 q_1 - \hat{q}_2 q_2 + \hat{q}_3 q_3}
$$
The quaternion representing the yaw offset is
$$
_{\text{yaw}} =
\operatorname{normalize}
\left(
\begin{bmatrix}
1 \
0 \
0 \
\frac{\psi}{2}
\end{bmatrix}
\right)
$$
The corrected setpoint quaternion is then obtained by applying the rotation
$$
_{\text{sp, corrected}} = _{\text{yaw}} \otimes _{sp}
$$
### Quaternion based attitude controller
![FW Attitude Controller Diagram](../../assets/diagrams/px4_fw_attitude_controller_diagram.png)
<!-- The drawing is on draw.io: https://drive.google.com/file/d/1ibxekmtc6Ljq60DvNMplgnnU-JOvKYLQ/view?usp=sharing
@@ -186,12 +222,16 @@ The feedforward gain is used to compensate for aerodynamic damping.
### Поворотна координація
Контролери крену та тангажу мають однакову структуру, і довжинна та поперечна динаміка вважаються достатньо роз'єднаними, щоб працювати незалежно один від одного.
Контролер курсу, однак, генерує встановлення швидкості курсу, використовуючи обмеження координації повороту для мінімізації бокового прискорення, що виникає, коли літак слідкує. Алгоритм узгодження повороту базується виключно на узгодженому розрахунку геометрії повороту.
The yaw rate setpoint is generated using the turn coordination constraint in order to minimize lateral acceleration, generated when the aircraft is slipping.
$$\dot{\Psi}_{sp} = \frac{g}{V_T} \tan{\phi_{sp}} \cos{\theta_{sp}}$$
$$r_{sp} = \frac{2g}{V_T}\left(q_0 q_1 + q_2 q_3\right)$$
The yaw rate controller also helps to counteract [adverse yaw effects](https://youtu.be/sNV_SDDxuWk) and to damp the [Dutch roll mode](https://en.wikipedia.org/wiki/Dutch_roll) by providing extra directional damping.
This also helps to counteract [adverse yaw effects](https://youtu.be/sNV_SDDxuWk) and to damp the [Dutch roll mode](https://en.wikipedia.org/wiki/Dutch_roll) by providing extra directional damping.
To compensate for the non-zero pitch rate that naturally occurs during coordinated turns, a geometry-based feedforward term is added to the pitch-rate command.
This feedforward term accounts for the aircraft's current attitude and airspeed so that the controller does not need to generate this motion purely through feedback.
$$q_{sp}^{ff} = \frac{4g(q_0 q_1 + q_2 q_3)^2}{V(1 - 2q_1^2 - 2q_2^2)}$$
## Диспетчер польотів VTOL
@@ -42,7 +42,7 @@ QuadPlane VTOL Fun Cub є стандартним повітряним судно
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"):
| Порт | Підключення |
| ------ | ---------------------------------------------- |
@@ -51,10 +51,10 @@ The geometry and output assignment can be configured in the [Actuators Configura
| MAIN 3 | Передній лівий мотор (CW) |
| MAIN 4 | Правий задній мотор (CW) |
| AUX 1 | Лівий елерон TODO |
| AUX 2 | Правий елерон |
| AUX 2 | Right aileron |
| AUX 3 | Elevator |
| AUX 4 | Rudder |
| AUX 5 | Тяга |
| AUX 5 | Throttle |
For further instructions on wiring and configurations please see:
[Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md). <!-- replace with Pixhawk Wiring Quickstart -->
@@ -67,9 +67,9 @@ For further instructions on wiring and configurations please see:
2. Configure the outputs and geometry following the instructions in [Actuators Configuration](../config/actuators.md)
3. За замовчуванням параметри часто достатні для стабільного польоту. For more detailed tuning information see [Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md).
3. 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.
## Відео
@@ -90,17 +90,17 @@ Please note that the conversion in this build log is performed on a wing that sh
Виходи Pixhawk повинні бути підключені таким чином (орієнтація, як бачиться
як "сидячи в літаку").
| Порт | Підключення |
| ------ | -------------------------- |
| 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 |
:::info
The servo direction can be reversed using the PWM_REV parameters in the PWM_OUTPUT group of QGroundControl (cogwheel tab, last item in the left menu)

Some files were not shown because too many files have changed in this diff Show More