mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-13 02:00:05 +08:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 38c63c9c52 |
-83
@@ -105,89 +105,6 @@ Checks: '*,
|
||||
-readability-redundant-declaration,
|
||||
-readability-static-accessed-through-instance,
|
||||
-readability-static-definition-in-anonymous-namespace,
|
||||
-altera-struct-pack-align,
|
||||
-bugprone-easily-swappable-parameters,
|
||||
-concurrency-mt-unsafe,
|
||||
-cppcoreguidelines-avoid-const-or-ref-data-members,
|
||||
-cppcoreguidelines-macro-usage,
|
||||
-cppcoreguidelines-non-private-member-variables-in-classes,
|
||||
-hicpp-uppercase-literal-suffix,
|
||||
-llvm-qualified-auto,
|
||||
-misc-non-private-member-variables-in-classes,
|
||||
-misc-use-anonymous-namespace,
|
||||
-modernize-concat-nested-namespaces,
|
||||
-readability-const-return-type,
|
||||
-readability-identifier-length,
|
||||
-readability-isolate-declaration,
|
||||
-readability-qualified-auto,
|
||||
-readability-redundant-access-specifiers,
|
||||
-cppcoreguidelines-avoid-do-while,
|
||||
-misc-include-cleaner,
|
||||
-misc-const-correctness,
|
||||
-llvm-else-after-return,
|
||||
-readability-function-cognitive-complexity,
|
||||
-cppcoreguidelines-init-variables,
|
||||
-bugprone-reserved-identifier,
|
||||
-cert-dcl37-c,
|
||||
-cert-dcl51-cpp,
|
||||
-modernize-use-nodiscard,
|
||||
-misc-confusable-identifiers,
|
||||
-cert-err33-c,
|
||||
-readability-redundant-inline-specifier,
|
||||
-readability-uppercase-literal-suffix,
|
||||
-bugprone-narrowing-conversions,
|
||||
-cppcoreguidelines-narrowing-conversions,
|
||||
-bugprone-switch-missing-default-case,
|
||||
-cppcoreguidelines-avoid-goto,
|
||||
-hicpp-avoid-goto,
|
||||
-bugprone-branch-clone,
|
||||
-bugprone-unhandled-self-assignment,
|
||||
-cert-oop54-cpp,
|
||||
-performance-enum-size,
|
||||
-readability-avoid-nested-conditional-operator,
|
||||
-cppcoreguidelines-prefer-member-initializer,
|
||||
-cppcoreguidelines-explicit-virtual-functions,
|
||||
-cppcoreguidelines-virtual-class-destructor,
|
||||
-readability-convert-member-functions-to-static,
|
||||
-readability-make-member-function-const,
|
||||
-bugprone-assignment-in-if-condition,
|
||||
-bugprone-implicit-widening-of-multiplication-result,
|
||||
-bugprone-incorrect-roundings,
|
||||
-bugprone-macro-parentheses,
|
||||
-bugprone-multi-level-implicit-pointer-conversion,
|
||||
-bugprone-signed-char-misuse,
|
||||
-bugprone-too-small-loop-variable,
|
||||
-cppcoreguidelines-avoid-non-const-global-variables,
|
||||
-cppcoreguidelines-use-default-member-init,
|
||||
-hicpp-multiway-paths-covered,
|
||||
-hicpp-named-parameter,
|
||||
-misc-header-include-cycle,
|
||||
-misc-no-recursion,
|
||||
-performance-no-int-to-ptr,
|
||||
-readability-avoid-return-with-void-value,
|
||||
-readability-avoid-unconditional-preprocessor-if,
|
||||
-readability-delete-null-pointer,
|
||||
-readability-duplicate-include,
|
||||
-readability-redundant-casting,
|
||||
-readability-redundant-member-init,
|
||||
-readability-reference-to-constructed-temporary,
|
||||
-readability-simplify-boolean-expr,
|
||||
-bugprone-unsafe-functions,
|
||||
-cert-msc24-c,
|
||||
-cert-msc32-c,
|
||||
-cert-msc33-c,
|
||||
-cert-msc51-cpp,
|
||||
-cert-str34-c,
|
||||
-cppcoreguidelines-macro-to-enum,
|
||||
-modernize-macro-to-enum,
|
||||
-abseil-string-find-str-contains,
|
||||
-bugprone-suspicious-include,
|
||||
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
|
||||
-clang-analyzer-optin.core.EnumCastOutOfRange,
|
||||
-modernize-type-traits,
|
||||
-misc-definitions-in-headers,
|
||||
-bugprone-casting-through-void,
|
||||
-readability-redundant-string-init,
|
||||
'
|
||||
WarningsAsErrors: '*'
|
||||
CheckOptions:
|
||||
|
||||
@@ -2,37 +2,6 @@
|
||||
# - If you want to keep the tests running in GitHub Actions you need to uncomment the "runs-on: ubuntu-latest" lines
|
||||
# and comment the "runs-on: [runs-on,runner=..." lines.
|
||||
# - If you would like to duplicate this setup try setting up "RunsOn" on your own AWS account try https://runs-on.com
|
||||
#
|
||||
# ===================================================================================
|
||||
# RELEASE UPLOAD LOGIC
|
||||
# ===================================================================================
|
||||
# This workflow handles building firmware and uploading to S3 + GitHub Releases.
|
||||
#
|
||||
# S3 Bucket Structure (s3://px4-travis/Firmware/):
|
||||
# - master/ <- Latest main branch build (for QGC compatibility)
|
||||
# - stable/ <- Latest stable release, controlled by 'stable' branch
|
||||
# - beta/ <- Latest pre-release, controlled by 'beta' branch
|
||||
# - vX.Y.Z/ <- Archived stable release
|
||||
# - vX.Y.Z-beta1/ <- Archived pre-release
|
||||
#
|
||||
# Trigger Behavior:
|
||||
# - Tag v1.16.1 -> Upload to: v1.16.1/ only (versioned archive)
|
||||
# - Tag v1.17.0-beta1 -> Upload to: v1.17.0-beta1/ only (versioned archive)
|
||||
# - Branch main -> Upload to: master/ (for QGC compatibility)
|
||||
# - Branch stable -> Upload to: stable/ (QGC stable firmware)
|
||||
# - Branch beta -> Upload to: beta/ (QGC beta firmware)
|
||||
# - Branch release/** -> Build only, no S3 upload (CI validation)
|
||||
# - Pull requests -> Build only, no S3 upload (CI validation)
|
||||
#
|
||||
# GitHub Releases:
|
||||
# - All version tags create a draft GitHub Release
|
||||
# - Pre-releases (alpha/beta/rc suffixes) are automatically marked as such
|
||||
#
|
||||
# IMPORTANT: Version tags do NOT upload to stable/ or beta/. Only the
|
||||
# corresponding branch pushes control those directories. This prevents
|
||||
# pre-release tags from accidentally overwriting stable firmware (#26340)
|
||||
# and avoids race conditions between tag and branch builds.
|
||||
# ===================================================================================
|
||||
|
||||
name: Build all targets
|
||||
|
||||
@@ -194,13 +163,6 @@ jobs:
|
||||
path: ~/.ccache
|
||||
key: ${{ steps.cc_restore.outputs.cache-primary-key }}
|
||||
|
||||
# ===========================================================================
|
||||
# ARTIFACT UPLOAD JOB
|
||||
# ===========================================================================
|
||||
# Uploads build artifacts to S3 and creates GitHub Releases.
|
||||
# Runs for version tags (v*), main, stable, and beta branch pushes.
|
||||
# See header comments for full upload logic documentation.
|
||||
# ===========================================================================
|
||||
artifacts:
|
||||
name: Upload Artifacts
|
||||
# runs-on: ubuntu-latest
|
||||
@@ -219,31 +181,31 @@ jobs:
|
||||
- name: Choose Upload Location
|
||||
id: upload-location
|
||||
run: |
|
||||
# Determine upload location based on branch or tag with the following considerations:
|
||||
# Destination: AWS S3 bucket px4-travis in folder Firmware/
|
||||
# - If branch is main -> upload to master/
|
||||
# - Older versions of QGC are hardocded to look for master/
|
||||
# - If branch is stable or beta -> upload to stable/ or beta/
|
||||
# - If a tag vX.Y.Z -> upload to vX.Y.Z/
|
||||
# - Also update stable/ to point to the same version
|
||||
#. - Older versions of QGC are hardocded to look for stable/
|
||||
# - If a pull request -> do not upload
|
||||
set -euo pipefail
|
||||
|
||||
ref="${GITHUB_REF}"
|
||||
branch=${{ needs.group_targets.outputs.branchname }}
|
||||
location="$branch"
|
||||
is_prerelease="false"
|
||||
|
||||
# Main branch uploads to "master" for QGC backward compatibility
|
||||
if [[ "$branch" == "main" ]]; then
|
||||
location="master"
|
||||
fi
|
||||
|
||||
# Version tags: upload to versioned directory (e.g., v1.16.1/)
|
||||
if [[ "$ref" == refs/tags/v[0-9]* ]]; then
|
||||
tag="${ref#refs/tags/}"
|
||||
location="$tag"
|
||||
|
||||
# Pre-release tags contain -alpha, -beta, or -rc suffix
|
||||
if [[ "$tag" =~ -(alpha|beta|rc) ]]; then
|
||||
is_prerelease="true"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "uploadlocation=$location" >> $GITHUB_OUTPUT
|
||||
echo "is_prerelease=$is_prerelease" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Uploading Artifacts to S3 [${{ steps.upload-location.outputs.uploadlocation }}]
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
@@ -257,13 +219,28 @@ jobs:
|
||||
SOURCE_DIR: artifacts/
|
||||
DEST_DIR: Firmware/${{ steps.upload-location.outputs.uploadlocation }}/
|
||||
|
||||
# Create a draft GitHub Release for all version tags
|
||||
# Pre-releases are automatically marked as such
|
||||
# if we are uploading artifacts to a versioned folder
|
||||
# we should also update the stable folder in the s3 bucket
|
||||
- name: Uploading Artifacts to S3 [stable]
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
with:
|
||||
args: --acl public-read
|
||||
env:
|
||||
AWS_S3_BUCKET: 'px4-travis'
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
AWS_REGION: 'us-west-1'
|
||||
SOURCE_DIR: artifacts/
|
||||
DEST_DIR: Firmware/stable/
|
||||
|
||||
# if build is a release triggered by a versioned tag then create a github release
|
||||
# and upload the build artifacts. A draft release is created so that the release
|
||||
# can be reviewed before publishing
|
||||
- name: Upload Artifacts to GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
with:
|
||||
draft: true
|
||||
prerelease: ${{ steps.upload-location.outputs.is_prerelease == 'true' }}
|
||||
files: artifacts/*.px4
|
||||
name: ${{ steps.upload-location.outputs.uploadlocation }}
|
||||
|
||||
@@ -19,10 +19,6 @@ concurrency:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -39,17 +35,20 @@ jobs:
|
||||
"px4_sitl_allyes",
|
||||
"module_documentation",
|
||||
]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Building [${{ matrix.check }}]
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
make ${{ matrix.check }}
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make ${{ matrix.check }}
|
||||
|
||||
- name: Uploading Coverage to Codecov.io
|
||||
if: contains(matrix.check, 'coverage')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Static Analysis
|
||||
name: Clang Tidy
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -11,59 +11,20 @@ on:
|
||||
- '**'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
clang_tidy:
|
||||
name: Clang-Tidy
|
||||
runs-on: [runs-on, runner=16cpu-linux-x64, "run-id=${{ github.run_id }}", "extras=s3-cache"]
|
||||
container:
|
||||
image: px4io/px4-dev:v1.17.0-beta1
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
fetch-tags: true
|
||||
|
||||
- name: Configure Git Safe Directory
|
||||
run: git config --system --add safe.directory '*'
|
||||
|
||||
- name: Restore Compiler Cache
|
||||
id: cc_restore
|
||||
uses: actions/cache/restore@v4
|
||||
- name: Testing (clang-tidy)
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ccache-clang-tidy-${{ github.head_ref || github.ref_name }}
|
||||
restore-keys: |
|
||||
ccache-clang-tidy-${{ github.head_ref || github.ref_name }}-
|
||||
ccache-clang-tidy-main-
|
||||
ccache-clang-tidy-
|
||||
|
||||
- name: Configure Compiler Cache
|
||||
run: |
|
||||
mkdir -p ~/.ccache
|
||||
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
|
||||
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||
echo "compression_level = 6" >> ~/.ccache/ccache.conf
|
||||
echo "max_size = 120M" >> ~/.ccache/ccache.conf
|
||||
echo "hash_dir = false" >> ~/.ccache/ccache.conf
|
||||
echo "compiler_check = content" >> ~/.ccache/ccache.conf
|
||||
ccache -s
|
||||
ccache -z
|
||||
|
||||
- name: Run Clang-Tidy Analysis
|
||||
run: make -j16 clang-tidy
|
||||
|
||||
- name: Compiler Cache Stats
|
||||
if: always()
|
||||
run: ccache -s
|
||||
|
||||
- name: Save Compiler Cache
|
||||
if: always()
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ${{ steps.cc_restore.outputs.cache-primary-key }}
|
||||
image: px4io/px4-dev-clang:2021-09-08
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make clang-tidy
|
||||
|
||||
@@ -15,21 +15,21 @@ concurrency:
|
||||
jobs:
|
||||
unit_tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: main test
|
||||
- name: main test
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make tests TESTFILTER=EKF
|
||||
|
||||
- name: Check if there is a functional change
|
||||
run: git diff --exit-code
|
||||
working-directory: src/modules/ekf2/test/change_indication
|
||||
- name: Check if there is a functional change
|
||||
run: git diff --exit-code
|
||||
working-directory: src/modules/ekf2/test/change_indication
|
||||
|
||||
@@ -8,47 +8,40 @@ on:
|
||||
jobs:
|
||||
unit_tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
|
||||
env:
|
||||
GIT_COMMITTER_EMAIL: bot@px4.io
|
||||
GIT_COMMITTER_NAME: PX4BuildBot
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: main test
|
||||
- name: main test
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make tests TESTFILTER=EKF
|
||||
|
||||
- name: Check if there exists diff and save result in variable
|
||||
id: diff-check
|
||||
working-directory: src/modules/ekf2/test/change_indication
|
||||
run: |
|
||||
if git diff --quiet; then
|
||||
echo "CHANGE_INDICATED=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "CHANGE_INDICATED=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
- name: Check if there exists diff and save result in variable
|
||||
id: diff-check
|
||||
run: echo "CHANGE_INDICATED=$(git diff --exit-code --output=/dev/null || echo $?)" >> $GITHUB_OUTPUT
|
||||
working-directory: src/modules/ekf2/test/change_indication
|
||||
|
||||
- name: auto-commit any changes to change indication
|
||||
if: steps.diff-check.outputs.CHANGE_INDICATED == 'true'
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
file_pattern: 'src/modules/ekf2/test/change_indication/*.csv'
|
||||
commit_user_name: ${{ env.GIT_COMMITTER_NAME }}
|
||||
commit_user_email: ${{ env.GIT_COMMITTER_EMAIL }}
|
||||
commit_message: |
|
||||
[AUTO COMMIT] update change indication
|
||||
- name: auto-commit any changes to change indication
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
file_pattern: 'src/modules/ekf2/test/change_indication/*.csv'
|
||||
commit_user_name: ${GIT_COMMITTER_NAME}
|
||||
commit_user_email: ${GIT_COMMITTER_EMAIL}
|
||||
commit_message: |
|
||||
'[AUTO COMMIT] update change indication'
|
||||
|
||||
See .github/workflows/ekf_update_change_indicator.yml for more details
|
||||
See .github/workflopws/ekf_update_change_indicator.yml for more details
|
||||
|
||||
- name: if there is a functional change, fail check
|
||||
if: steps.diff-check.outputs.CHANGE_INDICATED == 'true'
|
||||
run: exit 1
|
||||
- name: if there is a functional change, fail check
|
||||
if: ${{ steps.diff-check.outputs.CHANGE_INDICATED }}
|
||||
run: exit 1
|
||||
|
||||
@@ -19,27 +19,25 @@ concurrency:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
- {vehicle: "iris", mission: "MC_mission_box"}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build SITL and Run Tests (inside old ROS container)
|
||||
- name: Build SITL and Run Tests
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: px4io/px4-dev-ros-melodic:2021-09-08
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
docker run --rm \
|
||||
-v "${GITHUB_WORKSPACE}:/workspace" \
|
||||
-w /workspace \
|
||||
px4io/px4-dev-ros-melodic:2021-09-08 \
|
||||
bash -c '
|
||||
git config --global --add safe.directory /workspace
|
||||
make px4_sitl_default
|
||||
make px4_sitl_default sitl_gazebo-classic
|
||||
./test/rostest_px4_run.sh \
|
||||
mavros_posix_test_mission.test \
|
||||
mission:=MC_mission_box \
|
||||
vehicle:=iris
|
||||
'
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make px4_sitl_default
|
||||
make px4_sitl_default sitl_gazebo-classic
|
||||
./test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=${{matrix.config.mission}} vehicle:=${{matrix.config.vehicle}}
|
||||
|
||||
@@ -19,26 +19,27 @@ concurrency:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
- {test_file: "mavros_posix_tests_offboard_posctl.test", vehicle: "iris"}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build SITL and Run Tests (inside old ROS container)
|
||||
- name: Build PX4 and Run Tests
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: px4io/px4-dev-ros-melodic:2021-09-08
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
docker run --rm \
|
||||
-v "${GITHUB_WORKSPACE}:/workspace" \
|
||||
-w /workspace \
|
||||
px4io/px4-dev-ros-melodic:2021-09-08 \
|
||||
bash -c '
|
||||
git config --global --add safe.directory /workspace
|
||||
make px4_sitl_default
|
||||
make px4_sitl_default sitl_gazebo-classic
|
||||
./test/rostest_px4_run.sh \
|
||||
mavros_posix_tests_offboard_posctl.test \
|
||||
vehicle:=iris
|
||||
'
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make px4_sitl_default
|
||||
make px4_sitl_default sitl_gazebo-classic
|
||||
./test/rostest_px4_run.sh ${{matrix.config.test_file}} vehicle:=${{matrix.config.vehicle}}
|
||||
|
||||
@@ -19,28 +19,27 @@ concurrency:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
config:
|
||||
- px4_fmu-v5_default
|
||||
config: [
|
||||
px4_fmu-v5_default,
|
||||
]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build PX4 and Run Test [${{ matrix.config }}]
|
||||
- name: Build PX4 and Run Test [${{ matrix.config }}]
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
export PX4_EXTRA_NUTTX_CONFIG='CONFIG_NSH_LOGIN_PASSWORD="test";CONFIG_NSH_CONSOLE_LOGIN=y'
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
export PX4_EXTRA_NUTTX_CONFIG="CONFIG_NSH_LOGIN_PASSWORD=\"test\";CONFIG_NSH_CONSOLE_LOGIN=y"
|
||||
echo "PX4_EXTRA_NUTTX_CONFIG: $PX4_EXTRA_NUTTX_CONFIG"
|
||||
|
||||
make ${{ matrix.config }} nuttx_context
|
||||
|
||||
echo "Check that the config option is set"
|
||||
grep CONFIG_NSH_LOGIN_PASSWORD build/${{ matrix.config }}/NuttX/nuttx/.config
|
||||
|
||||
@@ -33,10 +33,8 @@ jobs:
|
||||
matrix:
|
||||
config:
|
||||
- {model: "iris", latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo" } # Alaska
|
||||
# VTOL/tailsitter disabled: persistent flaky CI failures (timeouts, erratic
|
||||
# transitions). Re-enable once the test infrastructure is stabilized.
|
||||
# - {model: "tailsitter" , latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo" } # Florida
|
||||
# - {model: "standard_vtol", latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage" } # Zurich
|
||||
- {model: "tailsitter" , latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo" } # Florida
|
||||
- {model: "standard_vtol", latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage" } # Zurich
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
-35
@@ -112,38 +112,3 @@ keys/
|
||||
|
||||
# metadata
|
||||
_emscripten_sdk/
|
||||
|
||||
# AI coding agents -- only AGENTS.md is committed
|
||||
# Tool-specific configs, settings, and local state
|
||||
.claude/
|
||||
CLAUDE.md
|
||||
CLAUDE.local.md
|
||||
.cursor/
|
||||
.cursorrules
|
||||
.cursorignore
|
||||
.cursorindexingignore
|
||||
.windsurf/
|
||||
.windsurfrules
|
||||
.codeiumignore
|
||||
.aider*
|
||||
.clinerules
|
||||
.clinerules-*
|
||||
.clineignore
|
||||
.continue/
|
||||
.continuerc.json
|
||||
.continueignore
|
||||
.codex/
|
||||
.amazonq/
|
||||
.augment/
|
||||
.augmentignore
|
||||
.augment-guidelines
|
||||
.cody/
|
||||
.junie/
|
||||
.tabnine_root
|
||||
.tabnineignore
|
||||
GEMINI.md
|
||||
.gemini/
|
||||
.geminiignore
|
||||
.aiexclude
|
||||
.mcp.json
|
||||
.claudeignore
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
# AGENTS.md -- PX4-Autopilot
|
||||
|
||||
Open-source flight controller (C/C++, NuttX/POSIX/QURT). Docs live in-tree at `docs/en/` (rendered at https://docs.px4.io).
|
||||
|
||||
## Docs (read these first)
|
||||
|
||||
- **Building & targets:** `docs/en/dev_setup/building_px4.md`
|
||||
- **Code style, conventions & commits:** `docs/en/contribute/code.md`
|
||||
- **Architecture & modules:** `docs/en/concept/architecture.md`
|
||||
- **uORB messaging:** `docs/en/middleware/uorb.md`
|
||||
- **Simulation (incl. choosing SIH vs Gazebo):** `docs/en/simulation/index.md`
|
||||
- **Testing:** `docs/en/test_and_ci/unit_tests.md`
|
||||
- **Test flights:** `docs/en/test_and_ci/test_flights.md`
|
||||
|
||||
## Build Verification
|
||||
|
||||
Always test across architectures before submitting:
|
||||
|
||||
```bash
|
||||
make px4_sitl_default # POSIX / SITL
|
||||
make px4_fmu-v6x_default # STM32H7 (Pixhawk 6X)
|
||||
make px4_fmu-v5x_default # STM32F7 (Pixhawk 5X)
|
||||
make nxp_fmuk66-v3_default # NXP K66
|
||||
```
|
||||
|
||||
## Areas That Benefit From Extra Review
|
||||
|
||||
| Directory | Controls | Before modifying |
|
||||
|-----------|----------|------------------|
|
||||
| `src/modules/commander/` | Arming, failsafe, mode transitions | Verify failsafe in SITL for all vehicle types |
|
||||
| `src/modules/ekf2/` | State estimation | Run EKF replay tests |
|
||||
| `src/modules/mc_*_control/` | Multicopter controllers | Test in SIH; verify all MC airframes |
|
||||
| `src/modules/fw_*/` | Fixed-wing controllers | Test FW airframes in SITL |
|
||||
| `src/modules/vtol_att_control/` | VTOL transitions | Test MC + FW modes and transitions |
|
||||
| `msg/*.msg` | uORB schemas | Check all publishers/subscribers |
|
||||
| `ROMFS/px4fmu_common/init.d/` | Startup & default params | Can change behavior on all boards |
|
||||
|
||||
## Rules
|
||||
|
||||
- Never bypass safety checks (arming, geofence, failsafe) without justification
|
||||
- Document parameter changes, they affect flight behavior
|
||||
- Specify units in comments for physical quantities
|
||||
- No magic numbers, use named `constexpr` constants
|
||||
|
||||
## Agent Decision Framework
|
||||
|
||||
**Do without asking:** write or update the docs, ensure successful build, ensure CI checks are successful, run `make format`, add tests for new features or fixes.
|
||||
|
||||
**Ask first:** parameter defaults, control algorithms, failsafe logic, uORB schema changes, board configs.
|
||||
|
||||
**Stop, do not proceed:** if you can't verify flight safety, if modifying EKF2/controller math without SITL/SIH, if removing safety guards.
|
||||
@@ -412,7 +412,7 @@ tests:
|
||||
$(call cmake-build,px4_sitl_test)
|
||||
|
||||
# work around lcov bug #316; remove once lcov is fixed (see https://github.com/linux-test-project/lcov/issues/316)
|
||||
LCOBUG = --ignore-errors mismatch,negative
|
||||
LCOBUG = --ignore-errors mismatch
|
||||
tests_coverage:
|
||||
@$(MAKE) clean
|
||||
@$(MAKE) --no-print-directory tests PX4_CMAKE_BUILD_TYPE=Coverage
|
||||
@@ -492,29 +492,13 @@ px4_sitl_default-clang:
|
||||
@cd "$(SRC_DIR)"/build/px4_sitl_default-clang && cmake "$(SRC_DIR)" $(CMAKE_ARGS) -G"$(PX4_CMAKE_GENERATOR)" -DCONFIG=px4_sitl_default -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
|
||||
@$(PX4_MAKE) -C "$(SRC_DIR)"/build/px4_sitl_default-clang
|
||||
|
||||
# Paths to exclude from clang-tidy (auto-generated from .gitmodules + manual additions):
|
||||
# - All submodules (external code we consume, not edit)
|
||||
# - Test code (allowed looser style)
|
||||
# - Example code (educational, not production)
|
||||
# - Vendored third-party code (e.g., CMSIS_5)
|
||||
# - NuttX-only drivers excluded at CMake level (mcp_common); I2C-dependent libs excluded here (smbus)
|
||||
# - GPIO excluded here (NuttX platform headers)
|
||||
# - Emscripten failsafe web build: source path + Unity build path (failsafe_test.dir)
|
||||
# because CMake Unity Builds merge sources into a generated .cxx under build/
|
||||
#
|
||||
# To add manual exclusions, append to CLANG_TIDY_EXCLUDE_EXTRA below.
|
||||
# Submodules are automatically excluded - no action needed when adding new ones.
|
||||
CLANG_TIDY_SUBMODULES := $(shell git config --file .gitmodules --get-regexp path | awk '{print $$2}' | tr '\n' '|' | sed 's/|$$//')
|
||||
CLANG_TIDY_EXCLUDE_EXTRA := src/systemcmds/tests|src/examples|src/modules/gyro_fft/CMSIS_5|src/lib/drivers/smbus|src/drivers/gpio|src/modules/commander/failsafe/emscripten|failsafe_test\.dir|\.pb\.cc
|
||||
CLANG_TIDY_EXCLUDE := $(CLANG_TIDY_SUBMODULES)|$(CLANG_TIDY_EXCLUDE_EXTRA)
|
||||
|
||||
clang-tidy: px4_sitl_default-clang
|
||||
@cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -exclude="$(CLANG_TIDY_EXCLUDE)" -p .
|
||||
@cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -p .
|
||||
|
||||
# to automatically fix a single check at a time, eg modernize-redundant-void-arg
|
||||
# % run-clang-tidy-4.0.py -fix -j4 -checks=-\*,modernize-redundant-void-arg -p .
|
||||
clang-tidy-fix: px4_sitl_default-clang
|
||||
@cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -exclude="$(CLANG_TIDY_EXCLUDE)" -fix -p .
|
||||
@cd "$(SRC_DIR)"/build/px4_sitl_default-clang && "$(SRC_DIR)"/Tools/run-clang-tidy.py -header-filter=".*\.hpp" -j$(j_clang_tidy) -fix -p .
|
||||
|
||||
# TODO: Fix cppcheck errors then try --enable=warning,performance,portability,style,unusedFunction or --enable=all
|
||||
cppcheck: px4_sitl_default
|
||||
|
||||
@@ -101,7 +101,6 @@ param set-default NAV_ACC_RAD 5
|
||||
param set-default NAV_DLL_ACT 2
|
||||
|
||||
param set-default VT_FWD_THRUST_EN 4
|
||||
param set-default VT_PITCH_MIN -5
|
||||
param set-default VT_F_TRANS_THR 1
|
||||
param set-default VT_TYPE 2
|
||||
param set-default FD_ESCS_EN 0
|
||||
|
||||
@@ -22,9 +22,6 @@
|
||||
|
||||
. ${R}etc/init.d/rc.uuv_defaults
|
||||
|
||||
# Overwrite DDS AG IP to `192.168.0.1`
|
||||
param set-default UXRCE_DDS_AG_IP -1062731775
|
||||
|
||||
# param set-default MAV_1_CONFIG 102
|
||||
|
||||
param set-default BAT1_A_PER_V 37.8798
|
||||
|
||||
@@ -10,6 +10,9 @@ set VEHICLE_TYPE uuv
|
||||
# MAV_TYPE_SUBMARINE 12
|
||||
param set-default MAV_TYPE 12
|
||||
|
||||
# Set micro-dds-client to use ethernet and IP-address 192.168.0.1
|
||||
param set-default UXRCE_DDS_AG_IP -1062731775
|
||||
|
||||
# Disable preflight disarm to not interfere with external launching
|
||||
param set-default COM_DISARM_PRFLT -1
|
||||
param set-default CBRK_SUPPLY_CHK 894281
|
||||
|
||||
+24
-4
@@ -1,27 +1,47 @@
|
||||
#! /bin/bash
|
||||
|
||||
if [ -z ${PX4_DOCKER_REPO+x} ]; then
|
||||
PX4_DOCKER_REPO="px4io/px4-dev:v1.17.0-beta1"
|
||||
echo "guessing PX4_DOCKER_REPO based on input";
|
||||
if [[ $@ =~ .*clang.* ]] || [[ $@ =~ .*scan-build.* ]]; then
|
||||
# clang tools
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-clang:2021-02-04"
|
||||
elif [[ $@ =~ .*tests* ]]; then
|
||||
# run all tests with simulation
|
||||
PX4_DOCKER_REPO="px4io/px4-dev-simulation-bionic:2021-12-11"
|
||||
fi
|
||||
else
|
||||
echo "PX4_DOCKER_REPO is set to '$PX4_DOCKER_REPO'";
|
||||
fi
|
||||
|
||||
# otherwise default to nuttx
|
||||
if [ -z ${PX4_DOCKER_REPO+x} ]; then
|
||||
PX4_DOCKER_REPO="px4io/px4-dev:v1.16.0-rc1-258-g0369abd556"
|
||||
fi
|
||||
|
||||
echo "PX4_DOCKER_REPO: $PX4_DOCKER_REPO";
|
||||
|
||||
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
SRC_DIR=${SCRIPT_DIR}/../
|
||||
PWD=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
SRC_DIR=$PWD/../
|
||||
|
||||
CCACHE_DIR=${HOME}/.ccache
|
||||
mkdir -p "${CCACHE_DIR}"
|
||||
|
||||
docker run -it --rm -w "${SRC_DIR}" \
|
||||
--user="$(id -u):$(id -g)" \
|
||||
--env=AWS_ACCESS_KEY_ID \
|
||||
--env=AWS_SECRET_ACCESS_KEY \
|
||||
--env=BRANCH_NAME \
|
||||
--env=CCACHE_DIR="${CCACHE_DIR}" \
|
||||
--env=CI \
|
||||
--env=CODECOV_TOKEN \
|
||||
--env=COVERALLS_REPO_TOKEN \
|
||||
--env=PX4_ASAN \
|
||||
--env=PX4_MSAN \
|
||||
--env=PX4_TSAN \
|
||||
--env=PX4_UBSAN \
|
||||
--env=TRAVIS_BRANCH \
|
||||
--env=TRAVIS_BUILD_ID \
|
||||
--publish 14556:14556/udp \
|
||||
--volume=${CCACHE_DIR}:${CCACHE_DIR}:rw \
|
||||
--volume=${SRC_DIR}:${SRC_DIR}:rw \
|
||||
${PX4_DOCKER_REPO} /bin/bash -c "$@"
|
||||
${PX4_DOCKER_REPO} /bin/bash -c "$1 $2 $3"
|
||||
|
||||
@@ -144,8 +144,6 @@ def main():
|
||||
help='number of tidy instances to be run in parallel.')
|
||||
parser.add_argument('files', nargs='*', default=['.*'],
|
||||
help='files to be processed (regex on path)')
|
||||
parser.add_argument('-exclude', dest='exclude', default=None,
|
||||
help='regular expression matching files to exclude')
|
||||
parser.add_argument('-fix', action='store_true', help='apply fix-its')
|
||||
parser.add_argument('-format', action='store_true', help='Reformat code '
|
||||
'after applying fixes')
|
||||
@@ -194,7 +192,6 @@ def main():
|
||||
|
||||
# Build up a big regexy filter from all command line arguments.
|
||||
file_name_re = re.compile('(' + ')|('.join(args.files) + ')')
|
||||
exclude_re = re.compile(args.exclude) if args.exclude else None
|
||||
|
||||
try:
|
||||
# Spin up a bunch of tidy-launching threads.
|
||||
@@ -208,8 +205,6 @@ def main():
|
||||
# Fill the queue with files.
|
||||
for name in files:
|
||||
if file_name_re.search(name):
|
||||
if exclude_re and exclude_re.search(name):
|
||||
continue
|
||||
queue.put(name)
|
||||
|
||||
# Wait for all threads to be done.
|
||||
|
||||
@@ -4,7 +4,7 @@ GREEN='\033[0;32m'
|
||||
NO_COLOR='\033[0m' # No Color
|
||||
SCRIPTID="${GREEN}[docker-entrypoint.sh]${NO_COLOR}"
|
||||
|
||||
echo -e "$SCRIPTID $( uname -m ) | $(date -u +%FT%TZ)"
|
||||
echo -e "$SCRIPTID Starting"
|
||||
|
||||
# Start virtual X server in the background
|
||||
# - DISPLAY default is :99, set in dockerfile
|
||||
@@ -22,4 +22,6 @@ if [ -n "${ROS_DISTRO}" ]; then
|
||||
source "/opt/ros/$ROS_DISTRO/setup.bash"
|
||||
fi
|
||||
|
||||
echo -e "$SCRIPTID ($( uname -m ))"
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -74,7 +74,7 @@ python3 -m pip install --user -r ${DIR}/requirements.txt
|
||||
|
||||
# Optional, but recommended additional simulation tools:
|
||||
if [[ $INSTALL_SIM == "--sim-tools" ]]; then
|
||||
if ! brew ls --versions px4-sim > /dev/null; then
|
||||
if brew ls --versions px4-sim > /dev/null; then
|
||||
brew install px4-sim
|
||||
elif [[ $REINSTALL_FORMULAS == "--reinstall" ]]; then
|
||||
brew reinstall px4-sim
|
||||
|
||||
+31
-12
@@ -6,9 +6,9 @@ set -e
|
||||
## Can also be used in docker.
|
||||
##
|
||||
## Installs:
|
||||
## - Common dependencies and tools for nuttx, Gazebo
|
||||
## - Common dependencies and tools for nuttx, jMAVSim, Gazebo
|
||||
## - NuttX toolchain (omit with arg: --no-nuttx)
|
||||
## - Gazebo Harmonic simulator (omit with arg: --no-sim-tools)
|
||||
## - jMAVSim and Gazebo9 simulator (omit with arg: --no-sim-tools)
|
||||
##
|
||||
|
||||
INSTALL_NUTTX="true"
|
||||
@@ -207,18 +207,37 @@ if [[ $INSTALL_SIM == "true" ]]; then
|
||||
bc \
|
||||
;
|
||||
|
||||
# Gazebo Harmonic installation (Ubuntu 22.04+)
|
||||
echo "[ubuntu.sh] Gazebo (Harmonic) will be installed"
|
||||
# Add Gazebo binary repository
|
||||
sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
|
||||
sudo apt-get update -y --quiet
|
||||
# Gazebo / Gazebo classic installation
|
||||
if [[ "${UBUNTU_RELEASE}" == "18.04" || "${UBUNTU_RELEASE}" == "20.04" ]]; then
|
||||
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
|
||||
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
|
||||
# Update list, since new gazebo-stable.list has been added
|
||||
sudo apt-get update -y --quiet
|
||||
|
||||
# Install Gazebo
|
||||
gazebo_packages="gz-harmonic libunwind-dev"
|
||||
# Install Gazebo classic
|
||||
if [[ "${UBUNTU_RELEASE}" == "18.04" ]]; then
|
||||
gazebo_classic_version=9
|
||||
gazebo_packages="gazebo$gazebo_classic_version libgazebo$gazebo_classic_version-dev"
|
||||
else
|
||||
# default and Ubuntu 20.04
|
||||
gazebo_classic_version=11
|
||||
gazebo_packages="gazebo$gazebo_classic_version libgazebo$gazebo_classic_version-dev"
|
||||
fi
|
||||
else
|
||||
# Expects Ubuntu 22.04 > by default
|
||||
echo "[ubuntu.sh] Gazebo (Harmonic) will be installed"
|
||||
echo "[ubuntu.sh] Earlier versions will be removed"
|
||||
# Add Gazebo binary repository
|
||||
sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
|
||||
sudo apt-get update -y --quiet
|
||||
|
||||
if [[ "${UBUNTU_RELEASE}" == "24.04" ]]; then
|
||||
gazebo_packages="$gazebo_packages cppzmq-dev"
|
||||
# Install Gazebo
|
||||
gazebo_packages="gz-harmonic libunwind-dev"
|
||||
|
||||
if [[ "${UBUNTU_RELEASE}" == "24.04" ]]; then
|
||||
gazebo_packages="$gazebo_packages cppzmq-dev"
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
|
||||
|
||||
@@ -243,6 +243,15 @@
|
||||
*/
|
||||
#define DIRECT_PWM_OUTPUT_CHANNELS 9
|
||||
|
||||
#define GPIO_FMU_CH1 /* PI0 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN0)
|
||||
#define GPIO_FMU_CH2 /* PH12 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN12)
|
||||
#define GPIO_FMU_CH3 /* PH11 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN11)
|
||||
#define GPIO_FMU_CH4 /* PH10 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN10)
|
||||
#define GPIO_FMU_CH5 /* PD13 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTD|GPIO_PIN13)
|
||||
#define GPIO_FMU_CH6 /* PD14 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTD|GPIO_PIN14)
|
||||
#define GPIO_FMU_CH7 /* PH6 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN6)
|
||||
#define GPIO_FMU_CH8 /* PH9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN9)
|
||||
|
||||
#define GPIO_FMU_CAP /* PE11 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTE|GPIO_PIN11)
|
||||
#define GPIO_SPIX_SYNC /* PE9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTE|GPIO_PIN9)
|
||||
|
||||
@@ -456,6 +465,14 @@
|
||||
GPIO_SAFETY_SWITCH_IN, \
|
||||
GPIO_PG6, \
|
||||
GPIO_nARMED_INIT, \
|
||||
GPIO_FMU_CH1, \
|
||||
GPIO_FMU_CH2, \
|
||||
GPIO_FMU_CH3, \
|
||||
GPIO_FMU_CH4, \
|
||||
GPIO_FMU_CH5, \
|
||||
GPIO_FMU_CH6, \
|
||||
GPIO_FMU_CH7, \
|
||||
GPIO_FMU_CH8, \
|
||||
GPIO_FMU_CAP, \
|
||||
GPIO_SPIX_SYNC \
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE is not set
|
||||
CONFIG_BOARD_CONSTRAINED_FLASH=y
|
||||
CONFIG_BOARD_CONSTRAINED_MEMORY=y
|
||||
CONFIG_MODULES_UXRCE_DDS_CLIENT=n
|
||||
CONFIG_MODULES_ZENOH=y
|
||||
@@ -226,6 +226,16 @@
|
||||
*/
|
||||
#define DIRECT_PWM_OUTPUT_CHANNELS 9
|
||||
|
||||
#define GPIO_FMU_CH1 /* PI0 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN0)
|
||||
#define GPIO_FMU_CH2 /* PH12 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN12)
|
||||
#define GPIO_FMU_CH3 /* PH11 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN11)
|
||||
#define GPIO_FMU_CH4 /* PH10 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN10)
|
||||
#define GPIO_FMU_CH5 /* PI5 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN5)
|
||||
#define GPIO_FMU_CH6 /* PI6 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN6)
|
||||
#define GPIO_FMU_CH7 /* PI7 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN7)
|
||||
#define GPIO_FMU_CH8 /* PI2 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN2)
|
||||
#define GPIO_FMU_CH9 /* PD12 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTD|GPIO_PIN12)
|
||||
|
||||
#define GPIO_SPIX_SYNC /* PE9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTE|GPIO_PIN9)
|
||||
|
||||
/* Power supply control and monitoring GPIOs */
|
||||
@@ -329,6 +339,15 @@
|
||||
GPIO_VDD_3V3_SD_CARD_EN, \
|
||||
GPIO_nARMED_INIT, \
|
||||
SPI6_nRESET_EXTERNAL1, \
|
||||
GPIO_FMU_CH1, \
|
||||
GPIO_FMU_CH2, \
|
||||
GPIO_FMU_CH3, \
|
||||
GPIO_FMU_CH4, \
|
||||
GPIO_FMU_CH5, \
|
||||
GPIO_FMU_CH6, \
|
||||
GPIO_FMU_CH7, \
|
||||
GPIO_FMU_CH8, \
|
||||
GPIO_FMU_CH9, \
|
||||
GPIO_SPIX_SYNC \
|
||||
}
|
||||
|
||||
|
||||
@@ -206,6 +206,15 @@
|
||||
*/
|
||||
#define DIRECT_PWM_OUTPUT_CHANNELS 8
|
||||
|
||||
#define GPIO_FMU_CH1 /* PI0 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTI|GPIO_PIN0)
|
||||
#define GPIO_FMU_CH2 /* PH12 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN12)
|
||||
#define GPIO_FMU_CH3 /* PH11 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN11)
|
||||
#define GPIO_FMU_CH4 /* PH10 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN10)
|
||||
#define GPIO_FMU_CH5 /* PD13 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTD|GPIO_PIN13)
|
||||
#define GPIO_FMU_CH6 /* PD14 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTD|GPIO_PIN14)
|
||||
#define GPIO_FMU_CH7 /* PH6 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN6)
|
||||
#define GPIO_FMU_CH8 /* PH9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTH|GPIO_PIN9)
|
||||
|
||||
#define GPIO_FMU_CAP /* PE11 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTE|GPIO_PIN11)
|
||||
#define GPIO_SPIX_SYNC /* PE9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTE|GPIO_PIN9)
|
||||
|
||||
@@ -332,6 +341,14 @@
|
||||
GPIO_NFC_GPIO, \
|
||||
GPIO_TONE_ALARM_IDLE, \
|
||||
GPIO_nARMED_INIT, \
|
||||
GPIO_FMU_CH1, \
|
||||
GPIO_FMU_CH2, \
|
||||
GPIO_FMU_CH3, \
|
||||
GPIO_FMU_CH4, \
|
||||
GPIO_FMU_CH5, \
|
||||
GPIO_FMU_CH6, \
|
||||
GPIO_FMU_CH7, \
|
||||
GPIO_FMU_CH8, \
|
||||
GPIO_FMU_CAP, \
|
||||
GPIO_SPIX_SYNC \
|
||||
}
|
||||
|
||||
@@ -66,15 +66,15 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
iim42652 -R 6 -s -C 32768 start
|
||||
bmi088 -A -R 4 -s start
|
||||
bmi088 -G -R 4 -s start
|
||||
iim42652 -R 6 -s -C 32768 start
|
||||
icm45686 -R 2 -s start
|
||||
|
||||
rm3100 -I -b 4 start
|
||||
|
||||
bmp581 -b 2 -X -a 0x47 start
|
||||
icp201xx -I -a 0x64 start
|
||||
bmp581 -b 2 -X -a 0x47 start
|
||||
|
||||
# External compass on GPS1/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer)
|
||||
ist8310 -X -b 1 -R 10 start
|
||||
|
||||
@@ -127,8 +127,8 @@
|
||||
#define GPIO_VDD_5V_RC_EN /* PG5 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN5)
|
||||
#define GPIO_VDD_3V3_SD_CARD_EN /* PG7 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN7)
|
||||
|
||||
#define GPIO_VDD_5V_HIPOWER_OC /* PJ3 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTJ|GPIO_PIN3)
|
||||
#define GPIO_nVDD_5V_PERIPH_OC /* PJ4 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTJ|GPIO_PIN4)
|
||||
#define GPIO_VDD_5V_HIPOWER_OC /* PJ3 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTJ|GPIO_PIN3)
|
||||
#define GPIO_nVDD_5V_PERIPH_OC /* PJ4 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTJ|GPIO_PIN4)
|
||||
|
||||
/* Power switch controls ******************************************************/
|
||||
#define VDD_5V_PERIPH_EN(on_true) px4_arch_gpiowrite(GPIO_nVDD_5V_PERIPH_EN, (on_true))
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include <drivers/drv_io_heater.h>
|
||||
|
||||
ModuleBase::Descriptor Core_Heater::desc{task_spawn, custom_command, print_usage};
|
||||
|
||||
# ifndef GPIO_CORE_HEATER_OUTPUT
|
||||
# error "To use the heater driver, the board_config.h must define and initialize GPIO_CORE_HEATER_OUTPUT"
|
||||
# endif
|
||||
@@ -64,7 +62,7 @@ Core_Heater::~Core_Heater()
|
||||
int Core_Heater::custom_command(int argc, char *argv[])
|
||||
{
|
||||
// Check if the driver is running.
|
||||
if (!is_running(desc)) {
|
||||
if (!is_running()) {
|
||||
PX4_INFO("not running");
|
||||
return PX4_ERROR;
|
||||
}
|
||||
@@ -119,7 +117,7 @@ bool Core_Heater::initialize_topics()
|
||||
void Core_Heater::Run()
|
||||
{
|
||||
if (should_exit()) {
|
||||
exit_and_cleanup(desc);
|
||||
exit_and_cleanup();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -218,8 +216,8 @@ int Core_Heater::task_spawn(int argc, char *argv[])
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
desc.object.store(core_heater);
|
||||
desc.task_id = task_id_is_work_queue;
|
||||
_object.store(core_heater);
|
||||
_task_id = task_id_is_work_queue;
|
||||
|
||||
core_heater->start();
|
||||
return 0;
|
||||
@@ -259,5 +257,5 @@ Background process running periodically on the LP work queue to regulate IMU tem
|
||||
|
||||
extern "C" __EXPORT int core_heater_main(int argc, char *argv[])
|
||||
{
|
||||
return ModuleBase::main(Core_Heater::desc, argc, argv);
|
||||
return Core_Heater::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -56,11 +56,9 @@ using namespace time_literals;
|
||||
#define CONTROLLER_PERIOD_DEFAULT 10000
|
||||
#define TEMPERATURE_TARGET_THRESHOLD 2.5f
|
||||
|
||||
class Core_Heater : public ModuleBase, public ModuleParams, public px4::ScheduledWorkItem
|
||||
class Core_Heater : public ModuleBase<Core_Heater>, public ModuleParams, public px4::ScheduledWorkItem
|
||||
{
|
||||
public:
|
||||
static Descriptor desc;
|
||||
|
||||
Core_Heater();
|
||||
|
||||
virtual ~Core_Heater();
|
||||
|
||||
@@ -33,8 +33,6 @@
|
||||
|
||||
#include "NavioRGBLed.hpp"
|
||||
|
||||
ModuleBase::Descriptor NavioRGBLed::desc{task_spawn, custom_command, print_usage};
|
||||
|
||||
NavioRGBLed::NavioRGBLed() :
|
||||
ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::lp_default)
|
||||
{
|
||||
@@ -132,8 +130,8 @@ int NavioRGBLed::task_spawn(int argc, char *argv[])
|
||||
NavioRGBLed *instance = new NavioRGBLed();
|
||||
|
||||
if (instance) {
|
||||
desc.object.store(instance);
|
||||
desc.task_id = task_id_is_work_queue;
|
||||
_object.store(instance);
|
||||
_task_id = task_id_is_work_queue;
|
||||
|
||||
if (instance->init() == PX4_OK) {
|
||||
return PX4_OK;
|
||||
@@ -144,8 +142,8 @@ int NavioRGBLed::task_spawn(int argc, char *argv[])
|
||||
}
|
||||
|
||||
delete instance;
|
||||
desc.object.store(nullptr);
|
||||
desc.task_id = -1;
|
||||
_object.store(nullptr);
|
||||
_task_id = -1;
|
||||
|
||||
return PX4_ERROR;
|
||||
}
|
||||
@@ -172,5 +170,5 @@ Emlid Navio2 RGB LED driver.
|
||||
|
||||
extern "C" __EXPORT int navio_rgbled_main(int argc, char *argv[])
|
||||
{
|
||||
return ModuleBase::main(NavioRGBLed::desc, argc, argv);
|
||||
return NavioRGBLed::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -40,11 +40,9 @@
|
||||
|
||||
#include <lib/led/led.h>
|
||||
|
||||
class NavioRGBLed : public ModuleBase, public px4::ScheduledWorkItem
|
||||
class NavioRGBLed : public ModuleBase<NavioRGBLed>, public px4::ScheduledWorkItem
|
||||
{
|
||||
public:
|
||||
static Descriptor desc;
|
||||
|
||||
NavioRGBLed();
|
||||
~NavioRGBLed() override;
|
||||
|
||||
|
||||
@@ -49,8 +49,6 @@
|
||||
|
||||
using namespace time_literals;
|
||||
|
||||
ModuleBase::Descriptor GhstRc::desc{task_spawn, custom_command, print_usage};
|
||||
|
||||
uint32_t GhstRc::baudrate = GHST_BAUDRATE;
|
||||
|
||||
GhstRc::GhstRc(const char *device) :
|
||||
@@ -116,8 +114,8 @@ int GhstRc::task_spawn(int argc, char *argv[])
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
desc.object.store(instance);
|
||||
desc.task_id = task_id_is_work_queue;
|
||||
_object.store(instance);
|
||||
_task_id = task_id_is_work_queue;
|
||||
|
||||
instance->ScheduleNow();
|
||||
|
||||
@@ -176,7 +174,7 @@ void GhstRc::Run()
|
||||
if (should_exit()) {
|
||||
ScheduleClear();
|
||||
_rc_fd = -1;
|
||||
exit_and_cleanup(desc);
|
||||
exit_and_cleanup();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -310,5 +308,5 @@ This module parses the GHST RC uplink protocol and can generate GHST downlink te
|
||||
|
||||
extern "C" __EXPORT int ghst_rc_main(int argc, char *argv[])
|
||||
{
|
||||
return ModuleBase::main(GhstRc::desc, argc, argv);
|
||||
return GhstRc::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -54,11 +54,9 @@
|
||||
|
||||
#define GHST_MAX_NUM_CHANNELS (16)
|
||||
|
||||
class GhstRc : public ModuleBase, public ModuleParams, public px4::ScheduledWorkItem
|
||||
class GhstRc : public ModuleBase<GhstRc>, public ModuleParams, public px4::ScheduledWorkItem
|
||||
{
|
||||
public:
|
||||
static Descriptor desc;
|
||||
|
||||
GhstRc(const char *device);
|
||||
~GhstRc() override;
|
||||
|
||||
|
||||
@@ -59,8 +59,6 @@
|
||||
|
||||
#include "rc_controller.hpp"
|
||||
|
||||
ModuleBase::Descriptor RC_ControllerModule::desc{task_spawn, custom_command, print_usage};
|
||||
|
||||
int RC_ControllerModule::print_status()
|
||||
{
|
||||
PX4_INFO("Running");
|
||||
@@ -71,35 +69,35 @@ int RC_ControllerModule::print_status()
|
||||
|
||||
int RC_ControllerModule::custom_command(int argc, char *argv[])
|
||||
{
|
||||
if (!is_running(desc)) {
|
||||
if (!is_running()) {
|
||||
print_usage("not running");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[0], "throttle")) {
|
||||
uint16_t val = atoi(argv[1]);
|
||||
get_instance<RC_ControllerModule>(desc)->set_throttle(val);
|
||||
get_instance()->set_throttle(val);
|
||||
PX4_INFO("Setting throttle to %u", val);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[0], "yaw")) {
|
||||
uint16_t val = atoi(argv[1]);
|
||||
get_instance<RC_ControllerModule>(desc)->set_yaw(val);
|
||||
get_instance()->set_yaw(val);
|
||||
PX4_INFO("Setting yaw to %u", val);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[0], "pitch")) {
|
||||
uint16_t val = atoi(argv[1]);
|
||||
get_instance<RC_ControllerModule>(desc)->set_pitch(val);
|
||||
get_instance()->set_pitch(val);
|
||||
PX4_INFO("Setting pitch to %u", val);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[0], "roll")) {
|
||||
uint16_t val = atoi(argv[1]);
|
||||
get_instance<RC_ControllerModule>(desc)->set_roll(val);
|
||||
get_instance()->set_roll(val);
|
||||
PX4_INFO("Setting roll to %u", val);
|
||||
return 0;
|
||||
}
|
||||
@@ -108,24 +106,17 @@ int RC_ControllerModule::custom_command(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
int RC_ControllerModule::run_trampoline(int argc, char *argv[])
|
||||
{
|
||||
return ModuleBase::run_trampoline_impl(desc, [](int ac, char *av[]) -> ModuleBase * {
|
||||
return RC_ControllerModule::instantiate(ac, av);
|
||||
}, argc, argv);
|
||||
}
|
||||
|
||||
int RC_ControllerModule::task_spawn(int argc, char *argv[])
|
||||
{
|
||||
desc.task_id = px4_task_spawn_cmd("RC_ControllerModule",
|
||||
SCHED_DEFAULT,
|
||||
SCHED_PRIORITY_MAX,
|
||||
1024,
|
||||
(px4_main_t)&run_trampoline,
|
||||
(char *const *)argv);
|
||||
_task_id = px4_task_spawn_cmd("RC_ControllerModule",
|
||||
SCHED_DEFAULT,
|
||||
SCHED_PRIORITY_MAX,
|
||||
1024,
|
||||
(px4_main_t)&run_trampoline,
|
||||
(char *const *)argv);
|
||||
|
||||
if (desc.task_id < 0) {
|
||||
desc.task_id = -1;
|
||||
if (_task_id < 0) {
|
||||
_task_id = -1;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
@@ -261,5 +252,5 @@ int RC_ControllerModule::print_usage(const char *reason)
|
||||
|
||||
int rc_controller_main(int argc, char *argv[])
|
||||
{
|
||||
return ModuleBase::main(RC_ControllerModule::desc, argc, argv);
|
||||
return RC_ControllerModule::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -41,11 +41,9 @@
|
||||
|
||||
extern "C" __EXPORT int rc_controller_main(int argc, char *argv[]);
|
||||
|
||||
class RC_ControllerModule : public ModuleBase, public ModuleParams
|
||||
class RC_ControllerModule : public ModuleBase<RC_ControllerModule>, public ModuleParams
|
||||
{
|
||||
public:
|
||||
static Descriptor desc;
|
||||
|
||||
RC_ControllerModule();
|
||||
|
||||
virtual ~RC_ControllerModule() = default;
|
||||
@@ -53,9 +51,6 @@ public:
|
||||
/** @see ModuleBase */
|
||||
static int task_spawn(int argc, char *argv[]);
|
||||
|
||||
/** @see ModuleBase */
|
||||
static int run_trampoline(int argc, char *argv[]);
|
||||
|
||||
/** @see ModuleBase */
|
||||
static RC_ControllerModule *instantiate(int argc, char *argv[]);
|
||||
|
||||
|
||||
@@ -41,8 +41,6 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
ModuleBase::Descriptor VoxlSaveCalParams::desc{task_spawn, custom_command, print_usage};
|
||||
|
||||
static bool debug = false;
|
||||
|
||||
VoxlSaveCalParams::VoxlSaveCalParams() :
|
||||
@@ -147,7 +145,7 @@ VoxlSaveCalParams::Run()
|
||||
{
|
||||
if (should_exit()) {
|
||||
_parameter_primary_set_value_request_sub.unregisterCallback();
|
||||
exit_and_cleanup(desc);
|
||||
exit_and_cleanup();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -188,8 +186,8 @@ int VoxlSaveCalParams::task_spawn(int argc, char *argv[])
|
||||
VoxlSaveCalParams *instance = new VoxlSaveCalParams();
|
||||
|
||||
if (instance) {
|
||||
desc.object.store(instance);
|
||||
desc.task_id = task_id_is_work_queue;
|
||||
_object.store(instance);
|
||||
_task_id = task_id_is_work_queue;
|
||||
|
||||
if (instance->init()) {
|
||||
return PX4_OK;
|
||||
@@ -200,8 +198,8 @@ int VoxlSaveCalParams::task_spawn(int argc, char *argv[])
|
||||
}
|
||||
|
||||
delete instance;
|
||||
desc.object.store(nullptr);
|
||||
desc.task_id = -1;
|
||||
_object.store(nullptr);
|
||||
_task_id = -1;
|
||||
|
||||
return PX4_ERROR;
|
||||
}
|
||||
@@ -232,5 +230,5 @@ This implements autosaving of calibration parameters on VOXL2 platform.
|
||||
|
||||
extern "C" __EXPORT int voxl_save_cal_params_main(int argc, char *argv[])
|
||||
{
|
||||
return ModuleBase::main(VoxlSaveCalParams::desc, argc, argv);
|
||||
return VoxlSaveCalParams::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -46,12 +46,10 @@
|
||||
|
||||
using namespace time_literals;
|
||||
|
||||
class VoxlSaveCalParams : public ModuleBase, public ModuleParams,
|
||||
class VoxlSaveCalParams : public ModuleBase<VoxlSaveCalParams>, public ModuleParams,
|
||||
public px4::WorkItem
|
||||
{
|
||||
public:
|
||||
static Descriptor desc;
|
||||
|
||||
VoxlSaveCalParams();
|
||||
~VoxlSaveCalParams() = default;
|
||||
|
||||
|
||||
@@ -432,7 +432,7 @@
|
||||
*(.text._ZN23MavlinkStreamStatustext8get_sizeEv)
|
||||
*(.text._ZN11calibration13Accelerometer13set_device_idEm)
|
||||
*(.text._ZN3px46logger6Logger18start_stop_loggingEv)
|
||||
*(.text._ZN14FlightTaskAuto32_evaluatePositionSetpointTripletEv)
|
||||
*(.text._ZN14FlightTaskAuto17_evaluateTripletsEv)
|
||||
*(.text._ZN11calibration9Gyroscope23SensorCorrectionsUpdateEb)
|
||||
*(.text._ZN25MavlinkStreamMagCalReport4sendEv)
|
||||
*(.text.imxrt_config_gpio)
|
||||
@@ -573,6 +573,7 @@
|
||||
*(.text._ZN4uORB12SubscriptionaSEOS0_)
|
||||
*(.text._ZN15TakeoffHandling18updateTakeoffStateEbbbfbRKy)
|
||||
*(.text._ZN10ModeChecks14checkAndReportERK7ContextR6Report)
|
||||
*(.text._ZN14FlightTaskAuto24_updateInternalWaypointsEv)
|
||||
*(.text._ZN8Failsafe17updateArmingStateERKybRK16failsafe_flags_s)
|
||||
*(.text.imxrt_lpi2c_modifyreg)
|
||||
*(.text.up_flush_dcache)
|
||||
|
||||
@@ -432,7 +432,7 @@
|
||||
*(.text._ZN23MavlinkStreamStatustext8get_sizeEv)
|
||||
*(.text._ZN11calibration13Accelerometer13set_device_idEm)
|
||||
*(.text._ZN3px46logger6Logger18start_stop_loggingEv)
|
||||
*(.text._ZN14FlightTaskAuto32_evaluatePositionSetpointTripletEv)
|
||||
*(.text._ZN14FlightTaskAuto17_evaluateTripletsEv)
|
||||
*(.text._ZN11calibration9Gyroscope23SensorCorrectionsUpdateEb)
|
||||
*(.text._ZN25MavlinkStreamMagCalReport4sendEv)
|
||||
*(.text.imxrt_config_gpio)
|
||||
@@ -573,6 +573,7 @@
|
||||
*(.text._ZN4uORB12SubscriptionaSEOS0_)
|
||||
*(.text._ZN15TakeoffHandling18updateTakeoffStateEbbbfbRKy)
|
||||
*(.text._ZN10ModeChecks14checkAndReportERK7ContextR6Report)
|
||||
*(.text._ZN14FlightTaskAuto24_updateInternalWaypointsEv)
|
||||
*(.text._ZN8Failsafe17updateArmingStateERKybRK16failsafe_flags_s)
|
||||
*(.text.imxrt_lpi2c_modifyreg)
|
||||
*(.text.up_flush_dcache)
|
||||
|
||||
@@ -19,7 +19,6 @@ CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y
|
||||
CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_AUAV=y
|
||||
CONFIG_COMMON_DISTANCE_SENSOR=y
|
||||
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_SF45_SERIAL=y
|
||||
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_GRF_SERIAL=y
|
||||
CONFIG_DRIVERS_DSHOT=y
|
||||
CONFIG_DRIVERS_GNSS_SEPTENTRIO=y
|
||||
CONFIG_DRIVERS_GPS=y
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
*(.text._ZN23MavlinkStreamStatustext8get_sizeEv)
|
||||
*(.text._ZN11calibration13Accelerometer13set_device_idEm)
|
||||
*(.text._ZN3px46logger6Logger18start_stop_loggingEv)
|
||||
*(.text._ZN14FlightTaskAuto32_evaluatePositionSetpointTripletEv)
|
||||
*(.text._ZN14FlightTaskAuto17_evaluateTripletsEv)
|
||||
*(.text._ZN11calibration9Gyroscope23SensorCorrectionsUpdateEb)
|
||||
*(.text._ZN25MavlinkStreamMagCalReport4sendEv)
|
||||
*(.text.imxrt_config_gpio)
|
||||
@@ -586,6 +586,7 @@
|
||||
*(.text._ZN4uORB12SubscriptionaSEOS0_)
|
||||
*(.text._ZN15TakeoffHandling18updateTakeoffStateEbbbfbRKy)
|
||||
*(.text._ZN10ModeChecks14checkAndReportERK7ContextR6Report)
|
||||
*(.text._ZN14FlightTaskAuto24_updateInternalWaypointsEv)
|
||||
*(.text._ZN8Failsafe17updateArmingStateERKybRK16failsafe_flags_s)
|
||||
*(.text.imxrt_lpi2c_modifyreg)
|
||||
*(.text.up_flush_dcache)
|
||||
|
||||
@@ -1056,6 +1056,9 @@
|
||||
1 1 UAVCAN_EC_REV 0 6
|
||||
1 1 UAVCAN_ENABLE 2 6
|
||||
1 1 UAVCAN_LGT_ANTCL 2 6
|
||||
1 1 UAVCAN_LGT_LAND 0 6
|
||||
1 1 UAVCAN_LGT_NAV 3 6
|
||||
1 1 UAVCAN_LGT_STROB 1 6
|
||||
1 1 UAVCAN_NODE_ID 1 6
|
||||
1 1 UAVCAN_PUB_ARM 0 6
|
||||
1 1 UAVCAN_PUB_MBD 0 6
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 108 KiB |
@@ -255,7 +255,6 @@
|
||||
- [Lidar-Lite](sensor/lidar_lite.md)
|
||||
- [Lightware Lidars (SF/LW/GRF)](sensor/sfxx_lidar.md)
|
||||
- [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md)
|
||||
- [Lightware GRF250/GRF500 Gimbal Lidar](sensor/grf_lidar.md)
|
||||
- [TeraRanger](sensor/teraranger.md)
|
||||
- [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md)
|
||||
- [Avionics Anonymous Laser Altimeter UAVCAN Interface (CAN)](dronecan/avanon_laser_interface.md)
|
||||
@@ -418,7 +417,6 @@
|
||||
- [Standard Configuration](config/index.md)
|
||||
- [Advanced Configuration](advanced_config/index.md)
|
||||
- [Using PX4's Navigation Filter (EKF2)](advanced_config/tuning_the_ecl_ekf.md)
|
||||
- [GNSS-Denied & Degraded Flight](advanced_config/gnss_degraded_or_denied_flight.md)
|
||||
- [Finding/Updating Parameters](advanced_config/parameters.md)
|
||||
- [Full Parameter Reference](advanced_config/parameter_reference.md)
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
# GNSS-Degraded & Denied Flight ("Dead-Reckoning" Mode)
|
||||
|
||||
<Badge type="tip" text="PX4 v1.17" /> <Badge type="warning" text="Experimental" />
|
||||
|
||||
::: warning Experimental
|
||||
This is a new feature with limited real-world testing.
|
||||
It is intended for GNSS dropout scenarios (not pure GNSS-denied from takeoff), and requires that alternative velocity/position sensors are available.
|
||||
|
||||
Please [share your related test logs](../getting_started/flight_reporting.md#sharing-the-log-files-for-review-by-px4-developers) to help us verify and harden it.
|
||||
:::
|
||||
|
||||
PX4 is default-configured for outdoor flight with a reliable GNSS signal, but it can also be set up in "dead-reckoning mode" to more gracefully handle environments where GNSS is intermittently degraded or denied during flight.
|
||||
|
||||
This section describes the differences between automatic and dead-reckoning modes, the circumstances in which each should be used, and how dead-reckoning is configured.
|
||||
|
||||
## Overview
|
||||
|
||||
PX4's EKF2 navigation has two modes for handling when GNSS data is determined to be unreliable:
|
||||
|
||||
- **Automatic mode** (the default): Used for flying outdoors in environments where a GNSS signal is expected to be largely reliable.
|
||||
- **Dead-reckoning mode**: Recommended when you want to fly missions or other position controlled modes when there is intermittent GNSS loss, such as when flying under a bridge, from outdoors into an indoor setting, or when there is GNSS jamming (it is not suitable for pure-indoor use, as a GNSS signal is required before arming).
|
||||
|
||||
::: info
|
||||
Dead-reckoning mode helps for both Fixed-Wing and Multicopter vehicles.
|
||||
MC vehicles benefit more because they can hover when transitioning between sensor regimes.
|
||||
FW needs continuous accurate velocity/position during the entire mission arc, making sensor transitions trickier.
|
||||
:::
|
||||
|
||||
## Mode Comparison
|
||||
|
||||
The following sections provide more detail about each of the modes and when they should be used.
|
||||
|
||||
### Automatic Mode
|
||||
|
||||
In Automatic mode the EKF2 resets if GNSS is lost and no other sources of position are available.
|
||||
This can result in a [position loss failsafe](../config/safety.md#position-loss-failsafe) and may trigger a shift into a mode that does not require global position, including stopping missions.
|
||||
|
||||
This is desirable if the GNSS signal is likely to be recovered quickly and there are no mechanisms to estimate position when GNSS is unavailable.
|
||||
|
||||
Use Automatic (default) when:
|
||||
|
||||
- Flying in open sky with reliable GNSS throughout the mission.
|
||||
- You want the EKF to reset to GNSS when it becomes available again.
|
||||
- Operating in environments where GNSS is either good or completely unavailable (binary state).
|
||||
|
||||
### Dead-Reckoning Mode
|
||||
|
||||
In dead-reckoning mode, EKF2 stops fusing GNSS data when it becomes unreliable and prevents EKF2 resets — provided there are other sources of position or velocity data that can be fused.
|
||||
This ensures that the vehicle can continue flying missions and other position controlled modes when GNSS is lost.
|
||||
|
||||
When GNSS is recovered it will be fused with other measurements when tests indicate it can be trusted.
|
||||
This may cause jerky movements in position controlled modes if the estimate has drifted.
|
||||
This mode relies on having additional position or velocity sensors and must also have a reliable GNSS signal at boot.
|
||||
|
||||
Use Dead-Reckoning when:
|
||||
|
||||
- **Transitioning between GNSS and non-GNSS environments** (flying into buildings, under bridges, through tree cover).
|
||||
- You have **redundant sensors** (optical flow, VIO, rangefinder, quality baro) that can maintain position estimation.
|
||||
- Flying **missions that cross GPS-denied areas** where you want continuous operation rather than failsafe.
|
||||
- **Urban environments** or other areas with intermittent GNSS quality.
|
||||
- You want to **avoid EKF resets and jumps** when GNSS recovers (smoother transitions).
|
||||
|
||||
## Configuration
|
||||
|
||||
To use dead-reckoning mode, the vehicle must have an alternative source of position or velocity information, such as an [Optical Flow](../sensor/optical_flow.md) sensor or [VIO](../computer_vision/visual_inertial_odometry.md) setup.
|
||||
|
||||
To enable the mode:
|
||||
|
||||
1. Set [EKF2_GPS_MODE](../advanced_config/parameter_reference.md#EKF2_GPS_MODE) to `1`.
|
||||
2. Ensure that GNSS arming checks are enabled (a reliable GNSS signal is required before arming):
|
||||
- [COM_ARM_WO_GPS](../advanced_config/parameter_reference.md#COM_ARM_WO_GPS) - set to `0`
|
||||
- [EKF2_GPS_CHECK](../advanced_config/parameter_reference.md#EKF2_GPS_CHECK) - set to default.
|
||||
|
||||
## See Also
|
||||
|
||||
- [GNSS Fault Detection](../advanced_config/tuning_the_ecl_ekf.md#gnss-fault-detection) in _Using PX4's Navigation Filter (EKF2)_
|
||||
- [Fuse, Reset, or Reject? Handling Various Data-sources in EKF2](https://www.youtube.com/watch?v=CMGQJNPiTJg) - _PX4 Developer Summit 2025_, Marco Hauswirth, Auterion AG
|
||||
@@ -10,7 +10,6 @@ This topic lists configuration topics that are not particularly vehicle specific
|
||||
## Feature configuration
|
||||
|
||||
- [Using PX4's Navigation Filter (EKF2)](../advanced_config/tuning_the_ecl_ekf.md)
|
||||
- [GNSS-Denied and Degraded Flight](../advanced_config/gnss_degraded_or_denied_flight.md)
|
||||
- [Flight Termination Configuration](../advanced_config/flight_termination.md)
|
||||
- [Land Detector Configuration](../advanced_config/land_detector.md)
|
||||
- [Prearm/Arm/Disarm Configuration](../advanced_config/prearm_arm_disarm.md)
|
||||
|
||||
@@ -16365,25 +16365,6 @@ Arm switch is a momentary button.
|
||||
| ------ | -------- | -------- | --------- | ------------ | ---- |
|
||||
| | | | | Disabled (0) |
|
||||
|
||||
### COM_ARM_TRAFF (`INT32`) {#COM_ARM_TRAFF}
|
||||
|
||||
Enable Traffic Avoidance system detection check.
|
||||
|
||||
This check detects if a traffic avoidance system (ADSB/FLARM transponder)
|
||||
is missing. Depending on the value of the parameter, the check can be
|
||||
disabled, warn only, or deny arming.
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: Disabled
|
||||
- `1`: Warning only
|
||||
- `2`: Enforce for all modes
|
||||
- `3`: Enforce for mission modes only
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0 |
|
||||
|
||||
### COM_ARM_WO_GPS (`INT32`) {#COM_ARM_WO_GPS}
|
||||
|
||||
Arming without GNSS configuration.
|
||||
@@ -19615,18 +19596,6 @@ Launch is detected when acceleration in body forward direction is above FW_LAUN_
|
||||
| ------ | -------- | -------- | --------- | ------- | ----- |
|
||||
| | 0 | | 0.5 | 30.0 | m/s^2 |
|
||||
|
||||
### FW_LAUN_CS_LK_DY (`FLOAT`) {#FW_LAUN_CS_LK_DY}
|
||||
|
||||
Control surface launch delay.
|
||||
|
||||
Locks control surfaces during pre-launch (armed) and until this time since launch has passed.
|
||||
Only affects control surfaces that have corresponding flag set, and not active for runway takeoff.
|
||||
Set to 0 to disable any surface locking after arming.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | 0.1 | 0. | s |
|
||||
|
||||
### FW_LAUN_DETCN_ON (`INT32`) {#FW_LAUN_DETCN_ON}
|
||||
|
||||
Fixed-wing launch detection.
|
||||
@@ -21356,27 +21325,6 @@ Some are generic, while others are specifically fit to a certain vehicle with a
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0 |
|
||||
|
||||
### CA_CS_LAUN_LK (`INT32`) {#CA_CS_LAUN_LK}
|
||||
|
||||
Control surface launch lock enabled.
|
||||
|
||||
If actuator launch lock is enabled, this surface is kept at the disarmed value.
|
||||
|
||||
**Bitmask:**
|
||||
|
||||
- `0`: Control Surface 1
|
||||
- `1`: Control Surface 2
|
||||
- `2`: Control Surface 3
|
||||
- `3`: Control Surface 4
|
||||
- `4`: Control Surface 5
|
||||
- `5`: Control Surface 6
|
||||
- `6`: Control Surface 7
|
||||
- `7`: Control Surface 8
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 255 | | 0 |
|
||||
|
||||
### CA_FAILURE_MODE (`INT32`) {#CA_FAILURE_MODE}
|
||||
|
||||
Motor failure handling mode.
|
||||
@@ -33130,44 +33078,6 @@ Use SENS_MAG_SIDES instead
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 63 |
|
||||
|
||||
### GRF_RATE_CFG (`INT32`) {#GRF_RATE_CFG}
|
||||
|
||||
Lightware GRF lidar update rate.
|
||||
|
||||
The Lightware GRF distance sensor can increase the update rate to enable greater resolution.
|
||||
|
||||
**Values:**
|
||||
|
||||
- `1`: 1 Hz
|
||||
- `2`: 2 Hz
|
||||
- `3`: 4 Hz
|
||||
- `4`: 5 Hz
|
||||
- `5`: 10 Hz
|
||||
- `6`: 20 Hz
|
||||
- `7`: 30 Hz
|
||||
- `8`: 40 Hz
|
||||
- `9`: 50 Hz
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | | | | 4 |
|
||||
|
||||
### GRF_SENS_MODEL (`INT32`) {#GRF_SENS_MODEL}
|
||||
|
||||
GRF Sensor model.
|
||||
|
||||
GRF Sensor Model used to distinush between the GRF250 and GRF500 since both have different max distance range.
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: disable
|
||||
- `1`: GRF250
|
||||
- `2`: GRF500
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | | | | 0 |
|
||||
|
||||
### ILABS_MODE (`INT32`) {#ILABS_MODE}
|
||||
|
||||
InertialLabs INS sensor mode configuration.
|
||||
@@ -34376,31 +34286,6 @@ Enable simulated GPS sinstance.
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 1 | | 0 |
|
||||
|
||||
### SENS_EN_GRF_CFG (`INT32`) {#SENS_EN_GRF_CFG}
|
||||
|
||||
Serial Configuration for Lightware GRF Rangefinder (serial).
|
||||
|
||||
Configure on which serial port to run Lightware GRF Rangefinder (serial).
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: Disabled
|
||||
- `6`: UART 6
|
||||
- `101`: TELEM 1
|
||||
- `102`: TELEM 2
|
||||
- `103`: TELEM 3
|
||||
- `104`: TELEM/SERIAL 4
|
||||
- `201`: GPS 1
|
||||
- `202`: GPS 2
|
||||
- `203`: GPS 3
|
||||
- `300`: Radio Controller
|
||||
- `301`: Wifi Port
|
||||
- `401`: EXT2
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | | | | 0 |
|
||||
|
||||
### SENS_EN_INA220 (`INT32`) {#SENS_EN_INA220}
|
||||
|
||||
Enable INA220 Power Monitor.
|
||||
@@ -34626,7 +34511,7 @@ Lightware Laser Rangefinder hardware model (serial).
|
||||
|
||||
### SENS_EN_SF1XX (`INT32`) {#SENS_EN_SF1XX}
|
||||
|
||||
Lightware laser rangefinder (i2c).
|
||||
Lightware SF1xx/SF20/LW20 laser rangefinder (i2c).
|
||||
|
||||
**Values:**
|
||||
|
||||
@@ -35801,26 +35686,6 @@ Configure on which serial port to run VectorNav (VN-100, VN-200, VN-300).
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | | | | 0 |
|
||||
|
||||
### SF1XX_ROT (`INT32`) {#SF1XX_ROT}
|
||||
|
||||
Lightware laser rangefinder Rotation.
|
||||
|
||||
Distance sensor orientation as MAV_SENSOR_ORIENTATION enum.
|
||||
Applies to all models supported by SENS_EN_SF1XX.
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: Forward
|
||||
- `2`: Right
|
||||
- `4`: Backward
|
||||
- `6`: Left
|
||||
- `24`: Upward
|
||||
- `25`: Downward
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 25 | | 25 |
|
||||
|
||||
### SF45_ORIENT_CFG (`INT32`) {#SF45_ORIENT_CFG}
|
||||
|
||||
Orientation upright or facing downward.
|
||||
@@ -40423,7 +40288,7 @@ starve other nodes on the bus.
|
||||
UAVCAN ANTI_COLLISION light operating mode.
|
||||
|
||||
This parameter defines the minimum condition under which the system will command
|
||||
lights with anti-collision function to turn on (white).
|
||||
the ANTI_COLLISION lights on
|
||||
0 - Always off
|
||||
1 - When autopilot is armed
|
||||
2 - When autopilot is prearmed
|
||||
@@ -40440,97 +40305,67 @@ lights with anti-collision function to turn on (white).
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 3 | | 2 |
|
||||
|
||||
### UAVCAN_LGT_FN0 (`INT32`) {#UAVCAN_LGT_FN0}
|
||||
### UAVCAN_LGT_LAND (`INT32`) {#UAVCAN_LGT_LAND}
|
||||
|
||||
Light 0 function.
|
||||
UAVCAN LIGHT_ID_LANDING light operating mode.
|
||||
|
||||
Function assigned to light 0.
|
||||
0: Status - displays system status colors
|
||||
1: Anti-collision - white beacon controlled by LGT_ANTCL parameter
|
||||
This parameter defines the minimum condition under which the system will command
|
||||
the LIGHT_ID_LANDING lights on
|
||||
0 - Always off
|
||||
1 - When autopilot is armed
|
||||
2 - When autopilot is prearmed
|
||||
3 - Always on
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: Status Light
|
||||
- `1`: Anti-collision Light
|
||||
- `0`: Always off
|
||||
- `1`: When autopilot is armed
|
||||
- `2`: When autopilot is prearmed
|
||||
- `3`: Always on
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 1 | | 0 |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 3 | | 0 |
|
||||
|
||||
### UAVCAN_LGT_FN1 (`INT32`) {#UAVCAN_LGT_FN1}
|
||||
### UAVCAN_LGT_NAV (`INT32`) {#UAVCAN_LGT_NAV}
|
||||
|
||||
Light 1 function.
|
||||
UAVCAN RIGHT_OF_WAY light operating mode.
|
||||
|
||||
Function assigned to light 1.
|
||||
0: Status - displays system status colors
|
||||
1: Anti-collision - white beacon controlled by LGT_ANTCL parameter
|
||||
This parameter defines the minimum condition under which the system will command
|
||||
the RIGHT_OF_WAY lights on
|
||||
0 - Always off
|
||||
1 - When autopilot is armed
|
||||
2 - When autopilot is prearmed
|
||||
3 - Always on
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: Status Light
|
||||
- `1`: Anti-collision Light
|
||||
- `0`: Always off
|
||||
- `1`: When autopilot is armed
|
||||
- `2`: When autopilot is prearmed
|
||||
- `3`: Always on
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 1 | | 0 |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 3 | | 3 |
|
||||
|
||||
### UAVCAN_LGT_FN2 (`INT32`) {#UAVCAN_LGT_FN2}
|
||||
### UAVCAN_LGT_STROB (`INT32`) {#UAVCAN_LGT_STROB}
|
||||
|
||||
Light 2 function.
|
||||
UAVCAN STROBE light operating mode.
|
||||
|
||||
Function assigned to light 2.
|
||||
0: Status - displays system status colors
|
||||
1: Anti-collision - white beacon controlled by LGT_ANTCL parameter
|
||||
This parameter defines the minimum condition under which the system will command
|
||||
the STROBE lights on
|
||||
0 - Always off
|
||||
1 - When autopilot is armed
|
||||
2 - When autopilot is prearmed
|
||||
3 - Always on
|
||||
|
||||
**Values:**
|
||||
|
||||
- `0`: Status Light
|
||||
- `1`: Anti-collision Light
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 1 | | 0 |
|
||||
|
||||
### UAVCAN_LGT_ID0 (`INT32`) {#UAVCAN_LGT_ID0}
|
||||
|
||||
Light 0 ID.
|
||||
|
||||
specifies the light_id value for light 0 in UAVCAN LightsCommand messages.
|
||||
This determines which physical LED responds to commands for this light slot.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 255 | | 0 |
|
||||
|
||||
### UAVCAN_LGT_ID1 (`INT32`) {#UAVCAN_LGT_ID1}
|
||||
|
||||
Light 1 ID.
|
||||
|
||||
specifies the light_id value for light 1 in UAVCAN LightsCommand messages.
|
||||
This determines which physical LED responds to commands for this light slot.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 255 | | 0 |
|
||||
|
||||
### UAVCAN_LGT_ID2 (`INT32`) {#UAVCAN_LGT_ID2}
|
||||
|
||||
Light 2 ID.
|
||||
|
||||
specifies the light_id value for light 2 in UAVCAN LightsCommand messages.
|
||||
This determines which physical LED responds to commands for this light slot.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 255 | | 0 |
|
||||
|
||||
### UAVCAN_LGT_NUM (`INT32`) {#UAVCAN_LGT_NUM}
|
||||
|
||||
Number of UAVCAN lights to configure.
|
||||
|
||||
Number of lights to control via UAVCAN LightsCommand messages.
|
||||
Set to 0 to disable UAVCAN light control.
|
||||
Each light uses two parameters: LGT_IDx for the light_id and LGT_FNx for the function.
|
||||
- `0`: Always off
|
||||
- `1`: When autopilot is armed
|
||||
- `2`: When autopilot is prearmed
|
||||
- `3`: Always on
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
@@ -42649,7 +42484,7 @@ Gyro filter settings.
|
||||
|
||||
### SF1XX_MODE (`INT32`) {#SF1XX_MODE}
|
||||
|
||||
Lightware laser rangefinder Operation Mode.
|
||||
Lightware SF1xx/SF20/LW20 Operation Mode.
|
||||
|
||||
**Values:**
|
||||
|
||||
|
||||
@@ -361,10 +361,6 @@ The mode is set using the [EKF2_GPS_MODE](../advanced_config/parameter_reference
|
||||
EKF2 may reset if no other sources of position or velocity are available.
|
||||
If GNSS altitude OR horizontal position data drifts, the system disables fusion of both measurements simultaneously (even if one would still pass validation) and avoids performing resets.
|
||||
|
||||
::: tip
|
||||
See also [Fault Detection](https://youtu.be/CMGQJNPiTJg?si=sFtdf4AQbcOH8-u8) in "Fuse, Reset, or Reject? Handling Various Data-sources in EKF2" _PX4 Developer Summit 2025_, Marco Hauswirth, Auterion AG
|
||||
:::
|
||||
|
||||
##### Detection Logic
|
||||
|
||||
Horizontal Position:
|
||||
@@ -896,4 +892,3 @@ If no terrain estimate is available this parameter will have no effect and the s
|
||||
## Further Information
|
||||
|
||||
- [PX4 State Estimation Overview](https://youtu.be/HkYRJJoyBwQ), _PX4 Developer Summit 2019_, Dr. Paul Riseborough): Overview of the estimator, and major changes from 2018/19, and the expected improvements through 2019/20.
|
||||
- [Fuse, Reset, or Reject? Handling Various Data-sources in EKF2](https://www.youtube.com/watch?v=CMGQJNPiTJg) - _PX4 Developer Summit 2025_, Marco Hauswirth, Auterion AG
|
||||
|
||||
+11
-26
@@ -181,22 +181,17 @@ The following settings also apply, but are not displayed in the QGC UI.
|
||||
| <a id="GF_PREDICT"></a>Preemptive geofence triggering | [GF_PREDICT](../advanced_config/parameter_reference.md#GF_PREDICT) | (Experimental) Trigger geofence if current motion of the vehicle is predicted to trigger the breach (rather than late triggering after the breach). |
|
||||
| <a id="CBRK_FLIGHTTERM"></a>Circuit breaker for flight termination | [CBRK_FLIGHTTERM](../advanced_config/parameter_reference.md#CBRK_FLIGHTTERM) | Enables/Disables flight termination action (disabled by default). |
|
||||
|
||||
## Position Estimation Failsafes
|
||||
|
||||
This section describes failsafes related to the quality of the vehicle's position estimate.
|
||||
|
||||
### Position Loss Failsafe
|
||||
## Position (GNSS) Loss Failsafe
|
||||
|
||||
The _Position Loss Failsafe_ is triggered if the quality of the PX4 position estimate falls below acceptable levels (this might be caused by GPS loss) while in a mode that requires an acceptable position estimate.
|
||||
The sections below cover first the trigger and then the failsafe action taken by the controller.
|
||||
|
||||
### Position Loss Failsafe Trigger
|
||||
|
||||
The position loss failsafe triggers if the position estimate becomes _invalid_. There are two mechanisms in PX4 to invalidate the position estimate:
|
||||
There are basically two mechanisms in PX4 to trigger position failsafes:
|
||||
|
||||
- A timeout since the last sensor data was fused that provides direct speed or horizontal position measurements.
|
||||
- Sensors that fall into that category are: GNSS, optical flow, airspeed, VIO, auxiliary global position.
|
||||
- The estimated horizontal position inaccuracy exceeds the threshold [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH)
|
||||
- This check is only done on hovering systems (rotary-wing vehicles or VTOLs in hover phase). For fixed-wing vehicles, refer to the [Position Accuracy Low](#position-accuracy-low-failsafe) section.
|
||||
- A timeout since the last sensor data was fused that provides direct speed or horizontal position measurements. Sensors that fall into that category are: GNSS, optical flow, airspeed, VIO, auxiliary global position.
|
||||
- The estimated horizontal position accuracy exceeds a certain threshold. This check is only done on hovering systems (rotary wing vehicles or VTOLs in hover phase).
|
||||
|
||||
The relevant parameters shown below.
|
||||
|
||||
@@ -212,24 +207,14 @@ Multicopters will switch to [Altitude mode](../flight_modes_mc/altitude.md) if a
|
||||
Fixed-wing planes, and VTOLs not configured to land in hover ([NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT)), have a parameter ([FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT)) that defines how long they will loiter (circle with a constant roll angle ([FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R)) at the current altitude) after losing position before attempting to land.
|
||||
If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT)) then they will first transition and then descend.
|
||||
|
||||
The relevant parameters are:
|
||||
The relevant parameters for all vehicles shown below.
|
||||
|
||||
| Parameter | Description |
|
||||
| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="FW_GPSF_LT"></a>[FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT) | Fixed-wing only: Loiter time (waiting at current altitude for position estimation recovery before starting to descend). Set to 0 to disable. |
|
||||
| <a id="FW_GPSF_R"></a>[FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R) | Fixed roll/bank angle while circling. |
|
||||
| <a id="NAV_FORCE_VT"></a>[NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT) | If true, force VTOL takeoff and landing, even in `Descend` failsafe. |
|
||||
Parameters that only affect Fixed-wing vehicles:
|
||||
|
||||
### Position Accuracy Low Failsafe
|
||||
|
||||
In Fixed-wing, the position estimate is never strictly invalidated as long as we have a horizontal aiding source, such as an airspeed sensor. In that case, a separate failsafe can be configured that triggers if the position estimate inacuraccy exceeds the threshold [COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH). The failsafe action is taken if the vehicle is in mission or hold mode, otherwise it is only a warning. The relevant parameters are:
|
||||
|
||||
| Parameter | Description |
|
||||
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
||||
| <a id="COM_POS_LOW_EPH"></a>[COM_POS_LOW_EPH](../advanced_config/parameter_reference.md#COM_POS_LOW_EPH) | Position inaccuracy threshold above which COM_POS_LOW_ACT is taken. |
|
||||
| <a id="COM_POS_LOW_ACT"></a>[COM_POS_LOW_ACT](../advanced_config/parameter_reference.md#COM_POS_LOW_ACT) | Failsafe action taken when position inaccuracy is above configured threshold. |
|
||||
|
||||
Note that if there is no horizontal aiding source anymore, the position estimate is invalidated after `EKF2_NOAID_TOUT`, and the standard position loss failsafe applies.
|
||||
| Parameter | Description |
|
||||
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="FW_GPSF_LT"></a>[FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT) | Loiter time (waiting for GPS recovery before it goes into land or flight termination). Set to 0 to disable. |
|
||||
| <a id="FW_GPSF_R"></a>[FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R) | Fixed roll/bank angle while circling. |
|
||||
|
||||
## Offboard Loss Failsafe
|
||||
|
||||
|
||||
@@ -86,20 +86,6 @@ private:
|
||||
};
|
||||
```
|
||||
|
||||
## Coding Conventions
|
||||
|
||||
The following conventions are enforced during code review:
|
||||
|
||||
- **Return early** to reduce nesting depth.
|
||||
- **No `get`/`is` prefixes** on boolean methods: prefer `enabled()` over `isEnabled()`.
|
||||
- **Default member initialization** in class headers, not constructors (e.g. `float _value{0.f};`).
|
||||
- **Avoid `goto`.**
|
||||
- **Prefer `++i`** over `i++`.
|
||||
- **No `std::` containers or algorithms** in embedded (NuttX) code.
|
||||
- **No dynamic memory allocation after init.**
|
||||
|
||||
Formatting source of truth: `Tools/astyle/astylerc`. Run `make format` to fix formatting project-wide, or `Tools/astyle/fix_code_style.sh <file>` for a single file.
|
||||
|
||||
## In-Source Documentation
|
||||
|
||||
PX4 developers are encouraged to create appropriate in-source documentation.
|
||||
|
||||
@@ -39,6 +39,15 @@ Navigate into the **PX4-Autopilot** directory and start [Gazebo SITL](../sim_gaz
|
||||
make px4_sitl gz_x500
|
||||
```
|
||||
|
||||
::: details If you installed Gazebo Classic
|
||||
Start [Gazebo Classic SITL](../sim_gazebo_classic/index.md) using the following command:
|
||||
|
||||
```sh
|
||||
make px4_sitl gazebo-classic
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
This will bring up the PX4 console:
|
||||
|
||||

|
||||
@@ -79,16 +88,6 @@ cd PX4-Autopilot
|
||||
make px4_fmu-v5_default
|
||||
```
|
||||
|
||||
:::tip
|
||||
You can also build using the [px4-dev Docker container](../test_and_ci/docker.md) without installing the toolchain locally.
|
||||
From the PX4-Autopilot directory:
|
||||
|
||||
```sh
|
||||
./Tools/docker_run.sh 'make px4_fmu-v5_default'
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
A successful run will end with similar output to:
|
||||
|
||||
```sh
|
||||
@@ -127,8 +126,7 @@ The following list shows the build commands for the [Pixhawk standard](../flight
|
||||
- [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default`
|
||||
|
||||
:::warning
|
||||
You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build.
|
||||
Building with an unsupported GCC may fail, as PX4 is close to the board's 1MB flash limit.
|
||||
You **must** use a supported version of GCC to build this board (e.g. the same as used by [CI/docker](../test_and_ci/docker.md)) or remove modules from the build. Building with an unsupported GCC may fail, as PX4 is close to the board's 1MB flash limit.
|
||||
:::
|
||||
|
||||
- Pixhawk 1 with 2 MB flash: `make px4_fmu-v3_default`
|
||||
@@ -193,7 +191,7 @@ The `region 'flash' overflowed by XXXX bytes` error indicates that the firmware
|
||||
This is common for `make px4_fmu-v2_default` builds, where the flash size is limited to 1MB.
|
||||
|
||||
If you're building the _vanilla_ master branch, the most likely cause is using an unsupported version of GCC.
|
||||
In this case, install the `gcc-arm-none-eabi` package from the current Ubuntu LTS as described in the [Developer Toolchain](../dev_setup/dev_env.md) instructions.
|
||||
In this case, install the version specified in the [Developer Toolchain](../dev_setup/dev_env.md) instructions.
|
||||
|
||||
If building your own branch, it is possible that you have increased the firmware size over the 1MB limit.
|
||||
In this case you will need to remove any drivers/modules that you don't need from the build.
|
||||
@@ -206,7 +204,7 @@ The PX4 build system opens a large number of files, so you may exceed this numbe
|
||||
The build toolchain will then report `Too many open files` for many files, as shown below:
|
||||
|
||||
```sh
|
||||
arm-none-eabi-ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files
|
||||
/usr/local/Cellar/gcc-arm-none-eabi/20171218/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files
|
||||
```
|
||||
|
||||
The solution is to increase the maximum allowed number of open files (e.g. to 300).
|
||||
@@ -229,9 +227,34 @@ xcode-select --install
|
||||
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
|
||||
```
|
||||
|
||||
### Ubuntu 18.04: Compile errors involving arm_none_eabi_gcc
|
||||
|
||||
Build issues related to `arm_none_eabi_gcc`may be due to a broken g++ toolchain installation.
|
||||
You can verify that this is the case by checking for missing dependencies using:
|
||||
|
||||
```sh
|
||||
arm-none-eabi-gcc --version
|
||||
arm-none-eabi-g++ --version
|
||||
arm-none-eabi-gdb --version
|
||||
arm-none-eabi-size --version
|
||||
```
|
||||
|
||||
Example of bash output with missing dependencies:
|
||||
|
||||
```sh
|
||||
arm-none-eabi-gdb --version
|
||||
arm-none-eabi-gdb: command not found
|
||||
```
|
||||
|
||||
This can be resolved by removing and [reinstalling the compiler](https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa).
|
||||
|
||||
### Ubuntu 18.04: Visual Studio Code is unable to watch for file changes in this large workspace
|
||||
|
||||
See [Visual Studio Code IDE (VSCode) > Troubleshooting](../dev_setup/vscode.md#troubleshooting).
|
||||
|
||||
### Failed to import Python packages
|
||||
|
||||
"Failed to import" errors when running the `make px4_sitl gz_x500` command indicates that some Python packages are not installed (where expected).
|
||||
"Failed to import" errors when running the `make px4_sitl jmavsim` command indicates that some Python packages are not installed (where expected).
|
||||
|
||||
```sh
|
||||
Failed to import jinja2: No module named 'jinja2'
|
||||
@@ -239,12 +262,12 @@ You may need to install it using:
|
||||
pip3 install --user jinja2
|
||||
```
|
||||
|
||||
If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain.
|
||||
If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 Python 3.8.3), and the module is not present in the version used by the build toolchain.
|
||||
|
||||
You should be able to fix this by installing the dependencies from the repository's requirements file:
|
||||
You should be able to fix this by explicitly installing the dependencies as shown:
|
||||
|
||||
```sh
|
||||
pip3 install --user -r Tools/setup/requirements.txt
|
||||
pip3 install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging
|
||||
```
|
||||
|
||||
## PX4 Make Build Targets
|
||||
|
||||
@@ -20,7 +20,7 @@ The equipment below is highly recommended:
|
||||
:::
|
||||
- Lenovo Thinkpad with i5-core running Windows 11
|
||||
- MacBook Pro (early 2015 and later) with macOS 10.15 or later
|
||||
- Lenovo Thinkpad i5 with Ubuntu Linux 22.04 or later
|
||||
- Lenovo Thinkpad i5 with Ubuntu Linux 20.04 or later
|
||||
|
||||
- **Ground control station** (computer or tablet):
|
||||
- iPad (may require Wifi telemetry adapter)
|
||||
@@ -39,9 +39,9 @@ Install the [QGroundControl Daily Build](../dev_setup/qgc_daily_build.md) for a
|
||||
To configure the vehicle:
|
||||
|
||||
1. [Install PX4 firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware) (including "custom" firmware with your own changes).
|
||||
2. [Start with the airframe](../config/airframe.md) that best-matches your vehicle from the [airframe reference](../airframes/airframe_reference.md).
|
||||
3. [Basic Configuration](../config/index.md) explains how to perform basic configuration.
|
||||
4. [Parameter Configuration](../advanced_config/parameters.md) explains how you can find and modify individual parameters.
|
||||
1. [Start with the airframe](../config/airframe.md) that best-matches your vehicle from the [airframe reference](../airframes/airframe_reference.md).
|
||||
1. [Basic Configuration](../config/index.md) explains how to perform basic configuration.
|
||||
1. [Parameter Configuration](../advanced_config/parameters.md) explains how you can find and modify individual parameters.
|
||||
|
||||
::: info
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
The _supported platforms_ for PX4 development are:
|
||||
|
||||
- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md)
|
||||
- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended
|
||||
- [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2
|
||||
- [macOS](../dev_setup/dev_env_mac.md)
|
||||
|
||||
@@ -15,9 +15,9 @@ The table below shows what PX4 targets you can build on each OS.
|
||||
| **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ |
|
||||
| **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | |
|
||||
| **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ |
|
||||
| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ |
|
||||
| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ |
|
||||
| **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ |
|
||||
| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | | ✓ | ✓ |
|
||||
| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | | | ✓ |
|
||||
|
||||
Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md)
|
||||
|
||||
|
||||
@@ -39,9 +39,8 @@ You may want to also install `python-pip` and `screen`.
|
||||
Execute the script below to install GCC 7-2017-q4:
|
||||
|
||||
:::warning
|
||||
This version of GCC is very outdated.
|
||||
PX4 now uses the `gcc-arm-none-eabi` package from the current Ubuntu LTS (GCC 13.2.1 on Ubuntu 24.04).
|
||||
This CentOS guide is community-maintained and may not produce working builds.
|
||||
This version of GCC is out of date.
|
||||
At time of writing the current version on Ubuntu is `9-2020-q2-update` (see [focal nuttx docker file](https://github.com/PX4/PX4-containers/blob/master/docker/Dockerfile_nuttx-focal#L28))
|
||||
:::
|
||||
|
||||
```sh
|
||||
|
||||
@@ -4,14 +4,20 @@ The following instructions use a bash script to set up the PX4 development envir
|
||||
|
||||
The environment includes:
|
||||
|
||||
- [Gazebo Simulator](../sim_gazebo_gz/index.md) (Gazebo Harmonic)
|
||||
- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards) using the `gcc-arm-none-eabi` compiler from the Ubuntu package manager.
|
||||
- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic")
|
||||
- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards).
|
||||
|
||||
On Ubuntu 22.04:
|
||||
|
||||
- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo.
|
||||
Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases.
|
||||
|
||||
The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below.
|
||||
|
||||
::: info
|
||||
PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported.
|
||||
Older Ubuntu versions are not supported and may not work.
|
||||
::: details Can I use an older version of Ubuntu?
|
||||
PX4 supports the current and last Ubuntu LTS release where possible.
|
||||
Older releases are not supported (so you can't raise defects against them), but may still work.
|
||||
For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts.
|
||||
:::
|
||||
|
||||
## Simulation and NuttX (Pixhawk) Targets
|
||||
@@ -44,18 +50,19 @@ To install the toolchain:
|
||||
- Acknowledge any prompts as the script progress.
|
||||
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
||||
|
||||
3. Restart the computer on completion.
|
||||
3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation).
|
||||
|
||||
4. Restart the computer on completion.
|
||||
|
||||
:::details Additional notes
|
||||
These notes are provided "for information only":
|
||||
|
||||
- This setup is supported by the PX4 Dev Team.
|
||||
The instructions may also work on other Debian Linux based systems.
|
||||
- You can verify the NuttX installation by confirming `gcc` is available.
|
||||
The version depends on your Ubuntu release (e.g. GCC 13.2.1 on Ubuntu 24.04):
|
||||
- You can verify the NuttX installation by confirming the `gcc` version as shown:
|
||||
|
||||
```sh
|
||||
$ arm-none-eabi-gcc --version
|
||||
$arm-none-eabi-gcc --version
|
||||
|
||||
arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009
|
||||
Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
|
||||
@@ -1,119 +1,111 @@
|
||||
# macOS Development Environment
|
||||
|
||||
The following instructions set up a PX4 development environment on macOS.
|
||||
The following instructions set up a PX4 development environment for macOS.
|
||||
This environment can be used to build PX4 for:
|
||||
|
||||
- Pixhawk and other NuttX-based hardware
|
||||
- [Gazebo Simulation](../sim_gazebo_gz/index.md) (Gazebo Harmonic)
|
||||
|
||||
It works on both Intel and Apple Silicon Macs.
|
||||
- [Gazebo Classic Simulation](../sim_gazebo_classic/index.md)
|
||||
|
||||
:::tip
|
||||
This setup is supported by the PX4 dev team.
|
||||
To build for [other targets](../dev_setup/dev_env.md#supported-targets) you will need to use a [different OS](../dev_setup/dev_env.md#supported-targets) or an [unsupported development environment](../advanced/community_supported_dev_env.md).
|
||||
To build other targets you will need to use a [different OS](../dev_setup/dev_env.md#supported-targets) (or an [unsupported development environment](../advanced/community_supported_dev_env.md)).
|
||||
:::
|
||||
|
||||
## Development Environment Setup
|
||||
## Video Guide
|
||||
|
||||
### Prerequisites
|
||||
<lite-youtube videoid="tMbMGiMs1cQ" title="Setting up your PX4 development environment on macOS"/>
|
||||
|
||||
1. **Install Xcode Command Line Tools** — provides `git`, `make`, and the Apple `clang` compiler:
|
||||
## Base Setup
|
||||
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
The "base" macOS setup installs the tools needed for building firmware, and includes the common tools that will be needed for installing/using the simulators.
|
||||
|
||||
2. **Install Homebrew** by following the [installation instructions](https://brew.sh).
|
||||
### Environment Setup
|
||||
|
||||
3. **Increase the open-file limit.** The PX4 build opens many files simultaneously and the macOS default limit (256) is too low — you may see `"LD: too many open files"` errors without this.
|
||||
:::details Apple Silicon MacBook users!
|
||||
If you have an Apple M1, M2 etc. MacBook, make sure to run the terminal as x86 by setting up an x86 terminal:
|
||||
|
||||
Add the following line to your shell startup file so it applies to every new terminal session.
|
||||
macOS defaults to **zsh** since Catalina, so add it to `~/.zshrc` (use `~/.bashrc` if you use bash):
|
||||
|
||||
```sh
|
||||
echo "ulimit -S -n 2048" >> ~/.zshrc
|
||||
```
|
||||
|
||||
Then **open a new terminal** (or run `source ~/.zshrc`) for the change to take effect.
|
||||
|
||||
4. **Ensure Python 3 is available.** Some PX4 build scripts require `python3` and `pip3` to be in your `PATH`. The Xcode Command Line Tools include Python 3 by default.
|
||||
|
||||
:::tip
|
||||
If you need to install or manage a different Python version, we recommend [pyenv](https://github.com/pyenv/pyenv), which lets you set global and per-directory Python versions.
|
||||
1. Locate the Terminal application within the Utilities folder (**Finder > Go menu > Utilities**)
|
||||
2. Select _Terminal.app_ and right-click on it, then choose **Duplicate**.
|
||||
3. Rename the duplicated Terminal app, e.g. to _x86 Terminal_
|
||||
4. Now select the renamed _x86 Terminal_ app and right-click and choose \*_Get Info_
|
||||
5. Check the box for **Open using Rosetta**, then close the window
|
||||
6. Run the _x86 Terminal_ as usual, which will fully support the current PX4 toolchain
|
||||
:::
|
||||
|
||||
### Install Development Tools
|
||||
First set up the environment
|
||||
|
||||
1. **Download PX4 Source Code:**
|
||||
1. Enable more open files by appending the following line to the `~/.zshenv` file (creating it if necessary):
|
||||
|
||||
```sh
|
||||
git clone https://github.com/PX4/PX4-Autopilot.git
|
||||
cd PX4-Autopilot
|
||||
git submodule update --init --recursive --force
|
||||
echo ulimit -S -n 2048 >> ~/.zshenv
|
||||
```
|
||||
|
||||
2. **Install development environment libraries** from the [macos.sh](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/macos.sh) helper script:
|
||||
|
||||
```sh
|
||||
./Tools/setup/macos.sh --sim-tools
|
||||
```
|
||||
|
||||
This installs:
|
||||
- **`px4-dev`** — ARM cross-compiler (`arm-gcc-bin@13`), `cmake`, `ninja`, `ccache`, and other build tools
|
||||
- **Python packages** from `requirements.txt`
|
||||
- **`px4-sim`** (via `--sim-tools`) — Gazebo Harmonic simulation (`gz-harmonic`) and related tools
|
||||
|
||||
::: info
|
||||
Omit `--sim-tools` if you only need to build for NuttX hardware and don't need simulation.
|
||||
|
||||
Use `--reinstall` to force reinstallation of all Homebrew formulas (useful if something is broken).
|
||||
If you don't do this, the build toolchain may report the error: `"LD: too many open files"`
|
||||
:::
|
||||
|
||||
### Gazebo Simulation
|
||||
1. Enforce Python 3 by appending the following lines to `~/.zshenv`
|
||||
|
||||
The `--sim-tools` flag installs the `px4-sim` Homebrew formula, which pulls in Gazebo Harmonic.
|
||||
```sh
|
||||
# Point pip3 to macOS system python 3 pip
|
||||
alias pip3=/usr/bin/pip3
|
||||
```
|
||||
|
||||
If you skipped `--sim-tools` during initial setup and want to add simulation later:
|
||||
### Common Tools
|
||||
|
||||
```sh
|
||||
brew tap PX4/px4
|
||||
brew install px4-sim
|
||||
```
|
||||
To setup the environment to be able to build for Pixhawk/NuttX hardware (and install the common tools for using simulators):
|
||||
|
||||
::: info
|
||||
Gazebo requires **XQuartz** for display on macOS.
|
||||
If you don't already have it installed:
|
||||
1. Install Homebrew by following these [installation instructions](https://brew.sh).
|
||||
1. Run these commands in your shell to install the common tools:
|
||||
|
||||
```sh
|
||||
brew install --cask xquartz
|
||||
```
|
||||
```sh
|
||||
brew tap PX4/px4
|
||||
brew install px4-dev
|
||||
```
|
||||
|
||||
You may need to log out and back in after installing XQuartz.
|
||||
:::
|
||||
1. Install the required Python packages:
|
||||
|
||||
### Verify Installation
|
||||
```sh
|
||||
# install required packages using pip3
|
||||
python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema
|
||||
# if this fails with a permissions error, your Python install is in a system path - use this command instead:
|
||||
sudo -H python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema
|
||||
```
|
||||
|
||||
After installation, verify the key tools are available:
|
||||
## Gazebo Classic Simulation
|
||||
|
||||
```sh
|
||||
# NuttX cross-compiler (from arm-gcc-bin@13)
|
||||
arm-none-eabi-gcc --version
|
||||
To setup the environment for [Gazebo Classic](../sim_gazebo_classic/index.md) simulation:
|
||||
|
||||
# Build tools
|
||||
cmake --version
|
||||
ninja --version
|
||||
1. Run the following commands in your shell:
|
||||
|
||||
# Gazebo (if --sim-tools was used)
|
||||
gz sim --versions
|
||||
```
|
||||
```sh
|
||||
brew unlink tbb
|
||||
sed -i.bak '/disable! date:/s/^/ /; /disable! date:/s/./#/3' $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula/tbb@2020.rb
|
||||
brew install tbb@2020
|
||||
brew link tbb@2020
|
||||
```
|
||||
|
||||
Quick smoke test — build and run a simulation target:
|
||||
::: info
|
||||
September 2021: The commands above are a workaround to this bug: [PX4-Autopilot#17644](https://github.com/PX4/PX4-Autopilot/issues/17644).
|
||||
They can be removed once it is fixed (along with this note).
|
||||
:::
|
||||
|
||||
```sh
|
||||
make px4_sitl gz_x500
|
||||
```
|
||||
1. To install SITL simulation with Gazebo Classic:
|
||||
|
||||
If everything is set up correctly, this will build PX4 SITL and launch a Gazebo simulation with the x500 quadcopter.
|
||||
```sh
|
||||
brew install --cask temurin
|
||||
brew install --cask xquartz
|
||||
brew install px4-sim-gazebo
|
||||
```
|
||||
|
||||
1. Run the macOS setup script: `PX4-Autopilot/Tools/setup/macos.sh`
|
||||
The easiest way to do this is to clone the PX4 source, and then run the script from the directory, as shown:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
||||
cd PX4-Autopilot/Tools/setup
|
||||
sh macos.sh
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
@@ -122,7 +114,7 @@ Once you have finished setting up the command-line toolchain:
|
||||
- Install [VSCode](../dev_setup/vscode.md) (if you prefer using an IDE to the command line).
|
||||
- Install the [QGroundControl Daily Build](../dev_setup/qgc_daily_build.md)
|
||||
|
||||
::: tip
|
||||
:::tip
|
||||
The _daily build_ includes development tools that are hidden in release builds.
|
||||
It may also provide access to new PX4 features that are not yet supported in release builds.
|
||||
:::
|
||||
|
||||
@@ -58,20 +58,20 @@ To install WSL2 with Ubuntu on a new installation of Windows 10 or 11:
|
||||
wsl --install
|
||||
```
|
||||
|
||||
- Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md))
|
||||
|
||||
```sh
|
||||
wsl --install -d Ubuntu-20.04
|
||||
```
|
||||
|
||||
- Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md))
|
||||
|
||||
```sh
|
||||
wsl --install -d Ubuntu-22.04
|
||||
```
|
||||
|
||||
- Ubuntu 24.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md))
|
||||
|
||||
```sh
|
||||
wsl --install -d Ubuntu-24.04
|
||||
```
|
||||
|
||||
::: info
|
||||
You can also [Ubuntu 24.04](https://www.microsoft.com/store/productId/9nz3klhxdjp5) or [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from Microsoft Store, which allows you to delete the application using the normal Windows Add/Remove settings.
|
||||
You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings:
|
||||
:::
|
||||
|
||||
1. WSL will prompt you for a user name and password for the Ubuntu installation.
|
||||
@@ -106,7 +106,7 @@ To open a WSL shell using a command prompt:
|
||||
```
|
||||
|
||||
```sh
|
||||
wsl -d Ubuntu-24.04
|
||||
wsl -d Ubuntu-20.04
|
||||
```
|
||||
|
||||
If you only have one version of Ubuntu, you can just use `wsl`.
|
||||
|
||||
@@ -124,10 +124,10 @@ Once that is done you don't need to do anything else; the toolchain will automat
|
||||
|
||||
This section includes guidance on setup and build errors.
|
||||
|
||||
### "Visual Studio Code is unable to watch for file changes in this large workspace"
|
||||
### Ubuntu 18.04: "Visual Studio Code is unable to watch for file changes in this large workspace"
|
||||
|
||||
This error surfaces on startup.
|
||||
On some systems, there is an upper-limit on file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`.
|
||||
On some systems, there is an upper-limit of 8192 file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`.
|
||||
|
||||
You can increase this limit to avoid the error, at the expense of memory consumption.
|
||||
Follow the [instructions here](https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc).
|
||||
|
||||
@@ -281,19 +281,6 @@ PX4 DroneCAN parameters:
|
||||
Select the specific CAN interface(s) used for ESC data output using the [UAVCAN_ESC_IFACE](../advanced_config/parameter_reference.md#UAVCAN_ESC_IFACE) parameter (all that all interfaces are selected by default).
|
||||
Note that DroneCAN ESCs should be on their own dedicated CAN interface(s) because ESC messages can saturate the bus and starve other nodes of bandwidth.
|
||||
|
||||
### Lights
|
||||
|
||||
PX4 can control LEDs via DroneCAN [LightsCommand](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#lightscommand) messages.
|
||||
|
||||
Configuration:
|
||||
|
||||
1. Set [UAVCAN_LGT_NUM](../advanced_config/parameter_reference.md#UAVCAN_LGT_NUM) to the number of lights (0 disables). You might need to reopen the ground station to have parameters for new instances available.
|
||||
2. For each light slot (0 to NUM-1), set:
|
||||
- `UAVCAN_LGT_IDx`: The `light_id` matching your peripheral.
|
||||
- `UAVCAN_LGT_FNx`: `Status` for system status colours, or `Anti-collision` for white beacon.
|
||||
3. For anti-collision lights, [UAVCAN_LGT_ANTCL](../advanced_config/parameter_reference.md#UAVCAN_LGT_ANTCL) controls when they illuminate (off, armed, prearmed, always on).
|
||||
4. Reboot for any changes to take effect.
|
||||
|
||||
## QGC CANNODE Parameter Configuration
|
||||
|
||||
QGroundControl can inspect and modify parameters belonging to CAN devices attached to the flight controller, provided the device are connected to the flight controller before QGC is started.
|
||||
|
||||
@@ -85,7 +85,6 @@ The vehicle always respects normal FW max/min throttle settings during takeoff (
|
||||
In _catapult/hand-launch mode_ the vehicle waits to detect launch (based on acceleration trigger).
|
||||
On launch it enables the motor(s) and climbs with the maximum climb rate [FW_T_CLMB_MAX](#FW_T_CLMB_MAX) while keeping the pitch setpoint above [FW_TKO_PITCH_MIN](#FW_TKO_PITCH_MIN).
|
||||
Once it reaches [MIS_TAKEOFF_ALT](#MIS_TAKEOFF_ALT) it will automatically switch to [Hold mode](../flight_modes_fw/hold.md) and loiter.
|
||||
It is possible to delay the activation of the motors and control surfaces separately, see parameters [FW_LAUN_MOT_DEL](#FW_LAUN_MOT_DEL), [FW_LAUN_CS_LK_DY](#FW_LAUN_CS_LK_DY) and [CA_CS_LAUN_LK](#CA_CS_LAUN_LK). The later is also exposed in the actuator configuration page under the advanced view.
|
||||
|
||||
All RC stick movement is ignored during the full takeoff sequence.
|
||||
|
||||
@@ -106,8 +105,6 @@ The _launch detector_ is affected by the following parameters:
|
||||
| <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 |
|
||||
|
||||
## Runway Takeoff {#runway_launch}
|
||||
|
||||
|
||||
@@ -126,11 +126,7 @@ The following parameters also affect preflight checks.
|
||||
|
||||
#### COM_ARM_WO_GPS
|
||||
|
||||
The [COM_ARM_WO_GPS](../advanced_config/parameter_reference.md#COM_ARM_WO_GPS) parameter controls whether or not arming is allowed in modes that require a valid global position estimate when EKF2 GNSS quality checks are failing.
|
||||
The [COM_ARM_WO_GPS](../advanced_config/parameter_reference.md#COM_ARM_WO_GPS) parameter controls whether or not arming is allowed without a global position estimate.
|
||||
|
||||
The values are:
|
||||
|
||||
- `0`: Deny arming.
|
||||
- `1`: Arming allowed with warning (default).
|
||||
This might be used to provide a warning that the GNSS is unhealthy even when there is another source of valid position estimate, such as VIO or optical flow.
|
||||
- `2`: Arming allowed without warnings.
|
||||
- `1` (default): Arming _is_ allowed without a position estimate for flight modes that do not require position information (only).
|
||||
- `0`: Arming is allowed only if EKF is providing a global position estimate and EFK GPS quality checks are passing
|
||||
|
||||
+185
-186
@@ -94,200 +94,199 @@ They are not build into the module, and hence are neither published or subscribe
|
||||
|
||||
::: details See messages
|
||||
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
:::
|
||||
|
||||
@@ -98,56 +98,13 @@ leddar_one <command> [arguments...]
|
||||
stop Stop driver
|
||||
```
|
||||
|
||||
## lightware_grf_serial
|
||||
|
||||
Source: [drivers/distance_sensor/lightware_grf_serial](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_grf_serial)
|
||||
|
||||
### Description
|
||||
|
||||
Serial bus driver for the Lightware GRF Laser rangefinder.
|
||||
|
||||
### Configuration
|
||||
|
||||
https://docs.px4.io/main/en/sensor/grf_lidar
|
||||
|
||||
### Parameters
|
||||
|
||||
https://docs.px4.io/main/en/advanced_config/parameter_reference#GRF_SENS_MODEL
|
||||
https://docs.px4.io/main/en/advanced_config/parameter_reference#GRF_RATE_CFG
|
||||
https://docs.px4.io/main/en/advanced_config/parameter_reference#SENS_EN_GRF_CFG
|
||||
|
||||
### Examples
|
||||
|
||||
Attempt to start driver on a specified serial device.
|
||||
|
||||
```
|
||||
lightware_grf_serial start -d /dev/ttyS1
|
||||
```
|
||||
|
||||
Stop driver
|
||||
|
||||
```
|
||||
lightware_grf_serial stop
|
||||
```
|
||||
|
||||
### Usage {#lightware_grf_serial_usage}
|
||||
|
||||
```
|
||||
lightware_grf_serial <command> [arguments...]
|
||||
Commands:
|
||||
start Start driver
|
||||
-d <val> Serial device
|
||||
|
||||
stop Stop driver
|
||||
```
|
||||
|
||||
## lightware_laser_i2c
|
||||
|
||||
Source: [drivers/distance_sensor/lightware_laser_i2c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_i2c)
|
||||
|
||||
### Description
|
||||
|
||||
I2C bus driver for Lightware LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20, SF/LW30/d, GRF250, GRF500.
|
||||
I2C bus driver for Lightware SFxx series LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20, SF30/d.
|
||||
|
||||
Setup/usage information: https://docs.px4.io/main/en/sensor/sfxx_lidar.html
|
||||
|
||||
@@ -165,6 +122,8 @@ lightware_laser_i2c <command> [arguments...]
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-a <val>] I2C address
|
||||
default: 102
|
||||
[-R <val>] Sensor rotation - downward facing by default
|
||||
default: 25
|
||||
|
||||
stop
|
||||
|
||||
|
||||
@@ -10,11 +10,10 @@ Status of the launch detection state machine (fixed-wing only).
|
||||
|
||||
## Fields
|
||||
|
||||
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
||||
| --------------------------------- | -------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| timestamp | `uint64` | | | time since system start (microseconds) |
|
||||
| launch_detection_state | `uint8` | | |
|
||||
| selected_control_surface_disarmed | `bool` | | | flag indicating whether selected actuators should kept disarmed (have to be configured in control allocation) |
|
||||
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
||||
| ---------------------- | -------- | ------------ | ---------- | -------------------------------------- |
|
||||
| timestamp | `uint64` | | | time since system start (microseconds) |
|
||||
| launch_detection_state | `uint8` | | |
|
||||
|
||||
## Constants
|
||||
|
||||
@@ -40,8 +39,6 @@ uint8 STATE_LAUNCH_DETECTED_DISABLED_MOTOR = 1 # launch detected, but keep moto
|
||||
uint8 STATE_FLYING = 2 # launch detected, use normal takeoff/flying configuration
|
||||
|
||||
uint8 launch_detection_state
|
||||
|
||||
bool selected_control_surface_disarmed # [-] flag indicating whether selected actuators should kept disarmed (have to be configured in control allocation)
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
@@ -36,7 +36,6 @@ pageClass: is-wide-page
|
||||
| heartbeat_type_onboard_controller | `bool` | | | MAV_TYPE_ONBOARD_CONTROLLER |
|
||||
| heartbeat_type_gimbal | `bool` | | | MAV_TYPE_GIMBAL |
|
||||
| heartbeat_type_adsb | `bool` | | | MAV_TYPE_ADSB |
|
||||
| heartbeat_type_flarm | `bool` | | | MAV_TYPE_FLARM |
|
||||
| heartbeat_type_camera | `bool` | | | MAV_TYPE_CAMERA |
|
||||
| heartbeat_type_parachute | `bool` | | | MAV_TYPE_PARACHUTE |
|
||||
| heartbeat_type_open_drone_id | `bool` | | | MAV_TYPE_ODID |
|
||||
@@ -113,7 +112,6 @@ bool heartbeat_type_gcs # MAV_TYPE_GCS
|
||||
bool heartbeat_type_onboard_controller # MAV_TYPE_ONBOARD_CONTROLLER
|
||||
bool heartbeat_type_gimbal # MAV_TYPE_GIMBAL
|
||||
bool heartbeat_type_adsb # MAV_TYPE_ADSB
|
||||
bool heartbeat_type_flarm # MAV_TYPE_FLARM
|
||||
bool heartbeat_type_camera # MAV_TYPE_CAMERA
|
||||
bool heartbeat_type_parachute # MAV_TYPE_PARACHUTE
|
||||
bool heartbeat_type_open_drone_id # MAV_TYPE_ODID
|
||||
|
||||
@@ -10,55 +10,53 @@ Encodes the system state of the vehicle published by commander.
|
||||
|
||||
## Fields
|
||||
|
||||
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
||||
| -------------------------------- | -------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------- |
|
||||
| timestamp | `uint64` | | | time since system start (microseconds) |
|
||||
| armed_time | `uint64` | | | Arming timestamp (microseconds) |
|
||||
| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) |
|
||||
| arming_state | `uint8` | | |
|
||||
| latest_arming_reason | `uint8` | | |
|
||||
| latest_disarming_reason | `uint8` | | |
|
||||
| nav_state_timestamp | `uint64` | | | time when current nav_state activated |
|
||||
| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) |
|
||||
| nav_state | `uint8` | | | Currently active mode |
|
||||
| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) |
|
||||
| nav_state_display | `uint8` | | | User-visible nav state sent via MAVLink (executor state if active, otherwise nav_state) |
|
||||
| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values |
|
||||
| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select |
|
||||
| failure_detector_status | `uint16` | | |
|
||||
| hil_state | `uint8` | | |
|
||||
| vehicle_type | `uint8` | | |
|
||||
| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) |
|
||||
| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control |
|
||||
| failsafe_defer_state | `uint8` | | | one of FAILSAFE*DEFER_STATE*\* |
|
||||
| gcs_connection_lost | `bool` | | | datalink to GCS lost |
|
||||
| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events |
|
||||
| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost |
|
||||
| is_vtol | `bool` | | | True if the system is VTOL capable |
|
||||
| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW |
|
||||
| in_transition_mode | `bool` | | | True if VTOL is doing a transition |
|
||||
| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW |
|
||||
| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE |
|
||||
| system_id | `uint8` | | | system id, contains MAVLink's system ID field |
|
||||
| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field |
|
||||
| safety_button_available | `bool` | | | Set to true if a safety button is connected |
|
||||
| safety_off | `bool` | | | Set to true if safety is off |
|
||||
| power_input_valid | `bool` | | | set if input power is valid |
|
||||
| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link |
|
||||
| open_drone_id_system_present | `bool` | | |
|
||||
| open_drone_id_system_healthy | `bool` | | |
|
||||
| parachute_system_present | `bool` | | |
|
||||
| parachute_system_healthy | `bool` | | |
|
||||
| traffic_avoidance_system_present | `bool` | | |
|
||||
| rc_calibration_in_progress | `bool` | | |
|
||||
| calibration_enabled | `bool` | | |
|
||||
| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass |
|
||||
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
||||
| ---------------------------- | -------- | ------------ | ---------- | ----------------------------------------------------------------------------------------------- |
|
||||
| timestamp | `uint64` | | | time since system start (microseconds) |
|
||||
| armed_time | `uint64` | | | Arming timestamp (microseconds) |
|
||||
| takeoff_time | `uint64` | | | Takeoff timestamp (microseconds) |
|
||||
| arming_state | `uint8` | | |
|
||||
| latest_arming_reason | `uint8` | | |
|
||||
| latest_disarming_reason | `uint8` | | |
|
||||
| nav_state_timestamp | `uint64` | | | time when current nav_state activated |
|
||||
| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) |
|
||||
| nav_state | `uint8` | | | Currently active mode |
|
||||
| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) |
|
||||
| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values |
|
||||
| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select |
|
||||
| failure_detector_status | `uint16` | | |
|
||||
| hil_state | `uint8` | | |
|
||||
| vehicle_type | `uint8` | | |
|
||||
| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) |
|
||||
| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control |
|
||||
| failsafe_defer_state | `uint8` | | | one of FAILSAFE*DEFER_STATE*\* |
|
||||
| gcs_connection_lost | `bool` | | | datalink to GCS lost |
|
||||
| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events |
|
||||
| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost |
|
||||
| is_vtol | `bool` | | | True if the system is VTOL capable |
|
||||
| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW |
|
||||
| in_transition_mode | `bool` | | | True if VTOL is doing a transition |
|
||||
| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW |
|
||||
| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE |
|
||||
| system_id | `uint8` | | | system id, contains MAVLink's system ID field |
|
||||
| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field |
|
||||
| safety_button_available | `bool` | | | Set to true if a safety button is connected |
|
||||
| safety_off | `bool` | | | Set to true if safety is off |
|
||||
| power_input_valid | `bool` | | | set if input power is valid |
|
||||
| usb_connected | `bool` | | | set to true (never cleared) once telemetry received from usb link |
|
||||
| open_drone_id_system_present | `bool` | | |
|
||||
| open_drone_id_system_healthy | `bool` | | |
|
||||
| parachute_system_present | `bool` | | |
|
||||
| parachute_system_healthy | `bool` | | |
|
||||
| rc_calibration_in_progress | `bool` | | |
|
||||
| calibration_enabled | `bool` | | |
|
||||
| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass |
|
||||
|
||||
## Constants
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| ----------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------ |
|
||||
| <a href="#MESSAGE_VERSION"></a> MESSAGE_VERSION | `uint32` | 2 |
|
||||
| <a href="#MESSAGE_VERSION"></a> MESSAGE_VERSION | `uint32` | 1 |
|
||||
| <a href="#ARMING_STATE_DISARMED"></a> ARMING_STATE_DISARMED | `uint8` | 1 |
|
||||
| <a href="#ARMING_STATE_ARMED"></a> ARMING_STATE_ARMED | `uint8` | 2 |
|
||||
| <a href="#ARM_DISARM_REASON_STICK_GESTURE"></a> ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 |
|
||||
@@ -131,7 +129,7 @@ Encodes the system state of the vehicle published by commander.
|
||||
```c
|
||||
# Encodes the system state of the vehicle published by commander
|
||||
|
||||
uint32 MESSAGE_VERSION = 2
|
||||
uint32 MESSAGE_VERSION = 1
|
||||
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
|
||||
@@ -194,7 +192,6 @@ uint8 NAVIGATION_STATE_EXTERNAL8 = 30
|
||||
uint8 NAVIGATION_STATE_MAX = 31
|
||||
|
||||
uint8 executor_in_charge # Current mode executor in charge (0=Autopilot)
|
||||
uint8 nav_state_display # User-visible nav state sent via MAVLink (executor state if active, otherwise nav_state)
|
||||
|
||||
uint32 valid_nav_states_mask # Bitmask for all valid nav_state values
|
||||
uint32 can_set_nav_states_mask # Bitmask for all modes that a user can select
|
||||
@@ -258,8 +255,6 @@ bool open_drone_id_system_healthy
|
||||
bool parachute_system_present
|
||||
bool parachute_system_healthy
|
||||
|
||||
bool traffic_avoidance_system_present
|
||||
|
||||
bool rc_calibration_in_progress
|
||||
bool calibration_enabled
|
||||
|
||||
|
||||
@@ -1,286 +0,0 @@
|
||||
---
|
||||
pageClass: is-wide-page
|
||||
---
|
||||
|
||||
# VehicleStatusV1 (UORB message)
|
||||
|
||||
Encodes the system state of the vehicle published by commander.
|
||||
|
||||
**TOPICS:** vehicle_statusv1
|
||||
|
||||
## Fields
|
||||
|
||||
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
||||
| ---------------------------- | -------- | -------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||
| timestamp | `uint64` | us | | Time since system start |
|
||||
| armed_time | `uint64` | us | | Arming timestamp |
|
||||
| takeoff_time | `uint64` | us | | Takeoff timestamp |
|
||||
| arming_state | `uint8` | | |
|
||||
| latest_arming_reason | `uint8` | | |
|
||||
| latest_disarming_reason | `uint8` | | |
|
||||
| nav_state_timestamp | `uint64` | | | Time when current nav_state activated |
|
||||
| nav_state_user_intention | `uint8` | | | Mode that the user selected (might be different from nav_state in a failsafe situation) |
|
||||
| nav_state | `uint8` | | [NAVIGATION_STATE](#NAVIGATION_STATE) | Currently active mode |
|
||||
| executor_in_charge | `uint8` | | | Current mode executor in charge (0=Autopilot) |
|
||||
| valid_nav_states_mask | `uint32` | | | Bitmask for all valid nav_state values |
|
||||
| can_set_nav_states_mask | `uint32` | | | Bitmask for all modes that a user can select |
|
||||
| failure_detector_status | `uint16` | | [FAILURE](#FAILURE) |
|
||||
| hil_state | `uint8` | enum HIL_STATE | |
|
||||
| vehicle_type | `uint8` | | [VEHICLE_TYPE](#VEHICLE_TYPE) |
|
||||
| failsafe | `bool` | | | true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...) |
|
||||
| failsafe_and_user_took_over | `bool` | | | true if system is in failsafe state but the user took over control |
|
||||
| failsafe_defer_state | `uint8` | | [FAILSAFE_DEFER_STATE](#FAILSAFE_DEFER_STATE) |
|
||||
| gcs_connection_lost | `bool` | | | datalink to GCS lost |
|
||||
| gcs_connection_lost_counter | `uint8` | | | counts unique GCS connection lost events |
|
||||
| high_latency_data_link_lost | `bool` | | | Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost |
|
||||
| is_vtol | `bool` | | | True if the system is VTOL capable |
|
||||
| is_vtol_tailsitter | `bool` | | | True if the system performs a 90° pitch down rotation during transition from MC to FW |
|
||||
| in_transition_mode | `bool` | | | True if VTOL is doing a transition |
|
||||
| in_transition_to_fw | `bool` | | | True if VTOL is doing a transition from MC to FW |
|
||||
| system_type | `uint8` | | | system type, contains mavlink MAV_TYPE |
|
||||
| system_id | `uint8` | | | system id, contains MAVLink's system ID field |
|
||||
| component_id | `uint8` | | | subsystem / component id, contains MAVLink's component ID field |
|
||||
| safety_button_available | `bool` | | | Set to true if a safety button is connected |
|
||||
| safety_off | `bool` | | | Set to true if safety is off |
|
||||
| power_input_valid | `bool` | | | Set if input power is valid |
|
||||
| usb_connected | `bool` | | | Set to true (never cleared) once telemetry received from usb link |
|
||||
| open_drone_id_system_present | `bool` | | |
|
||||
| open_drone_id_system_healthy | `bool` | | |
|
||||
| parachute_system_present | `bool` | | |
|
||||
| parachute_system_healthy | `bool` | | |
|
||||
| rc_calibration_in_progress | `bool` | | |
|
||||
| calibration_enabled | `bool` | | |
|
||||
| pre_flight_checks_pass | `bool` | | | true if all checks necessary to arm pass |
|
||||
|
||||
## Enums
|
||||
|
||||
### NAVIGATION_STATE {#NAVIGATION_STATE}
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| --------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------- |
|
||||
| <a href="#NAVIGATION_STATE_MANUAL"></a> NAVIGATION_STATE_MANUAL | `uint8` | 0 | Manual mode |
|
||||
| <a href="#NAVIGATION_STATE_ALTCTL"></a> NAVIGATION_STATE_ALTCTL | `uint8` | 1 | Altitude control mode |
|
||||
| <a href="#NAVIGATION_STATE_POSCTL"></a> NAVIGATION_STATE_POSCTL | `uint8` | 2 | Position control mode |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_MISSION"></a> NAVIGATION_STATE_AUTO_MISSION | `uint8` | 3 | Auto mission mode |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_LOITER"></a> NAVIGATION_STATE_AUTO_LOITER | `uint8` | 4 | Auto loiter mode |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_RTL"></a> NAVIGATION_STATE_AUTO_RTL | `uint8` | 5 | Auto return to launch mode |
|
||||
| <a href="#NAVIGATION_STATE_POSITION_SLOW"></a> NAVIGATION_STATE_POSITION_SLOW | `uint8` | 6 |
|
||||
| <a href="#NAVIGATION_STATE_FREE5"></a> NAVIGATION_STATE_FREE5 | `uint8` | 7 |
|
||||
| <a href="#NAVIGATION_STATE_ALTITUDE_CRUISE"></a> NAVIGATION_STATE_ALTITUDE_CRUISE | `uint8` | 8 | Altitude with Cruise mode |
|
||||
| <a href="#NAVIGATION_STATE_FREE3"></a> NAVIGATION_STATE_FREE3 | `uint8` | 9 |
|
||||
| <a href="#NAVIGATION_STATE_ACRO"></a> NAVIGATION_STATE_ACRO | `uint8` | 10 | Acro mode |
|
||||
| <a href="#NAVIGATION_STATE_FREE2"></a> NAVIGATION_STATE_FREE2 | `uint8` | 11 |
|
||||
| <a href="#NAVIGATION_STATE_DESCEND"></a> NAVIGATION_STATE_DESCEND | `uint8` | 12 | Descend mode (no position control) |
|
||||
| <a href="#NAVIGATION_STATE_TERMINATION"></a> NAVIGATION_STATE_TERMINATION | `uint8` | 13 | Termination mode |
|
||||
| <a href="#NAVIGATION_STATE_OFFBOARD"></a> NAVIGATION_STATE_OFFBOARD | `uint8` | 14 |
|
||||
| <a href="#NAVIGATION_STATE_STAB"></a> NAVIGATION_STATE_STAB | `uint8` | 15 | Stabilized mode |
|
||||
| <a href="#NAVIGATION_STATE_FREE1"></a> NAVIGATION_STATE_FREE1 | `uint8` | 16 |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_TAKEOFF"></a> NAVIGATION_STATE_AUTO_TAKEOFF | `uint8` | 17 | Takeoff |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_LAND"></a> NAVIGATION_STATE_AUTO_LAND | `uint8` | 18 | Land |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_FOLLOW_TARGET"></a> NAVIGATION_STATE_AUTO_FOLLOW_TARGET | `uint8` | 19 | Auto Follow |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_PRECLAND"></a> NAVIGATION_STATE_AUTO_PRECLAND | `uint8` | 20 | Precision land with landing target |
|
||||
| <a href="#NAVIGATION_STATE_ORBIT"></a> NAVIGATION_STATE_ORBIT | `uint8` | 21 | Orbit in a circle |
|
||||
| <a href="#NAVIGATION_STATE_AUTO_VTOL_TAKEOFF"></a> NAVIGATION_STATE_AUTO_VTOL_TAKEOFF | `uint8` | 22 | Takeoff, transition, establish loiter |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL1"></a> NAVIGATION_STATE_EXTERNAL1 | `uint8` | 23 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL2"></a> NAVIGATION_STATE_EXTERNAL2 | `uint8` | 24 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL3"></a> NAVIGATION_STATE_EXTERNAL3 | `uint8` | 25 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL4"></a> NAVIGATION_STATE_EXTERNAL4 | `uint8` | 26 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL5"></a> NAVIGATION_STATE_EXTERNAL5 | `uint8` | 27 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL6"></a> NAVIGATION_STATE_EXTERNAL6 | `uint8` | 28 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL7"></a> NAVIGATION_STATE_EXTERNAL7 | `uint8` | 29 |
|
||||
| <a href="#NAVIGATION_STATE_EXTERNAL8"></a> NAVIGATION_STATE_EXTERNAL8 | `uint8` | 30 |
|
||||
| <a href="#NAVIGATION_STATE_MAX"></a> NAVIGATION_STATE_MAX | `uint8` | 31 |
|
||||
|
||||
### FAILURE {#FAILURE}
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| --------------------------------------------------------------- | -------- | ----- | ----------- |
|
||||
| <a href="#FAILURE_NONE"></a> FAILURE_NONE | `uint16` | 0 |
|
||||
| <a href="#FAILURE_ROLL"></a> FAILURE_ROLL | `uint16` | 1 | (1 << 0) |
|
||||
| <a href="#FAILURE_PITCH"></a> FAILURE_PITCH | `uint16` | 2 | (1 << 1) |
|
||||
| <a href="#FAILURE_ALT"></a> FAILURE_ALT | `uint16` | 4 | (1 << 2) |
|
||||
| <a href="#FAILURE_EXT"></a> FAILURE_EXT | `uint16` | 8 | (1 << 3) |
|
||||
| <a href="#FAILURE_ARM_ESC"></a> FAILURE_ARM_ESC | `uint16` | 16 | (1 << 4) |
|
||||
| <a href="#FAILURE_BATTERY"></a> FAILURE_BATTERY | `uint16` | 32 | (1 << 5) |
|
||||
| <a href="#FAILURE_IMBALANCED_PROP"></a> FAILURE_IMBALANCED_PROP | `uint16` | 64 | (1 << 6) |
|
||||
| <a href="#FAILURE_MOTOR"></a> FAILURE_MOTOR | `uint16` | 128 | (1 << 7) |
|
||||
|
||||
### VEHICLE_TYPE {#VEHICLE_TYPE}
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| ----------------------------------------------------------------- | ------- | ----- | ----------- |
|
||||
| <a href="#VEHICLE_TYPE_UNSPECIFIED"></a> VEHICLE_TYPE_UNSPECIFIED | `uint8` | 0 |
|
||||
| <a href="#VEHICLE_TYPE_ROTARY_WING"></a> VEHICLE_TYPE_ROTARY_WING | `uint8` | 1 |
|
||||
| <a href="#VEHICLE_TYPE_FIXED_WING"></a> VEHICLE_TYPE_FIXED_WING | `uint8` | 2 |
|
||||
| <a href="#VEHICLE_TYPE_ROVER"></a> VEHICLE_TYPE_ROVER | `uint8` | 3 |
|
||||
|
||||
### FAILSAFE_DEFER_STATE {#FAILSAFE_DEFER_STATE}
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| --------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------ |
|
||||
| <a href="#FAILSAFE_DEFER_STATE_DISABLED"></a> FAILSAFE_DEFER_STATE_DISABLED | `uint8` | 0 |
|
||||
| <a href="#FAILSAFE_DEFER_STATE_ENABLED"></a> FAILSAFE_DEFER_STATE_ENABLED | `uint8` | 1 |
|
||||
| <a href="#FAILSAFE_DEFER_STATE_WOULD_FAILSAFE"></a> FAILSAFE_DEFER_STATE_WOULD_FAILSAFE | `uint8` | 2 | Failsafes deferred, but would trigger a failsafe |
|
||||
|
||||
## Constants
|
||||
|
||||
| Name | Type | Value | Description |
|
||||
| ----------------------------------------------------------------------------------------- | -------- | ----- | ----------- |
|
||||
| <a href="#MESSAGE_VERSION"></a> MESSAGE_VERSION | `uint32` | 1 |
|
||||
| <a href="#ARMING_STATE_DISARMED"></a> ARMING_STATE_DISARMED | `uint8` | 1 |
|
||||
| <a href="#ARMING_STATE_ARMED"></a> ARMING_STATE_ARMED | `uint8` | 2 |
|
||||
| <a href="#ARM_DISARM_REASON_STICK_GESTURE"></a> ARM_DISARM_REASON_STICK_GESTURE | `uint8` | 1 |
|
||||
| <a href="#ARM_DISARM_REASON_RC_SWITCH"></a> ARM_DISARM_REASON_RC_SWITCH | `uint8` | 2 |
|
||||
| <a href="#ARM_DISARM_REASON_COMMAND_INTERNAL"></a> ARM_DISARM_REASON_COMMAND_INTERNAL | `uint8` | 3 |
|
||||
| <a href="#ARM_DISARM_REASON_COMMAND_EXTERNAL"></a> ARM_DISARM_REASON_COMMAND_EXTERNAL | `uint8` | 4 |
|
||||
| <a href="#ARM_DISARM_REASON_MISSION_START"></a> ARM_DISARM_REASON_MISSION_START | `uint8` | 5 |
|
||||
| <a href="#ARM_DISARM_REASON_LANDING"></a> ARM_DISARM_REASON_LANDING | `uint8` | 6 |
|
||||
| <a href="#ARM_DISARM_REASON_PREFLIGHT_INACTION"></a> ARM_DISARM_REASON_PREFLIGHT_INACTION | `uint8` | 7 |
|
||||
| <a href="#ARM_DISARM_REASON_KILL_SWITCH"></a> ARM_DISARM_REASON_KILL_SWITCH | `uint8` | 8 |
|
||||
| <a href="#ARM_DISARM_REASON_RC_BUTTON"></a> ARM_DISARM_REASON_RC_BUTTON | `uint8` | 13 |
|
||||
| <a href="#ARM_DISARM_REASON_FAILSAFE"></a> ARM_DISARM_REASON_FAILSAFE | `uint8` | 14 |
|
||||
| <a href="#HIL_STATE_OFF"></a> HIL_STATE_OFF | `uint8` | 0 |
|
||||
| <a href="#HIL_STATE_ON"></a> HIL_STATE_ON | `uint8` | 1 |
|
||||
|
||||
## Source Message
|
||||
|
||||
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/px4_msgs_old/msg/VehicleStatusV1.msg)
|
||||
|
||||
::: details Click here to see original file
|
||||
|
||||
```c
|
||||
# Encodes the system state of the vehicle published by commander
|
||||
|
||||
uint32 MESSAGE_VERSION = 1
|
||||
|
||||
uint64 timestamp # [us] Time since system start
|
||||
|
||||
uint64 armed_time # [us] Arming timestamp
|
||||
uint64 takeoff_time # [us] Takeoff timestamp
|
||||
|
||||
uint8 arming_state
|
||||
uint8 ARMING_STATE_DISARMED = 1
|
||||
uint8 ARMING_STATE_ARMED = 2
|
||||
|
||||
uint8 latest_arming_reason
|
||||
uint8 latest_disarming_reason
|
||||
uint8 ARM_DISARM_REASON_STICK_GESTURE = 1
|
||||
uint8 ARM_DISARM_REASON_RC_SWITCH = 2
|
||||
uint8 ARM_DISARM_REASON_COMMAND_INTERNAL = 3
|
||||
uint8 ARM_DISARM_REASON_COMMAND_EXTERNAL = 4
|
||||
uint8 ARM_DISARM_REASON_MISSION_START = 5
|
||||
uint8 ARM_DISARM_REASON_LANDING = 6
|
||||
uint8 ARM_DISARM_REASON_PREFLIGHT_INACTION = 7
|
||||
uint8 ARM_DISARM_REASON_KILL_SWITCH = 8
|
||||
uint8 ARM_DISARM_REASON_RC_BUTTON = 13
|
||||
uint8 ARM_DISARM_REASON_FAILSAFE = 14
|
||||
|
||||
uint64 nav_state_timestamp # Time when current nav_state activated
|
||||
|
||||
uint8 nav_state_user_intention # Mode that the user selected (might be different from nav_state in a failsafe situation)
|
||||
|
||||
uint8 nav_state # [@enum NAVIGATION_STATE] Currently active mode
|
||||
uint8 NAVIGATION_STATE_MANUAL = 0 # Manual mode
|
||||
uint8 NAVIGATION_STATE_ALTCTL = 1 # Altitude control mode
|
||||
uint8 NAVIGATION_STATE_POSCTL = 2 # Position control mode
|
||||
uint8 NAVIGATION_STATE_AUTO_MISSION = 3 # Auto mission mode
|
||||
uint8 NAVIGATION_STATE_AUTO_LOITER = 4 # Auto loiter mode
|
||||
uint8 NAVIGATION_STATE_AUTO_RTL = 5 # Auto return to launch mode
|
||||
uint8 NAVIGATION_STATE_POSITION_SLOW = 6
|
||||
uint8 NAVIGATION_STATE_FREE5 = 7
|
||||
uint8 NAVIGATION_STATE_ALTITUDE_CRUISE = 8 # Altitude with Cruise mode
|
||||
uint8 NAVIGATION_STATE_FREE3 = 9
|
||||
uint8 NAVIGATION_STATE_ACRO = 10 # Acro mode
|
||||
uint8 NAVIGATION_STATE_FREE2 = 11
|
||||
uint8 NAVIGATION_STATE_DESCEND = 12 # Descend mode (no position control)
|
||||
uint8 NAVIGATION_STATE_TERMINATION = 13 # Termination mode
|
||||
uint8 NAVIGATION_STATE_OFFBOARD = 14
|
||||
uint8 NAVIGATION_STATE_STAB = 15 # Stabilized mode
|
||||
uint8 NAVIGATION_STATE_FREE1 = 16
|
||||
uint8 NAVIGATION_STATE_AUTO_TAKEOFF = 17 # Takeoff
|
||||
uint8 NAVIGATION_STATE_AUTO_LAND = 18 # Land
|
||||
uint8 NAVIGATION_STATE_AUTO_FOLLOW_TARGET = 19 # Auto Follow
|
||||
uint8 NAVIGATION_STATE_AUTO_PRECLAND = 20 # Precision land with landing target
|
||||
uint8 NAVIGATION_STATE_ORBIT = 21 # Orbit in a circle
|
||||
uint8 NAVIGATION_STATE_AUTO_VTOL_TAKEOFF = 22 # Takeoff, transition, establish loiter
|
||||
uint8 NAVIGATION_STATE_EXTERNAL1 = 23
|
||||
uint8 NAVIGATION_STATE_EXTERNAL2 = 24
|
||||
uint8 NAVIGATION_STATE_EXTERNAL3 = 25
|
||||
uint8 NAVIGATION_STATE_EXTERNAL4 = 26
|
||||
uint8 NAVIGATION_STATE_EXTERNAL5 = 27
|
||||
uint8 NAVIGATION_STATE_EXTERNAL6 = 28
|
||||
uint8 NAVIGATION_STATE_EXTERNAL7 = 29
|
||||
uint8 NAVIGATION_STATE_EXTERNAL8 = 30
|
||||
uint8 NAVIGATION_STATE_MAX = 31
|
||||
|
||||
uint8 executor_in_charge # [-] Current mode executor in charge (0=Autopilot)
|
||||
|
||||
uint32 valid_nav_states_mask # [-] Bitmask for all valid nav_state values
|
||||
uint32 can_set_nav_states_mask # [-] Bitmask for all modes that a user can select
|
||||
|
||||
# Bitmask of detected failures
|
||||
uint16 failure_detector_status # [@enum FAILURE]
|
||||
uint16 FAILURE_NONE = 0
|
||||
uint16 FAILURE_ROLL = 1 # (1 << 0)
|
||||
uint16 FAILURE_PITCH = 2 # (1 << 1)
|
||||
uint16 FAILURE_ALT = 4 # (1 << 2)
|
||||
uint16 FAILURE_EXT = 8 # (1 << 3)
|
||||
uint16 FAILURE_ARM_ESC = 16 # (1 << 4)
|
||||
uint16 FAILURE_BATTERY = 32 # (1 << 5)
|
||||
uint16 FAILURE_IMBALANCED_PROP = 64 # (1 << 6)
|
||||
uint16 FAILURE_MOTOR = 128 # (1 << 7)
|
||||
|
||||
uint8 hil_state # [enum HIL_STATE]
|
||||
uint8 HIL_STATE_OFF = 0
|
||||
uint8 HIL_STATE_ON = 1
|
||||
|
||||
# Current vehicle locomotion method. A vehicle can have different methods (e.g. VTOL transitions from RW to FW method)
|
||||
uint8 vehicle_type # [@enum VEHICLE_TYPE]
|
||||
uint8 VEHICLE_TYPE_UNSPECIFIED = 0
|
||||
uint8 VEHICLE_TYPE_ROTARY_WING = 1
|
||||
uint8 VEHICLE_TYPE_FIXED_WING = 2
|
||||
uint8 VEHICLE_TYPE_ROVER = 3
|
||||
|
||||
uint8 FAILSAFE_DEFER_STATE_DISABLED = 0
|
||||
uint8 FAILSAFE_DEFER_STATE_ENABLED = 1
|
||||
uint8 FAILSAFE_DEFER_STATE_WOULD_FAILSAFE = 2 # Failsafes deferred, but would trigger a failsafe
|
||||
|
||||
bool failsafe # true if system is in failsafe state (e.g.:RTL, Hover, Terminate, ...)
|
||||
bool failsafe_and_user_took_over # true if system is in failsafe state but the user took over control
|
||||
uint8 failsafe_defer_state # [@enum FAILSAFE_DEFER_STATE]
|
||||
|
||||
# Link loss
|
||||
bool gcs_connection_lost # datalink to GCS lost
|
||||
uint8 gcs_connection_lost_counter # counts unique GCS connection lost events
|
||||
bool high_latency_data_link_lost # Set to true if the high latency data link (eg. RockBlock Iridium 9603 telemetry module) is lost
|
||||
|
||||
# VTOL flags
|
||||
bool is_vtol # True if the system is VTOL capable
|
||||
bool is_vtol_tailsitter # True if the system performs a 90° pitch down rotation during transition from MC to FW
|
||||
bool in_transition_mode # True if VTOL is doing a transition
|
||||
bool in_transition_to_fw # True if VTOL is doing a transition from MC to FW
|
||||
|
||||
# MAVLink identification
|
||||
uint8 system_type # system type, contains mavlink MAV_TYPE
|
||||
uint8 system_id # system id, contains MAVLink's system ID field
|
||||
uint8 component_id # subsystem / component id, contains MAVLink's component ID field
|
||||
|
||||
bool safety_button_available # Set to true if a safety button is connected
|
||||
bool safety_off # Set to true if safety is off
|
||||
|
||||
bool power_input_valid # Set if input power is valid
|
||||
bool usb_connected # Set to true (never cleared) once telemetry received from usb link
|
||||
|
||||
bool open_drone_id_system_present
|
||||
bool open_drone_id_system_healthy
|
||||
|
||||
bool parachute_system_present
|
||||
bool parachute_system_healthy
|
||||
|
||||
bool rc_calibration_in_progress
|
||||
bool calibration_enabled
|
||||
|
||||
bool pre_flight_checks_pass # true if all checks necessary to arm pass
|
||||
```
|
||||
|
||||
:::
|
||||
@@ -269,4 +269,3 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
|
||||
- [VehicleAttitudeSetpointV0](VehicleAttitudeSetpointV0.md)
|
||||
- [VehicleLocalPositionV0](VehicleLocalPositionV0.md) — Fused local position in NED. The coordinate system origin is the vehicle position at the time when the EKF2-module was started.
|
||||
- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander.
|
||||
- [VehicleStatusV1](VehicleStatusV1.md) — Encodes the system state of the vehicle published by commander.
|
||||
|
||||
@@ -78,23 +78,6 @@ Configure the action when there is a potential collision using the parameter bel
|
||||
| <a id="NAV_TRAFF_A_VER"></a>[NAV_TRAFF_A_VER](../advanced_config/parameter_reference.md#NAV_TRAFF_A_VER) | Vertical height above and below vehicle of the cylinder that defines its airspace (also see [NAV_TRAFF_A_HOR](#NAV_TRAFF_A_HOR)). |
|
||||
| <a id="NAV_TRAFF_COLL_T"></a>[NAV_TRAFF_COLL_T](../advanced_config/parameter_reference.md#NAV_TRAFF_COLL_T) | Collision time threshold. Avoidance will trigger if the estimated time until collision drops below this value (the estimated time is based on relative speed of traffic and UAV). |
|
||||
|
||||
### Arming Check
|
||||
|
||||
PX4 can be configured to check for the presence of a traffic avoidance system (ADSB or FLARM transponder) before arming.
|
||||
This ensures that a traffic avoidance system is connected and functioning before flight.
|
||||
|
||||
The check is configured using the [COM_ARM_TRAFF](../advanced_config/parameter_reference.md#COM_ARM_TRAFF) parameter:
|
||||
|
||||
| Value | Description |
|
||||
| ----- | -------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 0 | Disabled (default). No check is performed. |
|
||||
| 1 | Warning only. A warning is issued if no traffic avoidance system is detected, but arming is allowed. |
|
||||
| 2 | Enforce for all modes. Arming is denied if no traffic avoidance system is detected, regardless of flight mode. |
|
||||
| 3 | Enforce for mission modes only. Arming is denied if no traffic avoidance system is detected and a mission mode is planned. |
|
||||
|
||||
When a traffic avoidance system is detected, the system tracks its presence with a 3-second timeout.
|
||||
If the system is lost or regained, corresponding events are logged ("Traffic avoidance system lost" / "Traffic avoidance system regained").
|
||||
|
||||
## Implementation
|
||||
|
||||
### ADSB/FLARM
|
||||
|
||||
@@ -38,18 +38,6 @@ Instructions for integrating the motor/ESC using with DroneCAN can be found in [
|
||||
|
||||
These instructions walk you through setting the correct parameters for enabling the flight controller's DroneCAN drivers, setting the correct configuration parameters for communication with Vertiq modules on the DroneCAN bus, ESC configuration, and testing that your flight controller can properly control your modules over DroneCAN.
|
||||
|
||||
#### LED Configuration for Vertiq Modules
|
||||
|
||||
::: info
|
||||
This configuration is only required if you have the optional [Vertiq LED module add-on](https://www.vertiq.co/add-ons).
|
||||
Standard Vertiq ESC modules do not include LEDs.
|
||||
:::
|
||||
|
||||
Vertiq LED Add-on modules have two LEDs per ESC (RGB for status, White for anti-collision).
|
||||
See [DroneCAN Lights](../dronecan/index.md#lights) for configuration instructions.
|
||||
|
||||
The `light_id` for each LED is calculated as: `esc_index × 3 + BASE_ID`, where `BASE_ID` is 1 for RGB and 2 for White.
|
||||
|
||||
### DShot/PWM Configuration
|
||||
|
||||
Instructions for integrating the motor/ESC using PWM and DShot can be found in [PWM and DShot Control with a Flight Controller](https://iqmotion.readthedocs.io/en/latest/tutorials/pwm_control_flight_controller.html).
|
||||
|
||||
@@ -26,7 +26,7 @@ They cover the _ROS Melodic and Noetic_ releases.
|
||||
|
||||
::: tab ROS Noetic (Ubuntu 20.04)
|
||||
|
||||
If you're working with [ROS "Noetic"](https://wiki.ros.org/noetic) on Ubuntu 20.04:
|
||||
If you're working with [ROS Noetic](https://wiki.ros.org/noetic) on Ubuntu 20.04:
|
||||
|
||||
1. Install PX4 without the simulator toolchain:
|
||||
1. [Download PX4 Source Code](../dev_setup/building_px4.md):
|
||||
@@ -57,7 +57,7 @@ If you're working with [ROS "Noetic"](https://wiki.ros.org/noetic) on Ubuntu 20.
|
||||
|
||||
::: tab ROS Melodic (Ubuntu 18.04)
|
||||
|
||||
If you're working with ROS "Melodic" on Ubuntu 18.04:
|
||||
If you're working with ROS "Melodic on Ubuntu 18.04:
|
||||
|
||||
1. Download the [ubuntu_sim_ros_melodic.sh](https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh) script in a bash shell:
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
# Lightware GRF250/GRF500 Gimbal Lidar
|
||||
|
||||
LightWare [GRF250](https://lightwarelidar.com/shop/grf-250/) and [GRF500](https://lightwarelidar.com/shop/grf-500/) are small and light Lidar modules with a range of 250m and 500m, respectively.
|
||||
|
||||

|
||||
|
||||
::: info
|
||||
The Lidar driver is not included in the default build of PX4.
|
||||
You will need to [create and use a custom build](#add-the-driver-to-the-px4-build).
|
||||
:::
|
||||
|
||||
## Where to Buy
|
||||
|
||||
Order these modules from:
|
||||
|
||||
- [GRF250](https://lightwarelidar.com/shop/grf-250/)
|
||||
- [GRF500](https://lightwarelidar.com/shop/grf-500/)
|
||||
|
||||
## Hardware Setup
|
||||
|
||||
The rangefinder can be connected to any unused serial port, such as `TELEM2`.
|
||||
[Parameter Configuration](#parameter-configuration) explains how to configure the port to use and the other properties of the rangefinder.
|
||||
|
||||
## PX4 Setup
|
||||
|
||||
### Add the Driver to the PX4 Build
|
||||
|
||||
The [lightware_grf_serial](../modules/modules_driver_distance_sensor.md#lightware-grf-serial) driver for this Lidar is not included in PX4 firmware by default.
|
||||
In order to use these modules you will first need to update the firmware configuration to add the driver, and then build the firmware.
|
||||
|
||||
1. Update the firmware configuration. You can use either of the following options:
|
||||
- Menuconfig:
|
||||
1. Install and open [menuconfig](../hardware/porting_guide_config.md#px4-menuconfig-setup)
|
||||
2. In [menuconfig](../hardware/porting_guide_config.md#px4-menuconfig-setup), navigate to **Drivers > Distance sensors**
|
||||
3. Select/Enable `lightware_grf_serial`
|
||||
4. Save the configuration
|
||||
|
||||
- Manually update `default.px4` to include the configuration key:
|
||||
1. Open the `default.px4board` config file that corresponds to the board you want to build for.
|
||||
For example, to add the driver to `fmu-v6x` boards you would update [/boards/px4/fmu-v6x/default.px4board ](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)
|
||||
2. Add the following line and save the file:
|
||||
|
||||
```txt
|
||||
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_GRF_SERIAL=y
|
||||
```
|
||||
|
||||
2. [Build PX4](../dev_setup/building_px4.md) for your flight controller target and upload the new firmware.
|
||||
|
||||
### Parameter Configuration
|
||||
|
||||
You will need to configure PX4 to indicate the serial port to which the sensor is connected (as per [Serial Port Configuration](../peripherals/serial_configuration.md)) and also the orientation and other properties of the sensor.
|
||||
|
||||
The [parameters to change](../advanced_config/parameters.md) are listed in the table.
|
||||
|
||||
| Parameter | Description |
|
||||
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| <a id="SENS_EN_GRF_CFG"></a>[SENS_EN_GRF_CFG](../advanced_config/parameter_reference.md#SENS_EN_GRF_CFG) | Set to the serial port the sensor is connected to. |
|
||||
| <a id="GRF_UPDATE_CFG"></a>[GRF_UPDATE_CFG](../advanced_config/parameter_reference.md#GRF_UPDATE_CFG) | Set the update rate. |
|
||||
| <a id="GRF_SENS_MODEL"></a>[GRF_SENS_MODEL](../advanced_config/parameter_reference.md#GRF_SENS_MODEL) | Set the update rate. |
|
||||
|
||||
## Testing
|
||||
|
||||
You can confirm that the sensor is correctly configured by connecting QGroundControl, and observing that [DISTANCE_SENSOR](https://mavlink.io/en/messages/common.html#DISTANCE_SENSOR) is present in the [MAVLink Inspector](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_inspector.html).
|
||||
|
||||
Moving the sensor around at various distances from a surface will have the `current_distance` value change.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you are having problems with connecting to the sensor you may need to unassign a the default serial port. [Unassign Default Serial Port](../peripherals/serial_configuration.md)
|
||||
@@ -15,8 +15,8 @@ The following models are supported by PX4, and can be connected to either the I2
|
||||
| [LW20/C](https://lightware.co.za/products/lw20-c-100-m) | 100 | I2C bus | Waterproofed (IP67) with servo for sense-and-avoid applications |
|
||||
| [SF30/D](https://lightwarelidar.com/shop/sf30-d-200-m/) | 200 | I2C bus | Waterproofed (IP67) |
|
||||
| [SF45/B](../sensor/sf45_rotating_lidar.md) | 50 | Serial | Rotary Lidar (Used for [Collision Prevention](../computer_vision/collision_prevention.md)) |
|
||||
| [GRF250](../sensor/grf_lidar.md) | 250 | Serial or I2C | Gimbal Range Finder |
|
||||
| [GRF500](../sensor/grf_lidar.md) | 500 | Serial or I2C | Gimbal Range Finder |
|
||||
| [GRF250](https://lightwarelidar.com/shop/grf-250/) | 250 | I2C | Gimbal Range Finder |
|
||||
| [GRF500](https://lightwarelidar.com/shop/grf-500/) | 500 | I2C | Gimbal Range Finder |
|
||||
|
||||
::: details Discontinued
|
||||
|
||||
@@ -69,9 +69,6 @@ VTOL vehicles may choose to also set [SF1XX_MODE](../advanced_config/parameter_r
|
||||
::: tip
|
||||
[SF45/B](../sensor/sf45_rotating_lidar.md) setup is covered in the linked document.
|
||||
:::
|
||||
::: tip
|
||||
[GRF250/GRF500](../sensor/grf_lidar.md) setup is covered in the linked document.
|
||||
:::
|
||||
|
||||
### Hardware
|
||||
|
||||
|
||||
@@ -24,15 +24,6 @@ The following simulators are supported by the PX4 core development team.
|
||||
|
||||
There are also a number of [Community Supported Simulators](../simulation/community_supported_simulators.md).
|
||||
|
||||
### Choosing a Simulator
|
||||
|
||||
- **SIH (Simulation In Hardware):** Quick verification, no GPU needed, headless CI, basic flight logic testing.
|
||||
Runs as a PX4 module (no external process). Ideal for controller and estimator validation.
|
||||
- **Gazebo:** Sensor simulation (camera, lidar, depth), multi-vehicle, visual testing, environment interaction.
|
||||
Requires more resources.
|
||||
|
||||
Use SIH when you need fast, lightweight testing of control logic or CI pipelines. Use Gazebo when you need realistic sensor data or visual environment interaction.
|
||||
|
||||
---
|
||||
|
||||
The remainder of this topic is a "somewhat generic" description of how the simulation infrastructure works.
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# PX4 Docker Containers
|
||||
|
||||
Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo](../sim_gazebo_gz/index.md) simulation, and [ROS 2](../ros2/user_guide.md).
|
||||
Docker containers are provided for the complete [PX4 development toolchain](../dev_setup/dev_env.md#supported-targets) including NuttX and Linux based hardware, [Gazebo Classic](../sim_gazebo_classic/index.md) simulation, and [ROS](../simulation/ros_interface.md).
|
||||
|
||||
This topic shows how to use the [available docker containers](#px4_containers) to access the build environment in a local Linux computer.
|
||||
|
||||
::: info
|
||||
The recommended `px4-dev` container is built from the [Dockerfile in the PX4-Autopilot source tree](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) by the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml).
|
||||
Dockerfiles and README can be found on [Github here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy).
|
||||
They are built automatically on [Docker Hub](https://hub.docker.com/u/px4io/).
|
||||
:::
|
||||
|
||||
## Prerequisites
|
||||
@@ -34,36 +35,33 @@ sudo usermod -aG docker $USER
|
||||
# Log in/out again before using docker!
|
||||
```
|
||||
|
||||
## px4-dev Container (Recommended) {#px4_containers}
|
||||
## Container Hierarchy {#px4_containers}
|
||||
|
||||
The **`px4-dev`** container is the recommended container for building PX4 firmware.
|
||||
It is a single, multi-architecture container (linux/amd64 and linux/arm64) based on Ubuntu 24.04 that includes everything needed to build PX4 for NuttX hardware targets.
|
||||
The available containers are on [GitHub here](https://github.com/PX4/PX4-containers/tree/master?tab=readme-ov-file#container-hierarchy).
|
||||
|
||||
It is published to both registries simultaneously:
|
||||
These allow testing of various build targets and configurations (the included tools can be inferred from their names).
|
||||
The containers are hierarchical, such that containers have the functionality of their parents.
|
||||
For example, the partial hierarchy below shows that the docker container with NuttX build tools (`px4-dev-nuttx-focal`) does not include ROS 2, while the simulation containers do:
|
||||
|
||||
- **GitHub Container Registry:** [ghcr.io/px4/px4-dev](https://github.com/PX4/PX4-Autopilot/pkgs/container/px4-dev)
|
||||
- **Docker Hub:** [px4io/px4-dev](https://hub.docker.com/r/px4io/px4-dev)
|
||||
```plain
|
||||
- px4io/px4-dev-base-focal
|
||||
- px4io/px4-dev-nuttx-focal
|
||||
- px4io/px4-dev-simulation-focal
|
||||
- px4io/px4-dev-ros-noetic
|
||||
- px4io/px4-dev-ros2-foxy
|
||||
- px4io/px4-dev-ros2-rolling
|
||||
- px4io/px4-dev-base-jammy
|
||||
- px4io/px4-dev-nuttx-jammy
|
||||
```
|
||||
|
||||
The container includes:
|
||||
|
||||
- Ubuntu 24.04 base
|
||||
- ARM cross-compiler (`gcc-arm-none-eabi`) and Xtensa compiler (for ESP32 targets)
|
||||
- Build tools: `cmake`, `ninja`, `ccache`, `make`
|
||||
- Python 3 with PX4 build dependencies
|
||||
- NuttX toolchain libraries (`libnewlib-arm-none-eabi`, etc.)
|
||||
|
||||
The container is built from the [Dockerfile](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/setup/Dockerfile) in the PX4 source tree using the [Container build workflow](https://github.com/PX4/PX4-Autopilot/actions/workflows/dev_container.yml).
|
||||
Images are tagged with the PX4 version (e.g. `px4io/px4-dev:v1.16.0`).
|
||||
The most recent version can be accessed using the `latest` tag: `px4io/px4-dev-nuttx-focal:latest`
|
||||
(available tags are listed for each container on _hub.docker.com_.
|
||||
For example, the `px4io/px4-dev-nuttx-focal` tags can be found on [hub.docker.com here](https://hub.docker.com/r/px4io/px4-dev-nuttx-focal/tags?page=1&ordering=last_updated)).
|
||||
|
||||
:::tip
|
||||
A `px4-sim` container with simulation tools (Gazebo Harmonic) is planned to complement `px4-dev` for simulation workflows.
|
||||
Typically you should use a recent container, but not necessarily the `latest` (as this changes too often).
|
||||
:::
|
||||
|
||||
### Legacy Containers
|
||||
|
||||
The older per-distro containers from [PX4/PX4-containers](https://github.com/PX4/PX4-containers) (e.g. `px4-dev-nuttx-jammy`, `px4-dev-ros2-humble`, etc.) are no longer recommended.
|
||||
They will be replaced by `px4-dev` (for builds) and the upcoming `px4-sim` (for simulation).
|
||||
|
||||
## Use the Docker Container
|
||||
|
||||
The following instructions show how to build PX4 source code on the host computer using a toolchain running in a docker container.
|
||||
@@ -123,7 +121,7 @@ Where,
|
||||
- `<host_src>`: The host computer directory to be mapped to `<container_src>` in the container. This should normally be the **PX4-Autopilot** directory.
|
||||
- `<container_src>`: The location of the shared (source) directory when inside the container.
|
||||
- `<local_container_name>`: A name for the docker container being created. This can later be used if we need to reference the container again.
|
||||
- `<container>:<tag>`: The container with version tag to start - e.g.: `px4io/px4-dev:v1.16.0`.
|
||||
- `<container>:<tag>`: The container with version tag to start - e.g.: `px4io/px4-dev-ros:2017-10-23`.
|
||||
- `<build_command>`: The command to invoke on the new container. E.g. `bash` is used to open a bash shell in the container.
|
||||
|
||||
The concrete example below shows how to open a bash shell and share the directory **~/src/PX4-Autopilot** on the host computer.
|
||||
@@ -139,7 +137,7 @@ docker run -it --privileged \
|
||||
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
|
||||
-e DISPLAY=:0 \
|
||||
--network host \
|
||||
--name=px4-dev px4io/px4-dev:v1.16.0 bash
|
||||
--name=px4-ros px4io/px4-dev-ros2-foxy:2022-07-31 bash
|
||||
```
|
||||
|
||||
::: info
|
||||
@@ -157,7 +155,7 @@ Verify if everything works by running, for example, SITL:
|
||||
|
||||
```sh
|
||||
cd src/PX4-Autopilot #This is <container_src>
|
||||
make px4_sitl gz_x500
|
||||
make px4_sitl_default gazebo-classic
|
||||
```
|
||||
|
||||
### Re-enter the Container
|
||||
@@ -221,7 +219,7 @@ This ensures that all files created within the container will be accessible on t
|
||||
|
||||
#### Graphics Driver Issues
|
||||
|
||||
It's possible that running Gazebo will result in a similar error message like the following:
|
||||
It's possible that running Gazebo Classic will result in a similar error message like the following:
|
||||
|
||||
```sh
|
||||
libGL error: failed to load driver: swrast
|
||||
@@ -241,7 +239,7 @@ Any recent Linux distribution should work.
|
||||
|
||||
The following configuration is tested:
|
||||
|
||||
- OS X with VMWare Fusion and Ubuntu 22.04 (Docker container with GUI support on Parallels make the X-Server crash).
|
||||
- OS X with VMWare Fusion and Ubuntu 14.04 (Docker container with GUI support on Parallels make the X-Server crash).
|
||||
|
||||
**Memory**
|
||||
|
||||
|
||||
+1
-3
@@ -179,7 +179,6 @@
|
||||
- [CubePilot Cube Orange (CubePilot)](flight_controller/cubepilot_cube_orange.md)
|
||||
- [CubePilot Cube Yellow (CubePilot)](flight_controller/cubepilot_cube_yellow.md)
|
||||
- [Cube 배선 퀵 스타트](assembly/quick_start_cube.md)
|
||||
- [Gear Up AirBrainH743](flight_controller/gearup_airbrainh743.md)
|
||||
- [Holybro Kakute H7v2](flight_controller/kakuteh7v2.md)
|
||||
- [Holybro Kakute H7mini](flight_controller/kakuteh7mini.md)
|
||||
- [Holybro Kakute H7](flight_controller/kakuteh7.md)
|
||||
@@ -256,7 +255,7 @@
|
||||
- [Benewake TFmini 라이다](sensor/tfmini.md)
|
||||
- [LeddarOne 라이다](sensor/leddar_one.md)
|
||||
- [Lidar-Lite](sensor/lidar_lite.md)
|
||||
- [Lightware Lidars (SF/LW/GRF)](sensor/sfxx_lidar.md)
|
||||
- [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md)
|
||||
- [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md)
|
||||
- [TeraRanger ](sensor/teraranger.md)
|
||||
- [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md)
|
||||
@@ -933,7 +932,6 @@
|
||||
- [라이센스](contribute/licenses.md)
|
||||
|
||||
- [출시](releases/index.md)
|
||||
- [Release Process](releases/release_process.md)
|
||||
- [main (alpha)](releases/main.md)
|
||||
- [1.17 (alpha)](releases/1.17.md)
|
||||
- [1.16 (stable)](releases/1.16.md)
|
||||
|
||||
@@ -12,16 +12,19 @@ The [ARK Jetson Pixhawk Autopilot Bus (PAB) Carrier](https://arkelectron.gitbook
|
||||
## 사양
|
||||
|
||||
- **Power Requirements**
|
||||
|
||||
- 5V
|
||||
- 4A minimum (dependent on usage and peripherals)
|
||||
|
||||
- **Additional Features**
|
||||
|
||||
- Pixhawk Autopilot Bus (PAB) Form Factor ([PAB Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-010%20Pixhawk%20Autopilot%20Bus%20Standard.pdf))
|
||||
- MicroSD Slot
|
||||
- USA-built, NDAA compliant
|
||||
- Integrated 1W heater for sensor stability in extreme conditions
|
||||
|
||||
- **Physical Details**
|
||||
|
||||
- Weight:
|
||||
- Without Jetson and Flight Controller – 80g
|
||||
- With Jetson, no heatsink or Flight Controller – 108g
|
||||
|
||||
@@ -170,6 +170,7 @@ To enable this MAVLink instance on the FC:
|
||||

|
||||
|
||||
2. [Set the parameters](../advanced_config/parameters.md):
|
||||
|
||||
- `MAV_1_CONFIG` = `102`
|
||||
- `MAV_1_MODE = 2`
|
||||
- `SER_TEL2_BAUD` = `921600`
|
||||
@@ -183,6 +184,7 @@ On the RPi side:
|
||||
1. Connect to the RPi (using WiFi, a router, or a WiFi Dongle).
|
||||
|
||||
2. Enable the RPi serial port by running `RPi-config`
|
||||
|
||||
- Go to `3 Interface Options`, then `I6 Serial Port`.
|
||||
Then choose:
|
||||
- `login shell accessible over serial → No`
|
||||
|
||||
@@ -145,6 +145,7 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP
|
||||
```
|
||||
|
||||
3. Go to the **Interface Option** and then click **Serial Port**.
|
||||
|
||||
- Select **No** to disable serial login shell.
|
||||
- Select **Yes** to enable the serial interface.
|
||||
- Click **Finish** and restart the RPi.
|
||||
@@ -163,6 +164,7 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP
|
||||
```
|
||||
|
||||
6. Then save the file and restart the RPi.
|
||||
|
||||
- In `nano` you can save the file using the following sequence of keyboard shortcuts: **ctrl+x**, **ctrl+y**, **Enter**.
|
||||
|
||||
7. Check that the serial port is available.
|
||||
|
||||
@@ -214,6 +214,7 @@ The Lua script works by extracting the `obstacle_distance_fused` data at each ti
|
||||
|
||||
3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section.
|
||||
In the **Script Editor** tab, add following scripts in the appropriate sections:
|
||||
|
||||
- **Global code, executed once:**
|
||||
|
||||
```lua
|
||||
|
||||
@@ -33,6 +33,7 @@ The instructions below might be used to create a task named _MyTask_:
|
||||
- FlightTaskMyTask.cpp
|
||||
|
||||
3. Update **CMakeLists.txt** for the new task
|
||||
|
||||
- Copy the contents of the **CMakeLists.txt** for another task - e.g. [Orbit/CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/tasks/Orbit/CMakeLists.txt)
|
||||
|
||||
- Update the copyright to the current year
|
||||
|
||||
@@ -84,9 +84,16 @@ The test steps are:
|
||||
If an [Enable/Disable Autotune Switch](#enable-disable-autotune-switch) is configured you can just toggle the switch to the "enabled" position.
|
||||
|
||||
</div></div>
|
||||
|
||||
1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**:
|
||||
|
||||
 2. Select either the _Rate Controller_ or _Attitude Controller_ tabs. 3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors). 4. Read the warning popup and click on **OK** to start tuning.
|
||||

|
||||
|
||||
2. Select either the _Rate Controller_ or _Attitude Controller_ tabs.
|
||||
|
||||
3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors).
|
||||
|
||||
4. Read the warning popup and click on **OK** to start tuning.
|
||||
|
||||
<div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ Performing this calibration step is only recommended if the autopilot's orientat
|
||||
:::
|
||||
|
||||
4. Place the vehicle in its level flight orientation on a level surface:
|
||||
|
||||
- For planes this is the position during level flight (planes tend to have their wings slightly pitched up!)
|
||||
- For copters this is the hover position.
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ To setup and configure a helicopter:
|
||||
3. Remove the rotor blades and propellers
|
||||
|
||||
4. Assign motors and servos to outputs and test (also in [Actuator configuration](../config/actuators.md)):
|
||||
|
||||
1. Assign the [motors and servos to the outputs](../config/actuators.md#actuator-outputs).
|
||||
2. Power the vehicle with a battery and use the [actuator testing sliders](../config/actuators.md#actuator-testing) to validate correct servo and motor assignment and direction.
|
||||
|
||||
|
||||
@@ -140,6 +140,7 @@ Make sure to have assigned a [Kill switch](../config/safety.md#emergency-switche
|
||||
13. 모든 축에서 자세 콘트롤러에 대하여 튜닝 프로세스를 반복하십시오.
|
||||
|
||||
14. Repeat the tuning process for the velocity and positions controllers (on all the axes).
|
||||
|
||||
- Use Position mode when tuning these controllers
|
||||
- Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs)
|
||||
|
||||
|
||||
@@ -18,37 +18,28 @@ A drive mode will only work properly if all the configuration for the preceding
|
||||
|
||||
## Flashing the Rover Build
|
||||
|
||||
Rover is built as a [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets), and must be installed as "Custom Firmware" in QGC (other vehicles are present in the default variant).
|
||||
Rovers use a custom build that must be flashed onto your flight controller instead of the default PX4 build:
|
||||
|
||||
The release versions of Rover firmware for different boards are attached to the associated GitHub release tag.
|
||||
For example, you can find `px4_fmu-v5x_rover.px4` on [PX4-Autopilot/releases/tag/v1.16.1](https://github.com/PX4/PX4-Autopilot/releases/tag/v1.16.1).
|
||||
For the `main` branch version of Rover you will need to [build the firmware](#building-rover).
|
||||
1. First build the rover firmware for your flight controller from the `main` branch (there is no release build, so you can't just select this build from QGroundControl).
|
||||
|
||||
Load the firmware onto your flight controller as "Custom Firmware" (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)).
|
||||
To build for rover with the `make` command, replace the `_default` suffix with `_rover`.
|
||||
For example, to build rover for px4_fmu-v6x boards, you would use the command:
|
||||
|
||||
## Building Rover
|
||||
```sh
|
||||
make px4_fmu-v6x_rover
|
||||
```
|
||||
|
||||
Rover is built as the `rover` [firmware variant](../dev_setup/building_px4.md#px4-make-build-targets).
|
||||
What this means is that when building the firmware with the `make` command, you replace the `_default` suffix in the configuration target with `_rover`.
|
||||
::: info
|
||||
You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)):
|
||||
|
||||
For example, to build rover for `px4_fmu-v6x` boards, you would use the following command:
|
||||
```sh
|
||||
CONFIG_MODULES_ROVER_ACKERMANN=y
|
||||
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
|
||||
CONFIG_MODULES_ROVER_MECANUM=y
|
||||
```
|
||||
|
||||
```sh
|
||||
make px4_fmu-v6x_rover
|
||||
```
|
||||
Note that adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing).
|
||||
|
||||
Note that configuration targets are constructed with the format "VENDOR_MODEL_VARIANT".
|
||||
|
||||
The built firmware can be installed as custom firmware, as shown above in in [Flashing the Rover Build](#flashing-the-rover-build).
|
||||
|
||||
:::info
|
||||
You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)):
|
||||
|
||||
```sh
|
||||
CONFIG_MODULES_ROVER_ACKERMANN=y
|
||||
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
|
||||
CONFIG_MODULES_ROVER_MECANUM=y
|
||||
```
|
||||
|
||||
Adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing).
|
||||
:::
|
||||
|
||||
2. Load the **custom firmware** that you just built onto your flight controller (see [Loading Firmware > Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)).
|
||||
|
||||
@@ -307,6 +307,7 @@ If the airframe is for a **new group** you additionally need to:
|
||||
```
|
||||
|
||||
3. Update _QGroundControl_:
|
||||
|
||||
- Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images)
|
||||
- Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below:
|
||||
|
||||
|
||||
@@ -39,6 +39,16 @@ Navigate into the **PX4-Autopilot** directory and start [Gazebo SITL](../sim_gaz
|
||||
make px4_sitl gz_x500
|
||||
```
|
||||
|
||||
:::details
|
||||
If you installed Gazebo Classic
|
||||
Start [Gazebo Classic SITL](../sim_gazebo_classic/index.md) using the following command:
|
||||
|
||||
```sh
|
||||
make px4_sitl gazebo-classic
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
This will bring up the PX4 console:
|
||||
|
||||

|
||||
@@ -79,16 +89,6 @@ cd PX4-Autopilot
|
||||
make px4_fmu-v4_default
|
||||
```
|
||||
|
||||
:::tip
|
||||
You can also build using the [px4-dev Docker container](../test_and_ci/docker.md) without installing the toolchain locally.
|
||||
From the PX4-Autopilot directory:
|
||||
|
||||
```sh
|
||||
./Tools/docker_run.sh 'make px4_fmu-v5_default'
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
A successful run will end with similar output to:
|
||||
|
||||
```sh
|
||||
@@ -145,8 +145,7 @@ The following list shows the build commands for the [Pixhawk standard](../flight
|
||||
- [Pixhawk 1 (FMUv2)](../flight_controller/pixhawk.md): `make px4_fmu-v2_default`
|
||||
|
||||
:::warning
|
||||
You **must** use a supported version of GCC to build this board (e.g. the `gcc-arm-none-eabi` package from the current Ubuntu LTS, which is the same toolchain used by CI) or remove modules from the build.
|
||||
PX4가 보드의 1MB 플래시 제한에 가깝기 때문에, 지원되지 않는 GCC로 빌드가 실패할 수 있습니다.
|
||||
You **must** use a supported version of GCC to build this board (e.g. the same as used by [CI/docker](../test_and_ci/docker.md)) or remove modules from the build. PX4가 보드의 1MB 플래시 제한에 가깝기 때문에, 지원되지 않는 GCC로 빌드가 실패할 수 있습니다.
|
||||
|
||||
:::
|
||||
|
||||
@@ -212,7 +211,7 @@ The `region 'flash' overflowed by XXXX bytes` error indicates that the firmware
|
||||
This is common for `make px4_fmu-v2_default` builds, where the flash size is limited to 1MB.
|
||||
|
||||
If you're building the _vanilla_ master branch, the most likely cause is using an unsupported version of GCC.
|
||||
In this case, install the `gcc-arm-none-eabi` package from the current Ubuntu LTS as described in the [Developer Toolchain](../dev_setup/dev_env.md) instructions.
|
||||
In this case, install the version specified in the [Developer Toolchain](../dev_setup/dev_env.md) instructions.
|
||||
|
||||
If building your own branch, it is possible that you have increased the firmware size over the 1MB limit.
|
||||
PX4 빌드 시스템은 많은 수의 파일을 오픈하므로, 이 갯수를 초과할 수 있습니다.
|
||||
@@ -225,7 +224,7 @@ The PX4 build system opens a large number of files, so you may exceed this numbe
|
||||
The build toolchain will then report `Too many open files` for many files, as shown below:
|
||||
|
||||
```sh
|
||||
arm-none-eabi-ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files
|
||||
/usr/local/Cellar/gcc-arm-none-eabi/20171218/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld: cannot find NuttX/nuttx/fs/libfs.a: Too many open files
|
||||
```
|
||||
|
||||
The solution is to increase the maximum allowed number of open files (e.g. to 300).
|
||||
@@ -248,9 +247,34 @@ xcode-select --install
|
||||
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
|
||||
```
|
||||
|
||||
### Ubuntu 18.04: arm_none_eabi_gcc와 관련된 컴파일 오류
|
||||
|
||||
Build issues related to `arm_none_eabi_gcc`may be due to a broken g++ toolchain installation.
|
||||
You can verify that this is the case by checking for missing dependencies using:
|
||||
|
||||
```sh
|
||||
arm-none-eabi-gcc --version
|
||||
arm-none-eabi-g++ --version
|
||||
arm-none-eabi-gdb --version
|
||||
arm-none-eabi-size --version
|
||||
```
|
||||
|
||||
Example of bash output with missing dependencies:
|
||||
|
||||
```sh
|
||||
arm-none-eabi-gdb --version
|
||||
arm-none-eabi-gdb: command not found
|
||||
```
|
||||
|
||||
This can be resolved by removing and [reinstalling the compiler](https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa).
|
||||
|
||||
### Ubuntu 18.04: Visual Studio Code는 이 큰 작업 영역에서 파일 변경 사항을 감시할 수 없습니다.
|
||||
|
||||
See [Visual Studio Code IDE (VSCode) > Troubleshooting](../dev_setup/vscode.md#troubleshooting).
|
||||
|
||||
### Python 패키지를 가져오지 못했습니다.
|
||||
|
||||
"Failed to import" errors when running the `make px4_sitl gz_x500` command indicates that some Python packages are not installed (where expected).
|
||||
"Failed to import" errors when running the `make px4_sitl jmavsim` command indicates that some Python packages are not installed (where expected).
|
||||
|
||||
```sh
|
||||
Failed to import jinja2: No module named 'jinja2'
|
||||
@@ -258,12 +282,12 @@ You may need to install it using:
|
||||
pip3 install --user jinja2
|
||||
```
|
||||
|
||||
If you have already installed these dependencies this may be because there is more than one Python version on the computer (e.g. Python 2.7.16 and Python 3.8.3), and the module is not present in the version used by the build toolchain.
|
||||
다음과 같이 종속성을 명시적으로 설치하여, 이 문제를 해결할 수 있습니다.
|
||||
|
||||
You should be able to fix this by installing the dependencies from the repository's requirements file:
|
||||
You should be able to fix this by explicitly installing the dependencies as shown:
|
||||
|
||||
```sh
|
||||
pip3 install --user -r Tools/setup/requirements.txt
|
||||
pip3 install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging
|
||||
```
|
||||
|
||||
## PX4 빌드 타겟 만들기
|
||||
|
||||
@@ -23,7 +23,7 @@ A Taranis RC and a mid-range Android tablet make a very inexpensive field kit.
|
||||
|
||||
- Lenovo Thinkpad with i5-core running Windows 11
|
||||
- MacBook Pro (early 2015 and later) with macOS 10.15 or later
|
||||
- Lenovo Thinkpad i5 with Ubuntu Linux 22.04 or later
|
||||
- Lenovo Thinkpad i5 with Ubuntu Linux 20.04 or later
|
||||
|
||||
- **Ground control station** (computer or tablet):
|
||||
- iPad (may require Wifi telemetry adapter)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
The _supported platforms_ for PX4 development are:
|
||||
|
||||
- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md)
|
||||
- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended
|
||||
- [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2
|
||||
- [macOS](../dev_setup/dev_env_mac.md)
|
||||
|
||||
@@ -15,9 +15,9 @@ The _supported platforms_ for PX4 development are:
|
||||
| **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ |
|
||||
| **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | |
|
||||
| **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ |
|
||||
| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ |
|
||||
| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ |
|
||||
| **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ |
|
||||
| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | | ✓ | ✓ |
|
||||
| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | | | ✓ |
|
||||
|
||||
Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md)
|
||||
|
||||
|
||||
@@ -39,9 +39,8 @@ You may want to also install `python-pip` and `screen`.
|
||||
아래 스크립트로 GCC 7-2017-q4를 설치합니다.
|
||||
|
||||
:::warning
|
||||
This version of GCC is very outdated.
|
||||
PX4 now uses the `gcc-arm-none-eabi` package from the current Ubuntu LTS (GCC 13.2.1 on Ubuntu 24.04).
|
||||
This CentOS guide is community-maintained and may not produce working builds.
|
||||
This version of GCC is out of date.
|
||||
At time of writing the current version on Ubuntu is `9-2020-q2-update` (see [focal nuttx docker file](https://github.com/PX4/PX4-containers/blob/master/docker/Dockerfile_nuttx-focal#L28))
|
||||
:::
|
||||
|
||||
```sh
|
||||
|
||||
@@ -4,14 +4,21 @@ The following instructions use a bash script to set up the PX4 development envir
|
||||
|
||||
The environment includes:
|
||||
|
||||
- [Gazebo Simulator](../sim_gazebo_gz/index.md) (Gazebo Harmonic)
|
||||
- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards) using the `gcc-arm-none-eabi` compiler from the Ubuntu package manager.
|
||||
- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic")
|
||||
- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards).
|
||||
|
||||
On Ubuntu 22.04:
|
||||
|
||||
- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo.
|
||||
Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases.
|
||||
|
||||
The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below.
|
||||
|
||||
:::info
|
||||
PX4 targets the **current Ubuntu LTS** (24.04) for CI and release builds, with the **previous LTS** (22.04) also supported.
|
||||
Older Ubuntu versions are not supported and may not work.
|
||||
:::details
|
||||
Can I use an older version of Ubuntu?
|
||||
PX4 supports the current and last Ubuntu LTS release where possible.
|
||||
Older releases are not supported (so you can't raise defects against them), but may still work.
|
||||
For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts.
|
||||
:::
|
||||
|
||||
## Simulation and NuttX (Pixhawk) Targets
|
||||
@@ -45,7 +52,9 @@ The script is intended to be run on _clean_ Ubuntu LTS installations, and may no
|
||||
- 스크립트가 진행되는 동안 모든 프롬프트를 확인합니다.
|
||||
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
||||
|
||||
3. 완료되면 컴퓨터를 재부팅합니다.
|
||||
3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation).
|
||||
|
||||
4. 완료되면 컴퓨터를 재부팅합니다.
|
||||
|
||||
:::details
|
||||
Additional notes
|
||||
@@ -54,11 +63,10 @@ These notes are provided "for information only":
|
||||
- This setup is supported by the PX4 Dev Team.
|
||||
The instructions may also work on other Debian Linux based systems.
|
||||
|
||||
- You can verify the NuttX installation by confirming `gcc` is available.
|
||||
The version depends on your Ubuntu release (e.g. GCC 13.2.1 on Ubuntu 24.04):
|
||||
- You can verify the NuttX installation by confirming the `gcc` version as shown:
|
||||
|
||||
```sh
|
||||
$ arm-none-eabi-gcc --version
|
||||
$arm-none-eabi-gcc --version
|
||||
|
||||
arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009
|
||||
Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
|
||||
@@ -61,20 +61,20 @@ To install WSL2 with Ubuntu on a new installation of Windows 10 or 11:
|
||||
wsl --install
|
||||
```
|
||||
|
||||
- Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md))
|
||||
|
||||
```sh
|
||||
wsl --install -d Ubuntu-20.04
|
||||
```
|
||||
|
||||
- Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md))
|
||||
|
||||
```sh
|
||||
wsl --install -d Ubuntu-22.04
|
||||
```
|
||||
|
||||
- Ubuntu 24.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md))
|
||||
|
||||
```sh
|
||||
wsl --install -d Ubuntu-24.04
|
||||
```
|
||||
|
||||
::: info
|
||||
You can also [Ubuntu 24.04](https://www.microsoft.com/store/productId/9nz3klhxdjp5) or [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from Microsoft Store, which allows you to delete the application using the normal Windows Add/Remove settings.
|
||||
You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings:
|
||||
|
||||
:::
|
||||
|
||||
@@ -110,7 +110,7 @@ To open a WSL shell using a command prompt:
|
||||
```
|
||||
|
||||
```sh
|
||||
wsl -d Ubuntu-24.04
|
||||
wsl -d Ubuntu-20.04
|
||||
```
|
||||
|
||||
If you only have one version of Ubuntu, you can just use `wsl`.
|
||||
|
||||
@@ -61,6 +61,7 @@ You must already have installed the command line [PX4 developer environment](../
|
||||
빌드를 진행하려면:
|
||||
|
||||
1. Select your build target ("cmake build config"):
|
||||
|
||||
- The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step).
|
||||

|
||||
|
||||
@@ -133,10 +134,10 @@ In order for the code completion to work (and other IntelliSense magic) you need
|
||||
|
||||
이 섹션에는 설정 및 빌드 오류에 대한 지침이 포함되어 있습니다.
|
||||
|
||||
### "Visual Studio Code is unable to watch for file changes in this large workspace"
|
||||
### Ubuntu 18.04: "Visual Studio Code는 이 큰 작업 영역에서 파일 변경 사항을 감시할 수 없습니다."
|
||||
|
||||
이 오류는 시작시에 나타납니다.
|
||||
On some systems, there is an upper-limit on file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`.
|
||||
On some systems, there is an upper-limit of 8192 file handles imposed on applications, which means that VSCode might not be able to detect file modifications in `/PX4-Autopilot`.
|
||||
|
||||
메모리 소비를 희생시키면서 오류를 방지하기 위해 이 제한을 늘릴 수 있습니다.
|
||||
Follow the [instructions here](https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc).
|
||||
|
||||
@@ -100,6 +100,7 @@ In order to use dual ZED-F9P GPS heading in PX4, follow these steps:
|
||||
3. Components should be visible on the left panel.
|
||||
Click on the first `_Component_<ID#>` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_).
|
||||
4. Click on the _GPS_ subsection and configure the parameters listed below:
|
||||
|
||||
- `GPS_TYPE`: Either set to `17` for moving baseline _base_, or set to `18` to be the moving baseline _rover_.
|
||||
One F9P MUST be _rover_, and the other MUST be _base_.
|
||||
- `GPS_AUTO_CONFIG`: set to 1 for both the rover and base
|
||||
|
||||
@@ -39,10 +39,12 @@ Order this module from:
|
||||
- 10 Pin JST-SH Debug
|
||||
|
||||
- Motor & Battery Connectors (with-connector version)
|
||||
|
||||
- MR30 Connector Limit Per Motor: 30A Continuous, 40A Burst
|
||||
- Four MR30 Motor Connectors
|
||||
|
||||
- Dimensions (with connectors)
|
||||
|
||||
- Size: 77.00mm x 42.00mm x 9.43mm
|
||||
- Mounting Pattern: 30.5mm
|
||||
- Weight: 24g
|
||||
|
||||
@@ -26,6 +26,7 @@ AIRLink has two computers and integrated LTE Module:
|
||||
## 사양
|
||||
|
||||
- **Sensors**
|
||||
|
||||
- 3x Accelerometers, 3x Gyroscopes, 3x Magnetometers, 3x Pressure sensorss
|
||||
- GNSS, Rangefinders, Lidars, Optical Flow, Cameras
|
||||
- 3x-redundant IMU
|
||||
@@ -33,6 +34,7 @@ AIRLink has two computers and integrated LTE Module:
|
||||
- Temperature stabilization
|
||||
|
||||
- **Flight Controller**
|
||||
|
||||
- STM32F7, ARM Cortex M7 with FPU, 216 MHz, 2MB Flash, 512 kB RAM
|
||||
- STM32F1, I/O co-processor
|
||||
- Ethernet, 10/100 Mbps
|
||||
@@ -49,6 +51,7 @@ AIRLink has two computers and integrated LTE Module:
|
||||
- Safety switch / LED option
|
||||
|
||||
- **AI Mission Computer**
|
||||
|
||||
- 6-Core CPU: Dual-Core Cortex-A72 + Quad-Core Cortex-A53
|
||||
- GPU Mali-T864, OpenGL ES1.1/2.0/3.0/3.1
|
||||
- VPU with 4K VP8/9, 4K 10bits H265/H264 60fps Decoding
|
||||
@@ -62,6 +65,7 @@ AIRLink has two computers and integrated LTE Module:
|
||||
- 2x Video: 4-Lane MIPI CSI (FPV Camera) and 4-Lane MIPI CSI with HMDI Input (Payload Camera)
|
||||
|
||||
- **LTE/5G Connectivity Module**
|
||||
|
||||
- Up to 600 Mbps bandwidth
|
||||
- 5G sub-6 and mmWave, SA and NSA operations
|
||||
- 4G Cat 20, up to 7xCA, 256-QAM DL/UL, 2xCA UL
|
||||
@@ -138,6 +142,7 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production
|
||||

|
||||
|
||||
- **Left side interfaces:**
|
||||
|
||||
- Power input with voltage & current monitoring
|
||||
- AI Mission Computer micro SD card
|
||||
- Flight Controller micro SD card
|
||||
@@ -165,13 +170,13 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production
|
||||
|
||||
- **RC Connector - JST GH SM06B-GHS-TB**
|
||||
|
||||
\| Pin number | Pin name | Direction | Voltage | Function |
|
||||
\| ---------- | -------- | --------- | ------- | ----------- | --- | --- | ------ |
|
||||
\| 1 | 5V | OUT | +5V | 5V output |
|
||||
\| 2 | PPM_IN | IN | +3.3V | PPM input |
|
||||
\| 3 | RSSI_IN | IN | +3.3V | RSSI input |
|
||||
\| 4 | FAN_OUT | OUT | +5V | Fan output |
|
||||
\| 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | Ground |
|
||||
| Pin number | Pin name | 방향 | 전압 | 기능 | | | |
|
||||
| ---------- | ----------------------------- | --- | --------------------- | ----------- | - | --- | -- |
|
||||
| 1 | 5V | OUT | +5V | 5V output | | | |
|
||||
| 2 | PPM_IN | IN | +3.3V | PPM 입력 | | | |
|
||||
| 3 | RSSI_IN | IN | +3.3V | RSSI 입력 | | | |
|
||||
| 4 | FAN_OUT | OUT | +5V | Fan output | | | |
|
||||
| 5 | SBUS_OUT | OUT | +3.3V | SBUS output | 6 | GND | 접지 |
|
||||
|
||||
* **FMU SD card - microSD**
|
||||
|
||||
@@ -180,6 +185,7 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production
|
||||

|
||||
|
||||
- **Right side interfaces:**
|
||||
|
||||
- Ethernet port with power output
|
||||
- Telemetry port
|
||||
- Second GPS port
|
||||
@@ -245,6 +251,7 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production
|
||||

|
||||
|
||||
- **Front side interfaces:**
|
||||
|
||||
- Main GNSS and compass port
|
||||
- Main telemetry port
|
||||
- CSI camera input
|
||||
@@ -302,6 +309,7 @@ SmartAP AIRLink's Core edition is intended for medium to high volume production
|
||||

|
||||
|
||||
- **Rear side interfaces:**
|
||||
|
||||
- SBUS input
|
||||
- 16 PWM output channels
|
||||
- 2x LTE antenna sockets (MIMO)
|
||||
|
||||
@@ -25,7 +25,6 @@ This category includes boards that are not fully compliant with the pixhawk stan
|
||||
- [CubePilot Cube Orange+](../flight_controller/cubepilot_cube_orangeplus.md)
|
||||
- [CubePilot Cube Orange](../flight_controller/cubepilot_cube_orange.md)
|
||||
- [CubePilot Cube Yellow](../flight_controller/cubepilot_cube_yellow.md)
|
||||
- [Gear Up AirBrainH743](../flight_controller/gearup_airbrainh743.md)
|
||||
- [Holybro Kakute H7v2](../flight_controller/kakuteh7v2.md)
|
||||
- [Holybro Kakute H7mini](../flight_controller/kakuteh7mini.md)
|
||||
- [Holybro Kakute H7](../flight_controller/kakuteh7.md)
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
# Gear Up AirBrainH743
|
||||
|
||||
:::warning
|
||||
PX4 does not manufacture this (or any) autopilot.
|
||||
Contact the [manufacturer](https://takeyourgear.com/) for hardware support.
|
||||
:::
|
||||
|
||||
:::info
|
||||
This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md).
|
||||
:::
|
||||
|
||||
Purchase from [takeyourgear.com](https://takeyourgear.com/pages/products/airbrain).
|
||||
|
||||
For more information and pinout, check the [GitHub documentation](https://github.com/GearUp-Company/AirBrainH743).
|
||||
|
||||
## 주요 특징
|
||||
|
||||
- MCU: STM32H743 32-bit processor running at 480 MHz
|
||||
- IMU: ICM42688P
|
||||
- Barometer: DPS310
|
||||
- Magnetometer: LIS2MDL (internal)
|
||||
- 128MB NAND Flash for logging (W25N)
|
||||
- 7x UARTs
|
||||
- I2C, SPI
|
||||
- 9x PWM Outputs (8 Motor outputs, 1 LED strip)
|
||||
- Battery input voltage: 3S-10S
|
||||
- Battery voltage/current monitoring
|
||||
- 5V@2A and 10V@2.5A BEC outputs
|
||||
- USB Type-C (IP68)
|
||||
- EMC and ESD protection
|
||||
|
||||
## 커넥터 및 핀
|
||||
|
||||
:::warning
|
||||
The pin order is different from the Pixhawk standard (compatible to the Betaflight standard).
|
||||
:::
|
||||
|
||||
### UART
|
||||
|
||||
Current UART configuration:
|
||||
|
||||
| UART | 장치 | 기능 |
|
||||
| ------ | ---------- | --------------------------------------- |
|
||||
| USART1 | /dev/ttyS0 | Console/Debug |
|
||||
| USART2 | /dev/ttyS1 | RC Input |
|
||||
| USART3 | /dev/ttyS2 | TEL4 (DJI/MSP) |
|
||||
| UART4 | /dev/ttyS3 | TEL1 |
|
||||
| UART5 | /dev/ttyS4 | TEL2 |
|
||||
| UART7 | /dev/ttyS5 | TEL3 (ESC Telemetry) |
|
||||
| UART8 | /dev/ttyS6 | GPS1 |
|
||||
|
||||
### Motor/Servo Outputs
|
||||
|
||||
| 커넥터 | 핀 | 기능 |
|
||||
| --- | -- | ---------------------------- |
|
||||
| ESC | M1 | Motor 1 |
|
||||
| ESC | M2 | Motor 2 |
|
||||
| ESC | M3 | Motor 3 |
|
||||
| ESC | M4 | Motor 4 |
|
||||
| PWM | M5 | Motor 5 |
|
||||
| PWM | M6 | Motor 6 |
|
||||
| PWM | M7 | Motor 7 |
|
||||
| PWM | M8 | Motor 8 |
|
||||
| AUX | M9 | LED/PWM/etc. |
|
||||
|
||||
<a id="bootloader"></a>
|
||||
|
||||
## 부트로더 업데이트
|
||||
|
||||
Before PX4 firmware can be installed, the _PX4 bootloader_ must be flashed.
|
||||
Download the [gearup_airbrainh743_bootloader.bin](https://github.com/PX4/PX4-Autopilot/blob/main/boards/gearup/airbrainh743/extras/gearup_airbrainh743_bootloader.bin) bootloader binary and read [this page](../advanced_config/bootloader_update_from_betaflight.md) for flashing instructions.
|
||||
|
||||
## 펌웨어 빌드
|
||||
|
||||
To [build PX4](../dev_setup/building_px4.md) for this target:
|
||||
|
||||
```
|
||||
make gearup_airbrainh743_default
|
||||
```
|
||||
|
||||
## 펌웨어 설치
|
||||
|
||||
Firmware can be installed in any of the normal ways:
|
||||
|
||||
- Build and upload the source:
|
||||
|
||||
```
|
||||
make gearup_airbrainh743_default upload
|
||||
```
|
||||
|
||||
- [Load the firmware](../config/firmware.md) using _QGroundControl_.
|
||||
미리 빌드된 펌웨어나 사용자 지정 펌웨어를 사용할 수 있습니다.
|
||||
|
||||
### 시스템 콘솔
|
||||
|
||||
UART1 (ttyS0) is configured for use as the [System Console](../debug/system_console.md).
|
||||
@@ -231,7 +231,7 @@ The following MAVLink messages and their particular fields and field values are
|
||||
|
||||
- Position setpoint **and** velocity setpoint (the velocity setpoint is used as feedforward; it is added to the output of the position controller and the result is used as the input to the velocity controller).
|
||||
|
||||
- PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT).
|
||||
- PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL).
|
||||
|
||||
- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET)
|
||||
- 다음 입력 조합이 지원됩니다.
|
||||
@@ -278,7 +278,7 @@ The following MAVLink messages and their particular fields and field values are
|
||||
- 12288 : Loiter 설정점 (설정점을 중심으로 선회 비행합니다).
|
||||
- 16384 : 유휴 설정점 (제로 스로틀, 제로 롤/피치).
|
||||
|
||||
- PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT).
|
||||
- PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL).
|
||||
|
||||
- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET)
|
||||
- 다음 입력 조합이 지원됩니다.
|
||||
@@ -287,29 +287,7 @@ The following MAVLink messages and their particular fields and field values are
|
||||
|
||||
### 탐사선
|
||||
|
||||
Rover supports offboard control using the generic MAVLink position/velocity setpoint messages listed below.
|
||||
These are converted into a [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) internally, and then into rover setpoints by the rover offboard modes.
|
||||
For rover-specific control setpoints and better behaviour we recommend using the [Rover Setpoints](#rover-setpoints) via ROS 2.
|
||||
|
||||
:::info
|
||||
Rover MAVLink setpoints are gated by the MAVLink parameter [MAV_FWDEXTSP](../advanced_config/parameter_reference.md#MAV_FWDEXTSP) (Forward external setpoint messages).
|
||||
:::
|
||||
|
||||
- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED)
|
||||
- Position setpoint: `x`, `y` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) (`z` is ignored by rover modules).
|
||||
- Velocity setpoint: `vx`, `vy` in [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) or [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED).
|
||||
- `yaw`/`yaw_rate`:
|
||||
- Ackermann/Differential: ignored (in velocity control the yaw setpoint is derived from the velocity direction).
|
||||
- Mecanum: can be controlled independently (decoupled) using `yaw`/`yaw_rate`.
|
||||
- Acceleration setpoints (`afx`, `afy`, `afz`) are ignored by rover modules.
|
||||
|
||||
- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT)
|
||||
- Position setpoint: `lat_int`, `lon_int`, `alt` (converted into local NED internally; rover modules only use the horizontal components).
|
||||
- Velocity setpoint: `vx`, `vy`, `vz` (rover modules use only the horizontal components).
|
||||
- PX4 supports the following `coordinate_frame` values (only): [MAV_FRAME_GLOBAL_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_INT), [MAV_FRAME_GLOBAL_RELATIVE_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_RELATIVE_ALT_INT), [MAV_FRAME_GLOBAL_TERRAIN_ALT_INT](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL_TERRAIN_ALT_INT).
|
||||
|
||||
- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET)
|
||||
- Not supported for rover offboard control.
|
||||
Rover does not support a MAVLink offboard API (ROS2 is supported).
|
||||
|
||||
## 오프보드 매개변수
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user