mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-02 02:10:04 +08:00
Compare commits
87 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ba860bd52a | |||
| 6badbdd113 | |||
| 6f6d8c5860 | |||
| 35391ed8d0 | |||
| 48b04b1c81 | |||
| 3ab7895af7 | |||
| 3c5574c051 | |||
| eb9a76cfaf | |||
| f545f2227d | |||
| 4e5c0fac7a | |||
| fa0618463d | |||
| f025bb42eb | |||
| 5dba9990b4 | |||
| aaace556cd | |||
| 36c3bfcde8 | |||
| 70e31870af | |||
| 45baeccb01 | |||
| 4917b17116 | |||
| c0633d89ff | |||
| f798d7ce16 | |||
| 35cbbc1967 | |||
| 8ff7255ba7 | |||
| 395236dc7f | |||
| 1ada559eff | |||
| c838206024 | |||
| 582a50030c | |||
| 2dd5c48a82 | |||
| 75b3e9f0d0 | |||
| b17da3caa0 | |||
| 0831782d3a | |||
| 9f9171575e | |||
| 60db79f35e | |||
| 2798910293 | |||
| f77a1a44a0 | |||
| 1ba562f400 | |||
| 4da1c11db9 | |||
| e4d46f20f4 | |||
| 86f0dc2cb1 | |||
| 6b8ee5cba4 | |||
| 823f033abe | |||
| d74db56a06 | |||
| 89e575ed34 | |||
| c592af7e8e | |||
| 461042f3f9 | |||
| cf517f50d8 | |||
| be631ed584 | |||
| 9e0cd2fcf3 | |||
| 44c128aade | |||
| 6912ae7b14 | |||
| f19adb896c | |||
| c3f90af3ef | |||
| a5e55ffd75 | |||
| 3b4df0aead | |||
| 8576e07b73 | |||
| 83c41dcf87 | |||
| 550b7148a5 | |||
| 047fddbcd8 | |||
| dd2530bb09 | |||
| 897ff241ce | |||
| 6f18fa39e8 | |||
| 348a558a15 | |||
| b412796fc7 | |||
| 6597c4680c | |||
| df8747eb10 | |||
| 04134dccab | |||
| 4d0efccb55 | |||
| 115f205cbc | |||
| 039ec78d35 | |||
| 9cfd3a4506 | |||
| 4281faa98a | |||
| 5189d42d68 | |||
| 9b6e7cb800 | |||
| ed387555e9 | |||
| dd03e18fee | |||
| 1079c57fd0 | |||
| ebe0b727d8 | |||
| ad895f7010 | |||
| 685f9248e4 | |||
| 0ffa4e72ac | |||
| c8a1a38147 | |||
| 8624682db1 | |||
| 4caee55a76 | |||
| fffc1b5d04 | |||
| 6a7e39aa64 | |||
| 6306c78f79 | |||
| b9a1c429b3 | |||
| 0dd1640a54 |
@@ -0,0 +1 @@
|
||||
build/
|
||||
@@ -0,0 +1,115 @@
|
||||
name: Build PX4 .deb Package
|
||||
description: Build PX4 SITL, run cpack, validate the .deb, and upload artifact
|
||||
|
||||
inputs:
|
||||
target:
|
||||
description: 'Build target: default or sih'
|
||||
required: true
|
||||
artifact-name:
|
||||
description: Name for the uploaded artifact
|
||||
required: true
|
||||
ccache-key-prefix:
|
||||
description: Prefix for ccache cache keys
|
||||
default: deb-ccache
|
||||
ccache-max-size:
|
||||
description: Maximum ccache size
|
||||
default: 400M
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Restore ccache
|
||||
id: ccache-restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ${{ inputs.ccache-key-prefix }}-${{ github.ref_name }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ inputs.ccache-key-prefix }}-${{ github.ref_name }}-
|
||||
${{ inputs.ccache-key-prefix }}-${{ github.base_ref || 'main' }}-
|
||||
${{ inputs.ccache-key-prefix }}-
|
||||
|
||||
- name: Configure ccache
|
||||
shell: bash
|
||||
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 = ${{ inputs.ccache-max-size }}" >> ~/.ccache/ccache.conf
|
||||
echo "hash_dir = false" >> ~/.ccache/ccache.conf
|
||||
echo "compiler_check = content" >> ~/.ccache/ccache.conf
|
||||
ccache -s
|
||||
ccache -z
|
||||
|
||||
- name: Build PX4 SITL
|
||||
shell: bash
|
||||
run: make px4_sitl_${{ inputs.target }}
|
||||
|
||||
- name: ccache stats
|
||||
if: always()
|
||||
shell: bash
|
||||
run: ccache -s
|
||||
|
||||
- name: Save ccache
|
||||
uses: actions/cache/save@v4
|
||||
if: always()
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ${{ inputs.ccache-key-prefix }}-${{ github.ref_name }}-${{ github.sha }}
|
||||
|
||||
- name: Build .deb package
|
||||
shell: bash
|
||||
run: |
|
||||
cd build/px4_sitl_${{ inputs.target }}
|
||||
cpack -G DEB
|
||||
|
||||
- name: Print package info and contents
|
||||
shell: bash
|
||||
run: |
|
||||
cd build/px4_sitl_${{ inputs.target }}
|
||||
echo "--- Package info ---"
|
||||
dpkg-deb -I *.deb
|
||||
echo "--- Package contents ---"
|
||||
dpkg-deb -c *.deb
|
||||
|
||||
- name: Validate sih package
|
||||
if: inputs.target == 'sih'
|
||||
shell: bash
|
||||
run: |
|
||||
cd build/px4_sitl_sih
|
||||
echo "--- Verify NO Gazebo resources ---"
|
||||
! dpkg-deb -c px4_*.deb | grep share/gz > /dev/null && echo "PASS: no Gazebo" || { echo "FAIL: Gazebo found"; exit 1; }
|
||||
echo "--- Install test ---"
|
||||
dpkg -i px4_*.deb
|
||||
test -x /opt/px4/bin/px4 || { echo "FAIL: px4 binary not found"; exit 1; }
|
||||
test -L /usr/bin/px4 || { echo "FAIL: symlink not created"; exit 1; }
|
||||
test ! -d /opt/px4/share/gz || { echo "FAIL: Gazebo dir should not exist"; exit 1; }
|
||||
echo "--- Smoke test ---"
|
||||
/opt/px4/bin/px4 -h
|
||||
echo "PASS: sih package validation successful"
|
||||
|
||||
- name: Validate gazebo package
|
||||
if: inputs.target == 'default'
|
||||
shell: bash
|
||||
run: |
|
||||
cd build/px4_sitl_default
|
||||
echo "--- Verify Gazebo resources in package ---"
|
||||
dpkg-deb -c px4-gazebo_*.deb | grep share/gz/models > /dev/null || { echo "FAIL: models missing"; exit 1; }
|
||||
dpkg-deb -c px4-gazebo_*.deb | grep share/gz/worlds > /dev/null || { echo "FAIL: worlds missing"; exit 1; }
|
||||
echo "--- Install test ---"
|
||||
dpkg -i px4-gazebo_*.deb
|
||||
test -x /opt/px4-gazebo/bin/px4 || { echo "FAIL: px4 binary not found"; exit 1; }
|
||||
test -x /opt/px4-gazebo/bin/px4-gazebo || { echo "FAIL: wrapper not found"; exit 1; }
|
||||
test -L /usr/bin/px4-gazebo || { echo "FAIL: symlink not created"; exit 1; }
|
||||
test -d /opt/px4-gazebo/share/gz/models || { echo "FAIL: Gazebo models not installed"; exit 1; }
|
||||
echo "--- Smoke test ---"
|
||||
/opt/px4-gazebo/bin/px4 -h
|
||||
echo "PASS: gazebo package validation successful"
|
||||
|
||||
- name: Upload .deb artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ inputs.artifact-name }}
|
||||
path: build/px4_sitl_${{ inputs.target }}/*.deb
|
||||
if-no-files-found: error
|
||||
@@ -0,0 +1,21 @@
|
||||
name: Build Gazebo Classic SITL
|
||||
description: Build PX4 firmware and Gazebo Classic plugins with ccache stats
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Build - PX4 Firmware (SITL)
|
||||
shell: bash
|
||||
run: make px4_sitl_default
|
||||
|
||||
- name: Cache - Stats after PX4 Firmware
|
||||
shell: bash
|
||||
run: ccache -s
|
||||
|
||||
- name: Build - Gazebo Classic Plugins
|
||||
shell: bash
|
||||
run: make px4_sitl_default sitl_gazebo-classic
|
||||
|
||||
- name: Cache - Stats after Gazebo Plugins
|
||||
shell: bash
|
||||
run: ccache -s
|
||||
@@ -0,0 +1,22 @@
|
||||
name: Save ccache
|
||||
description: Print ccache stats and save to cache
|
||||
|
||||
inputs:
|
||||
cache-primary-key:
|
||||
description: Primary cache key from setup-ccache output
|
||||
required: true
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Cache - Stats
|
||||
if: always()
|
||||
shell: bash
|
||||
run: ccache -s
|
||||
|
||||
- name: Cache - Save ccache
|
||||
if: always()
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ${{ inputs.cache-primary-key }}
|
||||
@@ -0,0 +1,56 @@
|
||||
name: Setup ccache
|
||||
description: Restore ccache from cache and configure ccache.conf
|
||||
|
||||
inputs:
|
||||
cache-key-prefix:
|
||||
description: Cache key prefix (e.g. ccache-sitl)
|
||||
required: true
|
||||
max-size:
|
||||
description: Max ccache size (e.g. 300M)
|
||||
required: false
|
||||
default: '300M'
|
||||
base-dir:
|
||||
description: ccache base_dir value
|
||||
required: false
|
||||
default: '${GITHUB_WORKSPACE}'
|
||||
install-ccache:
|
||||
description: Install ccache via apt before configuring
|
||||
required: false
|
||||
default: 'false'
|
||||
|
||||
outputs:
|
||||
cache-primary-key:
|
||||
description: Primary cache key (pass to save-ccache)
|
||||
value: ${{ steps.restore.outputs.cache-primary-key }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Cache - Install ccache
|
||||
if: inputs.install-ccache == 'true'
|
||||
shell: bash
|
||||
run: apt-get update && apt-get install -y ccache
|
||||
|
||||
- name: Cache - Restore ccache
|
||||
id: restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ${{ inputs.cache-key-prefix }}-${{ github.ref_name }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ inputs.cache-key-prefix }}-${{ github.ref_name }}-
|
||||
${{ inputs.cache-key-prefix }}-${{ github.base_ref || 'main' }}-
|
||||
${{ inputs.cache-key-prefix }}-
|
||||
|
||||
- name: Cache - Configure ccache
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p ~/.ccache
|
||||
echo "base_dir = ${{ inputs.base-dir }}" > ~/.ccache/ccache.conf
|
||||
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||
echo "compression_level = 6" >> ~/.ccache/ccache.conf
|
||||
echo "max_size = ${{ inputs.max-size }}" >> ~/.ccache/ccache.conf
|
||||
echo "hash_dir = false" >> ~/.ccache/ccache.conf
|
||||
echo "compiler_check = content" >> ~/.ccache/ccache.conf
|
||||
ccache -s
|
||||
ccache -z
|
||||
@@ -0,0 +1,220 @@
|
||||
name: SITL Packages and Containers
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: ['v*']
|
||||
pull_request:
|
||||
paths:
|
||||
- 'cmake/package.cmake'
|
||||
- 'platforms/posix/CMakeLists.txt'
|
||||
- 'Tools/packaging/**'
|
||||
- 'boards/px4/sitl/sih.px4board'
|
||||
- '.github/workflows/build_deb_package.yml'
|
||||
- '.github/actions/build-deb/**'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
deploy_containers:
|
||||
description: 'Push container images to registry'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Setup: extract version and determine whether to push containers
|
||||
# ---------------------------------------------------------------------------
|
||||
setup:
|
||||
name: Setup
|
||||
runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
|
||||
outputs:
|
||||
px4_version: ${{ steps.version.outputs.px4_version }}
|
||||
should_push: ${{ steps.push.outputs.should_push }}
|
||||
steps:
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set PX4 version
|
||||
id: version
|
||||
run: echo "px4_version=$(git describe --tags --match 'v[0-9]*')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Check if we should push containers
|
||||
id: push
|
||||
run: |
|
||||
if [[ "${{ startsWith(github.ref, 'refs/tags/') }}" == "true" ]] || \
|
||||
[[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.deploy_containers }}" == "true" ]]; then
|
||||
echo "should_push=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "should_push=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Build .deb packages (all distros, arches, targets)
|
||||
# ---------------------------------------------------------------------------
|
||||
build-deb:
|
||||
name: "Build .deb (${{ matrix.target }}/${{ matrix.codename }}/${{ matrix.arch }})"
|
||||
needs: setup
|
||||
runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
|
||||
container:
|
||||
image: ${{ matrix.container }}
|
||||
volumes:
|
||||
- /github/workspace:/github/workspace
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- { codename: noble, arch: amd64, runner: x64, container: "ubuntu:24.04", target: default, setup_flags: "" }
|
||||
- { codename: noble, arch: arm64, runner: arm64, container: "ubuntu:24.04", target: default, setup_flags: "" }
|
||||
- { codename: jammy, arch: amd64, runner: x64, container: "ubuntu:22.04", target: default, setup_flags: "" }
|
||||
- { codename: jammy, arch: arm64, runner: arm64, container: "ubuntu:22.04", target: default, setup_flags: "" }
|
||||
- { codename: noble, arch: amd64, runner: x64, container: "ubuntu:24.04", target: sih, setup_flags: "--no-sim-tools" }
|
||||
- { codename: noble, arch: arm64, runner: arm64, container: "ubuntu:24.04", target: sih, setup_flags: "--no-sim-tools" }
|
||||
- { codename: jammy, arch: amd64, runner: x64, container: "ubuntu:22.04", target: sih, setup_flags: "--no-sim-tools" }
|
||||
- { codename: jammy, arch: arm64, runner: arm64, container: "ubuntu:22.04", target: sih, setup_flags: "--no-sim-tools" }
|
||||
env:
|
||||
RUNS_IN_DOCKER: true
|
||||
steps:
|
||||
- uses: runs-on/action@v2
|
||||
|
||||
- name: Fix git in container
|
||||
run: |
|
||||
apt-get update && apt-get install -y git
|
||||
git config --global --add safe.directory $(realpath .)
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
fetch-tags: true
|
||||
|
||||
- name: Use AWS regional apt mirror
|
||||
if: startsWith(runner.name, 'runs-on--')
|
||||
run: ./Tools/ci/use_aws_apt_mirror.sh
|
||||
|
||||
- name: Cache apt packages
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /var/cache/apt/archives
|
||||
key: apt-${{ matrix.target }}-${{ matrix.codename }}-${{ matrix.arch }}-${{ hashFiles('Tools/setup/ubuntu.sh') }}
|
||||
restore-keys: apt-${{ matrix.target }}-${{ matrix.codename }}-${{ matrix.arch }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: ./Tools/setup/ubuntu.sh --no-nuttx ${{ matrix.setup_flags }}
|
||||
|
||||
- name: Build and package .deb
|
||||
uses: ./.github/actions/build-deb
|
||||
with:
|
||||
target: ${{ matrix.target }}
|
||||
artifact-name: px4-sitl-debs-${{ matrix.target }}-${{ matrix.codename }}-${{ matrix.arch }}
|
||||
ccache-key-prefix: deb-ccache-${{ matrix.target }}-${{ matrix.codename }}-${{ matrix.arch }}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Build Docker images from Noble .debs
|
||||
# ---------------------------------------------------------------------------
|
||||
build-docker:
|
||||
name: "Build Image (${{ matrix.image }}/${{ matrix.arch }})"
|
||||
needs: [setup, build-deb]
|
||||
runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- { image: sih, repo: px4-sitl, target: sih, arch: amd64, runner: x64, platform: "linux/amd64", dockerfile: Dockerfile.sih }
|
||||
- { image: sih, repo: px4-sitl, target: sih, arch: arm64, runner: arm64, platform: "linux/arm64", dockerfile: Dockerfile.sih }
|
||||
- { image: gazebo, repo: px4-sitl-gazebo, target: default, arch: amd64, runner: x64, platform: "linux/amd64", dockerfile: Dockerfile.gazebo }
|
||||
- { image: gazebo, repo: px4-sitl-gazebo, target: default, arch: arm64, runner: arm64, platform: "linux/arm64", dockerfile: Dockerfile.gazebo }
|
||||
steps:
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: false
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Download Noble .deb artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: px4-sitl-debs-${{ matrix.target }}-noble-${{ matrix.arch }}
|
||||
path: docker-context
|
||||
|
||||
- name: Prepare build context
|
||||
run: cp Tools/packaging/px4-entrypoint.sh docker-context/
|
||||
|
||||
- name: Login to registries
|
||||
if: needs.setup.outputs.should_push == 'true'
|
||||
run: |
|
||||
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
|
||||
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: docker-container
|
||||
platforms: ${{ matrix.platform }}
|
||||
|
||||
- name: Build and push container image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: docker-context
|
||||
file: Tools/packaging/${{ matrix.dockerfile }}
|
||||
tags: |
|
||||
px4io/${{ matrix.repo }}:${{ needs.setup.outputs.px4_version }}-${{ matrix.arch }}
|
||||
px4io/${{ matrix.repo }}:latest-${{ matrix.arch }}
|
||||
ghcr.io/px4/${{ matrix.repo }}:${{ needs.setup.outputs.px4_version }}-${{ matrix.arch }}
|
||||
ghcr.io/px4/${{ matrix.repo }}:latest-${{ matrix.arch }}
|
||||
platforms: ${{ matrix.platform }}
|
||||
load: false
|
||||
push: ${{ needs.setup.outputs.should_push == 'true' }}
|
||||
provenance: false
|
||||
cache-from: type=gha,scope=sitl-${{ matrix.image }}-${{ matrix.arch }}
|
||||
cache-to: type=gha,mode=max,scope=sitl-${{ matrix.image }}-${{ matrix.arch }}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Deploy: create multi-arch manifests and push to registries
|
||||
# ---------------------------------------------------------------------------
|
||||
deploy:
|
||||
name: "Deploy (${{ matrix.image }})"
|
||||
needs: [setup, build-docker]
|
||||
if: needs.setup.outputs.should_push == 'true'
|
||||
runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- { image: sih, repo: px4-sitl }
|
||||
- { image: gazebo, repo: px4-sitl-gazebo }
|
||||
steps:
|
||||
- uses: runs-on/action@v2
|
||||
|
||||
- name: Login to registries
|
||||
run: |
|
||||
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
|
||||
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
|
||||
|
||||
- name: Create and push multi-arch manifests
|
||||
run: |
|
||||
VERSION="${{ needs.setup.outputs.px4_version }}"
|
||||
|
||||
for REGISTRY in px4io ghcr.io/px4; do
|
||||
IMAGE="${REGISTRY}/${{ matrix.repo }}"
|
||||
|
||||
for TAG in ${VERSION} latest; do
|
||||
docker manifest create ${IMAGE}:${TAG} \
|
||||
--amend ${IMAGE}:${TAG}-arm64 \
|
||||
--amend ${IMAGE}:${TAG}-amd64
|
||||
|
||||
docker manifest annotate ${IMAGE}:${TAG} ${IMAGE}:${TAG}-arm64 --arch arm64
|
||||
docker manifest annotate ${IMAGE}:${TAG} ${IMAGE}:${TAG}-amd64 --arch amd64
|
||||
|
||||
docker manifest push ${IMAGE}:${TAG}
|
||||
done
|
||||
done
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
PX4_SBOM_DISABLE: 1
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
git config --system --add safe.directory '*'
|
||||
make ${{ matrix.check }}
|
||||
|
||||
- name: Uploading Coverage to Codecov.io
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
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
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
steps:
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -49,6 +49,10 @@ jobs:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Use AWS regional apt mirror
|
||||
if: startsWith(runner.name, 'runs-on--')
|
||||
run: ./Tools/ci/use_aws_apt_mirror.sh
|
||||
|
||||
- name: Install Deps, Build, and Make Quick Check
|
||||
run: |
|
||||
# we need to install dependencies and build on the same step
|
||||
|
||||
@@ -24,6 +24,11 @@ on:
|
||||
description: 'Container tag (e.g. v1.16.0)'
|
||||
required: true
|
||||
type: string
|
||||
build_ref:
|
||||
description: 'Git ref to build from (branch, tag, or SHA). Leave empty to build from the dispatch ref.'
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
deploy_to_registry:
|
||||
description: 'Whether to push built images to the registry'
|
||||
required: false
|
||||
@@ -45,9 +50,10 @@ jobs:
|
||||
meta_tags: ${{ steps.meta.outputs.tags }}
|
||||
meta_labels: ${{ steps.meta.outputs.labels }}
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
- uses: actions/checkout@v4
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
ref: ${{ github.event.inputs.build_ref || github.ref }}
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
@@ -64,7 +70,7 @@ jobs:
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/PX4/px4-dev
|
||||
@@ -89,22 +95,23 @@ jobs:
|
||||
runner: x64
|
||||
runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
- uses: actions/checkout@v4
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
ref: ${{ github.event.inputs.build_ref || github.ref }}
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v4
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v4
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
with:
|
||||
registry: ghcr.io
|
||||
@@ -112,13 +119,13 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver: docker-container
|
||||
platforms: ${{ matrix.platform }}
|
||||
|
||||
- name: Build and Load Container Image
|
||||
uses: docker/build-push-action@v6
|
||||
uses: docker/build-push-action@v7
|
||||
id: docker
|
||||
with:
|
||||
context: Tools/setup
|
||||
@@ -131,7 +138,7 @@ jobs:
|
||||
push: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
provenance: false
|
||||
cache-from: type=gha,scope=${{ matrix.arch }}
|
||||
cache-to: type=gha,mode=max,scope=${{ matrix.arch }}
|
||||
cache-to: type=gha,mode=max,scope=${{ matrix.arch }},ignore-error=true
|
||||
|
||||
deploy:
|
||||
name: Deploy To Registry
|
||||
@@ -140,23 +147,27 @@ jobs:
|
||||
packages: write
|
||||
runs-on: [runs-on,"runner=4cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
|
||||
needs: [build, setup]
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
if: |
|
||||
!cancelled() &&
|
||||
needs.setup.result == 'success' &&
|
||||
(startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry == 'true'))
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
- uses: actions/checkout@v4
|
||||
- uses: runs-on/action@v2
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
ref: ${{ github.event.inputs.build_ref || github.ref }}
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
@@ -164,10 +175,10 @@ jobs:
|
||||
|
||||
- name: Verify Images Exist Before Creating Manifest
|
||||
run: |
|
||||
docker manifest inspect px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64 || echo "⚠️ Warning: No ARM64 image found!"
|
||||
docker manifest inspect px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64 || echo "⚠️ Warning: No AMD64 image found!"
|
||||
docker manifest inspect ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64 || echo "⚠️ Warning: No ARM64 image found!"
|
||||
docker manifest inspect ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64 || echo "⚠️ Warning: No AMD64 image found!"
|
||||
docker manifest inspect px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64
|
||||
docker manifest inspect px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64
|
||||
docker manifest inspect ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64
|
||||
docker manifest inspect ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64
|
||||
|
||||
- name: Create and Push Multi-Arch Manifest for Docker Hub
|
||||
run: |
|
||||
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
contents: read
|
||||
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
||||
container:
|
||||
image: px4io/px4-dev:v1.17.0-beta1
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
|
||||
@@ -132,7 +132,7 @@ jobs:
|
||||
contents: write
|
||||
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
||||
container:
|
||||
image: px4io/px4-dev:v1.17.0-beta1
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
- name: main test
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
git config --system --add safe.directory '*'
|
||||
make tests TESTFILTER=EKF
|
||||
|
||||
- name: Check if there is a functional change
|
||||
|
||||
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
|
||||
env:
|
||||
GIT_COMMITTER_EMAIL: bot@px4.io
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
- name: main test
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
git config --system --add safe.directory '*'
|
||||
make tests TESTFILTER=EKF
|
||||
|
||||
- name: Check if there exists diff and save result in variable
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
"failsafe_web",
|
||||
]
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
|
||||
steps:
|
||||
- name: Install Node v20.18.0
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
name: Analyzing ${{ matrix.target }}
|
||||
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
strategy:
|
||||
matrix:
|
||||
target: [px4_fmu-v5x, px4_fmu-v6x]
|
||||
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
name: Checking ${{ matrix.target }}
|
||||
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
|
||||
image: ghcr.io/px4/px4-dev:v1.17.0-rc2
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
- name: Build PX4 and Run Test [${{ matrix.config }}]
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
git config --system --add safe.directory '*'
|
||||
export PX4_EXTRA_NUTTX_CONFIG='CONFIG_NSH_LOGIN_PASSWORD="test";CONFIG_NSH_CONSOLE_LOGIN=y'
|
||||
echo "PX4_EXTRA_NUTTX_CONFIG: $PX4_EXTRA_NUTTX_CONFIG"
|
||||
|
||||
|
||||
@@ -89,7 +89,9 @@ jobs:
|
||||
. /opt/ros/galactic/setup.bash
|
||||
mkdir -p /opt/px4_ws/src
|
||||
cd /opt/px4_ws/src
|
||||
BRANCH="${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}"
|
||||
# On a PR, target the branch we're merging into (main or release/X.Y).
|
||||
# On a direct push, fall back to the branch we're running on.
|
||||
BRANCH="${GITHUB_BASE_REF:-$GITHUB_REF_NAME}"
|
||||
REPO_URL="https://github.com/Auterion/px4-ros2-interface-lib.git"
|
||||
if git ls-remote --heads "$REPO_URL" "$BRANCH" | grep -q "$BRANCH"; then
|
||||
echo "Cloning px4-ros2-interface-lib with matching branch: $BRANCH"
|
||||
@@ -130,7 +132,7 @@ jobs:
|
||||
run: |
|
||||
. /opt/px4_ws/install/setup.bash
|
||||
/opt/Micro-XRCE-DDS-Agent/build/MicroXRCEAgent udp4 localhost -p 8888 -v 0 &
|
||||
test/ros_test_runner.py --verbose --model iris --upload --force-color
|
||||
test/ros_test_runner.py --verbose --model iris --force-color
|
||||
timeout-minutes: 45
|
||||
|
||||
- name: Upload failed logs
|
||||
|
||||
@@ -39,10 +39,10 @@ jobs:
|
||||
- name: Check for issues
|
||||
id: check
|
||||
run: |
|
||||
if grep -q "NOASSERTION" /tmp/sbom-verify.txt; then
|
||||
if grep -q "<-- UNRESOLVED" /tmp/sbom-verify.txt; then
|
||||
echo "has_issues=true" >> "$GITHUB_OUTPUT"
|
||||
# Extract NOASSERTION lines
|
||||
grep "NOASSERTION" /tmp/sbom-verify.txt | grep -v "skipped" > /tmp/sbom-issues.txt || true
|
||||
# Extract only genuinely unresolved license lines
|
||||
grep "<-- UNRESOLVED" /tmp/sbom-verify.txt > /tmp/sbom-issues.txt || true
|
||||
# Extract copyleft lines
|
||||
sed -n '/Copyleft licenses detected/,/^$/p' /tmp/sbom-verify.txt > /tmp/sbom-copyleft.txt || true
|
||||
else
|
||||
|
||||
+57
-20
@@ -2,45 +2,82 @@
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
Examples of behavior that contributes to a positive environment for our community include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall community
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Publishing others' private information, such as a physical or email address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at lorenz@px4.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at coc@dronecode.org. All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
@@ -220,6 +220,10 @@ menu "examples"
|
||||
source "src/examples/Kconfig"
|
||||
endmenu
|
||||
|
||||
menu "templates"
|
||||
source "src/templates/Kconfig"
|
||||
endmenu
|
||||
|
||||
menu "platforms"
|
||||
depends on PLATFORM_QURT || PLATFORM_POSIX || PLATFORM_NUTTX
|
||||
source "platforms/Kconfig"
|
||||
|
||||
+13
-2
@@ -1,9 +1,11 @@
|
||||
Maintainers
|
||||
===========
|
||||
|
||||
See [the documentation on Maintainers](https://docs.px4.io/main/en/contribute/maintainers.html) to learn about the role of the maintainers and the process to become one.
|
||||
PX4 is maintained by a group of contributors trusted to steward the project. All maintainers listed below are members of the @PX4/dev-team, have write access, and participate in maintainer decisions. We recognize two types: **Code Owners**, responsible for specific components, and **Reviewers**, who help across the project without a fixed component.
|
||||
|
||||
**Active Maintainers**
|
||||
See [the documentation on Maintainers](https://docs.px4.io/main/en/contribute/maintainers) to learn about the role of the maintainers and the process to become one.
|
||||
|
||||
**Code Owners**
|
||||
|
||||
| Name | Sector | GitHub | Chat | email
|
||||
|-------------------------|--------|--------|------|----------------
|
||||
@@ -23,6 +25,15 @@ See [the documentation on Maintainers](https://docs.px4.io/main/en/contribute/ma
|
||||
| Jacob Dahl | Simulation | [@dakejahl](https://github.com/dakejahl) | dakejahl | <dahl.jakejacob@gmail.com>
|
||||
|
||||
|
||||
**Reviewers**
|
||||
|
||||
Reviewers help maintain PX4 across the project without ownership of a specific component.
|
||||
|
||||
| Name | GitHub | Chat | email
|
||||
|------|--------|------|----------------------
|
||||
| _No reviewers yet._ | | |
|
||||
|
||||
|
||||
**Documentation Maintainers**
|
||||
|
||||
| Name | GitHub | Chat | email
|
||||
|
||||
@@ -9,11 +9,16 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/PX4/PX4-Autopilot/releases"><img src="https://img.shields.io/github/release/PX4/PX4-Autopilot.svg" alt="Releases"></a>
|
||||
<a href="https://www.bestpractices.dev/projects/6520"><img src="https://www.bestpractices.dev/projects/6520/badge" alt="OpenSSF Best Practices"></a>
|
||||
<a href="https://github.com/PX4/PX4-Autopilot/releases"><img src="https://img.shields.io/github/release/PX4/PX4-Autopilot.svg" alt="Release"></a>
|
||||
<a href="https://zenodo.org/badge/latestdoi/22634/PX4/PX4-Autopilot"><img src="https://zenodo.org/badge/22634/PX4/PX4-Autopilot.svg" alt="DOI"></a>
|
||||
<a href="https://github.com/PX4/PX4-Autopilot/actions/workflows/build_all_targets.yml"><img src="https://github.com/PX4/PX4-Autopilot/actions/workflows/build_all_targets.yml/badge.svg?branch=main" alt="Build Targets"></a>
|
||||
<a href="https://discord.gg/dronecode"><img src="https://discordapp.com/api/guilds/1022170275984457759/widget.png?style=shield" alt="Discord"></a>
|
||||
<a href="https://discord.gg/dronecode"><img src="https://img.shields.io/discord/1022170275984457759?label=discord&logo=discord&logoColor=white&color=5865F2" alt="Discord"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.bestpractices.dev/projects/6520"><img src="https://www.bestpractices.dev/projects/6520/badge" alt="OpenSSF Best Practices"></a>
|
||||
<a href="https://insights.linuxfoundation.org/project/px4"><img src="https://insights.linuxfoundation.org/api/badge/health-score?project=px4" alt="LFX Health Score"></a>
|
||||
<a href="https://insights.linuxfoundation.org/project/px4"><img src="https://insights.linuxfoundation.org/api/badge/contributors?project=px4" alt="LFX Contributors"></a>
|
||||
<a href="https://insights.linuxfoundation.org/project/px4"><img src="https://insights.linuxfoundation.org/api/badge/active-contributors?project=px4" alt="LFX Active Contributors"></a>
|
||||
</p>
|
||||
|
||||
---
|
||||
@@ -99,6 +104,22 @@ make px4_sitl
|
||||
|
||||
We welcome contributions of all kinds — bug reports, documentation, new features, and code reviews. Please read the [Contribution Guide](https://docs.px4.io/main/en/contribute/) to get started.
|
||||
|
||||
## Citation
|
||||
|
||||
If you use PX4 in academic work, please cite it. BibTeX:
|
||||
|
||||
```bibtex
|
||||
@software{px4_autopilot,
|
||||
author = {Meier, Lorenz and {The PX4 Contributors}},
|
||||
title = {{PX4 Autopilot}},
|
||||
publisher = {Zenodo},
|
||||
doi = {10.5281/zenodo.595432},
|
||||
url = {https://px4.io}
|
||||
}
|
||||
```
|
||||
|
||||
The DOI above is a Zenodo concept DOI that always resolves to the latest release. For a version-pinned citation, see the [Zenodo record](https://doi.org/10.5281/zenodo.595432) or our [`CITATION.cff`](CITATION.cff).
|
||||
|
||||
## Governance
|
||||
|
||||
The PX4 Autopilot project is hosted by the [Dronecode Foundation](https://www.dronecode.org/), a [Linux Foundation](https://www.linuxfoundation.org/) Collaborative Project. Dronecode holds all PX4 trademarks and serves as the project's legal guardian, ensuring vendor-neutral stewardship — no single company owns the name or controls the roadmap. The source code is licensed under the [BSD 3-Clause](LICENSE) license, so you are free to use, modify, and distribute it in your own projects.
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
param set UAVCAN_ENABLE 0
|
||||
|
||||
param set-default CA_AIRFRAME 1
|
||||
param set-default CA_ROTOR_COUNT 1
|
||||
param set-default CA_ROTOR0_PX 0.3
|
||||
|
||||
@@ -38,7 +39,6 @@ param set-default SYS_HITL 2
|
||||
# - without real battery
|
||||
param set-default CBRK_SUPPLY_CHK 894281
|
||||
|
||||
param set SIH_T_MAX 6
|
||||
param set SIH_MASS 0.3
|
||||
param set SIH_IXX 0.00402
|
||||
param set SIH_IYY 0.0144
|
||||
@@ -48,3 +48,21 @@ param set SIH_KDV 0.2
|
||||
|
||||
param set SIH_VEHICLE_TYPE 1 # sih as fixed wing
|
||||
param set RWTO_TKOFF 1 # enable takeoff from runway (as opposed to launched)
|
||||
|
||||
# pusher propeller model with advance ratio, model from UIUC APC 8x6"
|
||||
param set SIH_F_T_MAX 6
|
||||
param set SIH_F_Q_MAX 0.03
|
||||
# if SIH_F_CT0 > 0, SIH_F_T_MAX and SIH_F_Q_MAX will be overridden
|
||||
param set SIH_F_CT0 0.131
|
||||
param set SIH_F_CT1 0.004
|
||||
param set SIH_F_CT2 -0.146
|
||||
param set SIH_F_CP0 0.0777
|
||||
param set SIH_F_CP1 0.0498
|
||||
param set SIH_F_CP2 -0.11
|
||||
param set SIH_F_DIA_INCH 8
|
||||
param set SIH_F_RPM_MAX 9000
|
||||
|
||||
param set-default FW_AIRSPD_MIN 7
|
||||
param set-default FW_AIRSPD_TRIM 10
|
||||
param set-default FW_AIRSPD_MAX 12
|
||||
param set-default FW_PSP_OFF 0.5
|
||||
|
||||
@@ -28,6 +28,7 @@ param set-default VT_FW_DIFTHR_EN 1
|
||||
param set-default VT_FW_DIFTHR_S_Y 0.3
|
||||
param set-default MPC_MAN_Y_MAX 60
|
||||
param set-default MC_PITCH_P 5
|
||||
param set-default FW_PSP_OFF 5
|
||||
|
||||
param set-default CA_AIRFRAME 4
|
||||
param set-default CA_ROTOR_COUNT 2
|
||||
@@ -56,7 +57,6 @@ param set-default HIL_ACT_REV 32
|
||||
param set-default MAV_TYPE 19
|
||||
|
||||
|
||||
|
||||
# set SYS_HITL to 2 to start the SIH and avoid sensors startup
|
||||
param set-default SYS_HITL 2
|
||||
|
||||
@@ -66,8 +66,9 @@ param set-default CBRK_SUPPLY_CHK 894281
|
||||
|
||||
param set-default SENS_DPRES_OFF 0.001
|
||||
|
||||
param set SIH_T_MAX 2.0
|
||||
param set SIH_Q_MAX 0.0165
|
||||
# tailsitter is equipped with two forward propellers
|
||||
param set SIH_F_T_MAX 2
|
||||
param set SIH_F_Q_MAX 0.0165
|
||||
param set SIH_MASS 0.2
|
||||
# IXX and IZZ are inverted from the thesis as the body frame is pitched by 90 deg
|
||||
param set SIH_IXX 0.00354
|
||||
@@ -77,6 +78,19 @@ param set SIH_IXZ 0
|
||||
param set SIH_KDV 0.2
|
||||
param set SIH_L_ROLL 0.145
|
||||
|
||||
# propeller diameter, rpm, and coeffs coming from the thesis
|
||||
# Modeling and control of a flying wing tailsitter unmanned aerial vehicle."
|
||||
# Chiappinelli, Romain, supervised by Nahon, Meyer, McGill University, Masters thesis, 2018.
|
||||
# if SIH_F_CT0 > 0, SIH_F_T_MAX and SIH_F_Q_MAX will be overridden
|
||||
param set SIH_F_CT0 0.1342
|
||||
param set SIH_F_CT1 -0.1196
|
||||
param set SIH_F_CT2 -0.1281
|
||||
param set SIH_F_CP0 0.0522
|
||||
param set SIH_F_CP1 -0.0146
|
||||
param set SIH_F_CP2 -0.0602
|
||||
param set SIH_F_DIA_INCH 5
|
||||
param set SIH_F_RPM_MAX 14000
|
||||
|
||||
# sih as tailsitter
|
||||
param set SIH_VEHICLE_TYPE 2
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ param set-default CA_SV_CS2_TYPE 4 # rudder
|
||||
param set-default FW_AIRSPD_MIN 7
|
||||
param set-default FW_AIRSPD_TRIM 10
|
||||
param set-default FW_AIRSPD_MAX 12
|
||||
param set-default VT_FWD_THRUST_EN 1
|
||||
|
||||
param set-default HIL_ACT_FUNC1 101
|
||||
param set-default HIL_ACT_FUNC2 102
|
||||
@@ -77,6 +78,7 @@ param set-default CBRK_SUPPLY_CHK 894281
|
||||
|
||||
param set-default SENS_DPRES_OFF 0.001
|
||||
|
||||
# quadrotor propellers
|
||||
param set SIH_T_MAX 2.0
|
||||
param set SIH_Q_MAX 0.0165
|
||||
param set SIH_MASS 0.2
|
||||
@@ -88,5 +90,18 @@ param set SIH_IXZ 0
|
||||
param set SIH_KDV 0.2
|
||||
param set SIH_L_ROLL 0.2
|
||||
|
||||
# pusher propeller model with advance ratio, model from UIUC APC 8x6"
|
||||
param set SIH_F_T_MAX 6
|
||||
param set SIH_F_Q_MAX 0.03
|
||||
# if SIH_F_CT0 > 0, SIH_F_T_MAX and SIH_F_Q_MAX will be overridden
|
||||
param set SIH_F_CT0 0.131
|
||||
param set SIH_F_CT1 0.004
|
||||
param set SIH_F_CT2 -0.146
|
||||
param set SIH_F_CP0 0.0777
|
||||
param set SIH_F_CP1 0.0498
|
||||
param set SIH_F_CP2 -0.11
|
||||
param set SIH_F_DIA_INCH 8
|
||||
param set SIH_F_RPM_MAX 9000
|
||||
|
||||
# sih as standard vtol
|
||||
param set SIH_VEHICLE_TYPE 3
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# @name SIH Hexacopter X
|
||||
#
|
||||
# @type Simulation
|
||||
# @class Copter
|
||||
#
|
||||
# @maintainer Romain Chiappinelli <romain.chiap@gmail.com>
|
||||
#
|
||||
# @board px4_fmu-v2 exclude
|
||||
#
|
||||
|
||||
. ${R}etc/init.d/rc.mc_defaults
|
||||
|
||||
param set UAVCAN_ENABLE 0
|
||||
|
||||
# set SYS_HITL to 2 to start the SIH and avoid sensors startup
|
||||
param set SYS_HITL 2
|
||||
|
||||
# disable some checks to allow to fly:
|
||||
# - without real battery
|
||||
param set-default CBRK_SUPPLY_CHK 894281
|
||||
|
||||
param set SIH_VEHICLE_TYPE 4
|
||||
|
||||
# Symmetric hexacopter X clockwise motor numbering
|
||||
param set-default CA_ROTOR_COUNT 6
|
||||
param set-default CA_ROTOR0_PX 0.866
|
||||
param set-default CA_ROTOR0_PY 0.5
|
||||
param set-default CA_ROTOR1_PX 0
|
||||
param set-default CA_ROTOR1_PY 1
|
||||
param set-default CA_ROTOR1_KM -0.05
|
||||
param set-default CA_ROTOR2_PX -0.866
|
||||
param set-default CA_ROTOR2_PY 0.5
|
||||
param set-default CA_ROTOR3_PX -0.866
|
||||
param set-default CA_ROTOR3_PY -0.5
|
||||
param set-default CA_ROTOR3_KM -0.05
|
||||
param set-default CA_ROTOR4_PX 0
|
||||
param set-default CA_ROTOR4_PY -1
|
||||
param set-default CA_ROTOR5_PX 0.866
|
||||
param set-default CA_ROTOR5_PY -0.5
|
||||
param set-default CA_ROTOR5_KM -0.05
|
||||
|
||||
param set-default HIL_ACT_FUNC1 101
|
||||
param set-default HIL_ACT_FUNC2 102
|
||||
param set-default HIL_ACT_FUNC3 103
|
||||
param set-default HIL_ACT_FUNC4 104
|
||||
param set-default HIL_ACT_FUNC5 105
|
||||
param set-default HIL_ACT_FUNC6 106
|
||||
@@ -49,6 +49,7 @@ if(CONFIG_MODULES_SIMULATION_PWM_OUT_SIM)
|
||||
1101_rc_plane_sih.hil
|
||||
1102_tailsitter_duo_sih.hil
|
||||
1103_standard_vtol_sih.hil
|
||||
1105_rc_hexa_x_sih.hil
|
||||
)
|
||||
if(CONFIG_MODULES_ROVER_ACKERMANN)
|
||||
px4_add_romfs_files(
|
||||
|
||||
@@ -478,6 +478,7 @@ def verify_licenses(source_dir):
|
||||
sub_dir = source_dir / sub_path
|
||||
|
||||
checked_out = sub_dir.is_dir() and any(sub_dir.iterdir())
|
||||
has_explicit_override = sub_path in license_overrides
|
||||
if not checked_out:
|
||||
detected = "(not checked out)"
|
||||
override = license_overrides.get(sub_path, "")
|
||||
@@ -487,9 +488,12 @@ def verify_licenses(source_dir):
|
||||
override = license_overrides.get(sub_path, "")
|
||||
final = override if override else detected
|
||||
|
||||
if final == "NOASSERTION" and checked_out:
|
||||
if final == "NOASSERTION" and has_explicit_override:
|
||||
# Explicitly acknowledged in overrides file — not a failure
|
||||
marker = " (acknowledged)"
|
||||
elif final == "NOASSERTION" and checked_out:
|
||||
has_noassertion = True
|
||||
marker = " <-- NOASSERTION"
|
||||
marker = " <-- UNRESOLVED"
|
||||
elif final == "NOASSERTION" and not checked_out:
|
||||
marker = " (skipped)"
|
||||
else:
|
||||
@@ -521,7 +525,7 @@ def verify_licenses(source_dir):
|
||||
print()
|
||||
|
||||
if has_noassertion:
|
||||
print("FAIL: Some submodules resolved to NOASSERTION. "
|
||||
print("FAIL: Some submodules have unresolved licenses. "
|
||||
"Add an entry to Tools/ci/license-overrides.yaml or check the LICENSE file.")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -9,6 +9,12 @@ overrides:
|
||||
license: "LGPL-3.0-only AND MIT"
|
||||
comment: "Generator is LGPL-3.0; PX4 ships only MIT-licensed generated headers."
|
||||
|
||||
Tools/simulation/gazebo-classic/sitl_gazebo-classic:
|
||||
license: "BSD-3-Clause"
|
||||
comment: >-
|
||||
PX4 org project. No LICENSE file in repo; source files carry
|
||||
BSD-3-Clause headers consistent with the PX4 project license.
|
||||
|
||||
src/lib/cdrstream/cyclonedds:
|
||||
license: "EPL-2.0 OR BSD-3-Clause"
|
||||
comment: >-
|
||||
|
||||
@@ -29,6 +29,9 @@ for build_dir_path in build/*/ ; do
|
||||
# Events
|
||||
mkdir -p artifacts/$build_dir/events/
|
||||
cp $build_dir_path/events/all_events.json.xz artifacts/$build_dir/events/ 2>/dev/null || true
|
||||
# Also copy to top level: firmware advertises the metadata URI without the events/ subdirectory
|
||||
# (see src/lib/component_information/CMakeLists.txt comp_metadata_events_uri_board)
|
||||
cp $build_dir_path/events/all_events.json.xz artifacts/$build_dir/ 2>/dev/null || true
|
||||
# SBOM
|
||||
cp $build_dir_path/*.sbom.spdx.json artifacts/$build_dir/ 2>/dev/null || true
|
||||
ls -la artifacts/$build_dir
|
||||
|
||||
Executable
+147
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Run clang-tidy incrementally on files changed in a PR.
|
||||
|
||||
Usage: run-clang-tidy-pr.py <base-ref>
|
||||
base-ref: e.g. origin/main
|
||||
|
||||
Computes the set of translation units (TUs) affected by the PR diff,
|
||||
then invokes Tools/run-clang-tidy.py on that subset only.
|
||||
Exits 0 silently when no C++ files were changed.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
EXTENSIONS_CPP = {'.cpp', '.c'}
|
||||
EXTENSIONS_HDR = {'.hpp', '.h'}
|
||||
# Manual exclusions from Makefile:508
|
||||
EXCLUDE_EXTRA = '|'.join([
|
||||
'src/systemcmds/tests',
|
||||
'src/examples',
|
||||
'src/modules/gyro_fft/CMSIS_5',
|
||||
'src/lib/drivers/smbus',
|
||||
'src/drivers/gpio',
|
||||
r'src/modules/commander/failsafe/emscripten',
|
||||
r'failsafe_test\.dir',
|
||||
])
|
||||
|
||||
|
||||
def repo_root():
|
||||
try:
|
||||
return subprocess.check_output(
|
||||
['git', 'rev-parse', '--show-toplevel'], text=True).strip()
|
||||
except subprocess.CalledProcessError:
|
||||
print('error: not inside a git repository', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def changed_files(base_ref, root):
|
||||
try:
|
||||
out = subprocess.check_output(
|
||||
['git', 'diff', '--name-only', f'{base_ref}...HEAD',
|
||||
'--', '*.cpp', '*.hpp', '*.h', '*.c'],
|
||||
text=True, cwd=root).strip()
|
||||
return out.splitlines() if out else []
|
||||
except subprocess.CalledProcessError:
|
||||
print(f'error: could not diff against "{base_ref}" — '
|
||||
'is the ref valid and fetched?', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def submodule_paths(root):
|
||||
# Returns [] if .gitmodules is absent or has no paths — both valid
|
||||
try:
|
||||
out = subprocess.check_output(
|
||||
['git', 'config', '--file', '.gitmodules',
|
||||
'--get-regexp', 'path'],
|
||||
text=True, cwd=root).strip()
|
||||
return [line.split()[1] for line in out.splitlines()]
|
||||
except subprocess.CalledProcessError:
|
||||
return []
|
||||
|
||||
|
||||
def build_exclude(root):
|
||||
submodules = '|'.join(submodule_paths(root))
|
||||
return f'{submodules}|{EXCLUDE_EXTRA}' if submodules else EXCLUDE_EXTRA
|
||||
|
||||
|
||||
def load_db(build_dir):
|
||||
db_path = os.path.join(build_dir, 'compile_commands.json')
|
||||
if not os.path.isfile(db_path):
|
||||
print(f'error: {db_path} not found', file=sys.stderr)
|
||||
print('Run "make px4_sitl_default-clang" first to generate '
|
||||
'the compilation database', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
try:
|
||||
with open(db_path) as f:
|
||||
return json.load(f)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f'error: compile_commands.json is malformed: {e}', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def find_tus(changed, db, root):
|
||||
db_files = {e['file'] for e in db}
|
||||
result = set()
|
||||
for f in changed:
|
||||
abs_path = os.path.join(root, f)
|
||||
ext = os.path.splitext(f)[1]
|
||||
if ext in EXTENSIONS_CPP:
|
||||
if abs_path in db_files:
|
||||
result.add(abs_path)
|
||||
elif ext in EXTENSIONS_HDR:
|
||||
hdr = os.path.basename(f)
|
||||
for e in db:
|
||||
try:
|
||||
if hdr in open(e['file']).read():
|
||||
result.add(e['file'])
|
||||
except OSError:
|
||||
pass # file deleted in PR — skip
|
||||
return sorted(result)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument('base_ref',
|
||||
help='Git ref to diff against, e.g. origin/main')
|
||||
args = parser.parse_args()
|
||||
|
||||
root = repo_root()
|
||||
build_dir = os.path.join(root, 'build', 'px4_sitl_default-clang')
|
||||
|
||||
run_tidy = os.path.join(root, 'Tools', 'run-clang-tidy.py')
|
||||
if not os.path.isfile(run_tidy):
|
||||
print(f'error: {run_tidy} not found', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
changed = changed_files(args.base_ref, root)
|
||||
if not changed:
|
||||
print('No C++ files changed — skipping clang-tidy')
|
||||
sys.exit(0)
|
||||
|
||||
db = load_db(build_dir)
|
||||
tus = find_tus(changed, db, root)
|
||||
|
||||
if not tus:
|
||||
print('No matching TUs in compile_commands.json — skipping clang-tidy')
|
||||
sys.exit(0)
|
||||
|
||||
print(f'Running clang-tidy on {len(tus)} translation unit(s)')
|
||||
|
||||
result = subprocess.run(
|
||||
[sys.executable, run_tidy,
|
||||
'-header-filter=.*\\.hpp',
|
||||
'-j0',
|
||||
f'-exclude={build_exclude(root)}',
|
||||
'-p', build_dir] + tus
|
||||
)
|
||||
sys.exit(result.returncode)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Executable
+42
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
# Rewrite the container's apt sources to point at the AWS regional Ubuntu
|
||||
# mirror that is local to the runs-on instance.
|
||||
#
|
||||
# The default archive.ubuntu.com round-robin sometimes serves out-of-sync
|
||||
# index files mid-sync, breaking apt-get update with errors like:
|
||||
# File has unexpected size (25378 != 25381). Mirror sync in progress?
|
||||
# The Canonical-operated EC2 mirrors are region-local and sync aggressively,
|
||||
# eliminating that failure mode.
|
||||
#
|
||||
# This script is a no-op outside runs-on, so it is safe to call from any CI
|
||||
# job (forks, self-hosted runners, local docker runs, etc.) without changing
|
||||
# behavior there.
|
||||
#
|
||||
# Usage (from a workflow step running inside the container):
|
||||
# ./Tools/ci/use_aws_apt_mirror.sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$RUNS_ON_AWS_REGION" ]; then
|
||||
echo "use_aws_apt_mirror: not running on runs-on (RUNS_ON_AWS_REGION unset), skipping"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
MIRROR="http://${RUNS_ON_AWS_REGION}.ec2.archive.ubuntu.com/ubuntu"
|
||||
echo "use_aws_apt_mirror: rewriting apt sources to ${MIRROR}"
|
||||
|
||||
# Noble (24.04+) uses the deb822 format at /etc/apt/sources.list.d/ubuntu.sources
|
||||
if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then
|
||||
sed -i \
|
||||
-e "s|http://archive.ubuntu.com/ubuntu|${MIRROR}|g" \
|
||||
-e "s|http://security.ubuntu.com/ubuntu|${MIRROR}|g" \
|
||||
/etc/apt/sources.list.d/ubuntu.sources
|
||||
fi
|
||||
|
||||
# Jammy (22.04) and earlier use the legacy /etc/apt/sources.list
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
sed -i \
|
||||
-e "s|http://archive.ubuntu.com/ubuntu|${MIRROR}|g" \
|
||||
-e "s|http://security.ubuntu.com/ubuntu|${MIRROR}|g" \
|
||||
/etc/apt/sources.list
|
||||
fi
|
||||
@@ -0,0 +1,84 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
# PX4 SITL Gazebo Harmonic runtime image
|
||||
# Runs PX4 SITL with Gazebo Harmonic. Supports X11 forwarding for GUI.
|
||||
#
|
||||
# Build:
|
||||
# make px4_sitl_default && cd build/px4_sitl_default && cpack -G DEB && cd ../..
|
||||
# docker build -f Tools/packaging/Dockerfile.gazebo -t px4io/px4-sitl-gazebo:v1.17.0 build/px4_sitl_default/
|
||||
#
|
||||
# Run (headless):
|
||||
# docker run --rm -it --network host px4io/px4-sitl-gazebo:v1.17.0
|
||||
#
|
||||
# Run (X11 GUI):
|
||||
# xhost +local:docker
|
||||
# docker run --rm -it --network host \
|
||||
# -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||
# --gpus all px4io/px4-sitl-gazebo:v1.17.0
|
||||
|
||||
FROM ubuntu:24.04 AS extract
|
||||
COPY px4-gazebo_*.deb /tmp/
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends binutils \
|
||||
&& dpkg -x /tmp/px4-gazebo_*.deb /staging \
|
||||
&& strip /staging/opt/px4-gazebo/bin/px4 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
FROM ubuntu:24.04
|
||||
LABEL maintainer="PX4 Development Team"
|
||||
LABEL description="PX4 SITL with Gazebo Harmonic simulation"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV RUNS_IN_DOCKER=true
|
||||
|
||||
# Install Gazebo Harmonic with buildkit cache mounts for apt
|
||||
# The --mount=type=cache persists /var/cache/apt and /var/lib/apt across builds
|
||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||
apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
bc \
|
||||
ca-certificates \
|
||||
gnupg \
|
||||
lsb-release \
|
||||
wget \
|
||||
&& wget -q 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" \
|
||||
> /etc/apt/sources.list.d/gazebo-stable.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
gz-harmonic
|
||||
|
||||
# Install PX4 files from .deb
|
||||
COPY --from=extract /staging/opt/px4-gazebo /opt/px4-gazebo
|
||||
RUN ln -sf /opt/px4-gazebo/bin/px4-gazebo /usr/bin/px4-gazebo
|
||||
|
||||
# Create the DART physics engine symlink (avoids needing the -dev package)
|
||||
RUN GZ_PHYSICS_DIR=$(find /usr/lib -maxdepth 3 -type d -name "engine-plugins" -path "*/gz-physics-7/*" 2>/dev/null | head -1) \
|
||||
&& if [ -n "$GZ_PHYSICS_DIR" ] && [ -d "$GZ_PHYSICS_DIR" ]; then \
|
||||
VERSIONED=$(ls "$GZ_PHYSICS_DIR"/libgz-physics*-dartsim-plugin.so.* 2>/dev/null | head -1) \
|
||||
&& [ -n "$VERSIONED" ] \
|
||||
&& ln -sf "$(basename "$VERSIONED")" "$GZ_PHYSICS_DIR/libgz-physics-dartsim-plugin.so"; \
|
||||
fi
|
||||
|
||||
# Gazebo resource paths
|
||||
ENV GZ_SIM_RESOURCE_PATH=/opt/px4-gazebo/share/gz/models:/opt/px4-gazebo/share/gz/worlds
|
||||
ENV GZ_SIM_SYSTEM_PLUGIN_PATH=/opt/px4-gazebo/lib/gz/plugins
|
||||
ENV GZ_SIM_SERVER_CONFIG_PATH=/opt/px4-gazebo/share/gz/server.config
|
||||
ENV PX4_GZ_MODELS=/opt/px4-gazebo/share/gz/models
|
||||
ENV PX4_GZ_WORLDS=/opt/px4-gazebo/share/gz/worlds
|
||||
|
||||
ENV PX4_SIM_MODEL=gz_x500
|
||||
ENV HOME=/root
|
||||
|
||||
# MAVLink, MAVSDK, DDS
|
||||
EXPOSE 14550/udp 14540/udp 8888/udp
|
||||
|
||||
# Platform-adaptive entrypoint: detects Docker Desktop (macOS/Windows) via
|
||||
# host.docker.internal and configures MAVLink + DDS to target the host.
|
||||
COPY px4-entrypoint.sh /opt/px4-gazebo/bin/px4-entrypoint.sh
|
||||
RUN chmod +x /opt/px4-gazebo/bin/px4-entrypoint.sh
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
ENTRYPOINT ["/opt/px4-gazebo/bin/px4-entrypoint.sh"]
|
||||
CMD []
|
||||
@@ -0,0 +1,49 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
# PX4 SITL SIH runtime image
|
||||
# Minimal container that runs PX4 with the SIH physics engine (no Gazebo).
|
||||
#
|
||||
# Build:
|
||||
# make px4_sitl_sih && cd build/px4_sitl_sih && cpack -G DEB && cd ../..
|
||||
# docker build -f Tools/packaging/Dockerfile.sih -t px4io/px4-sitl:v1.17.0 build/px4_sitl_sih/
|
||||
#
|
||||
# Run (Linux):
|
||||
# docker run --rm -it --network host px4io/px4-sitl:v1.17.0
|
||||
#
|
||||
# Run (macOS / Windows):
|
||||
# docker run --rm -it -p 14550:14550/udp -p 14540:14540/udp -p 19410:19410/udp -p 8888:8888/udp px4io/px4-sitl:v1.17.0
|
||||
|
||||
FROM ubuntu:24.04 AS build
|
||||
COPY px4_*.deb /tmp/
|
||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||
apt-get update \
|
||||
&& apt-get install -y --no-install-recommends binutils \
|
||||
&& dpkg -x /tmp/px4_*.deb /staging \
|
||||
&& strip /staging/opt/px4/bin/px4
|
||||
|
||||
FROM ubuntu:24.04
|
||||
LABEL maintainer="PX4 Development Team"
|
||||
LABEL description="PX4 SITL with SIH physics (no simulator dependencies)"
|
||||
|
||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||
apt-get update && apt-get install -y --no-install-recommends bc
|
||||
|
||||
COPY --from=build /staging/opt/px4 /opt/px4
|
||||
RUN ln -sf /opt/px4/bin/px4 /usr/bin/px4
|
||||
|
||||
# Platform-adaptive entrypoint: detects Docker Desktop (macOS/Windows) via
|
||||
# host.docker.internal and configures MAVLink + DDS to target the host.
|
||||
COPY px4-entrypoint.sh /opt/px4/bin/px4-entrypoint.sh
|
||||
RUN chmod +x /opt/px4/bin/px4-entrypoint.sh
|
||||
|
||||
ENV PX4_SIM_MODEL=sihsim_quadx
|
||||
ENV HOME=/root
|
||||
|
||||
# MAVLink (QGC, MAVSDK), DDS (ROS 2), jMAVSim/viewer display
|
||||
EXPOSE 14550/udp 14540/udp 19410/udp 8888/udp
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
ENTRYPOINT ["/opt/px4/bin/px4-entrypoint.sh"]
|
||||
CMD []
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
ln -sf /opt/px4-gazebo/bin/px4-gazebo /usr/bin/px4-gazebo
|
||||
exit 0
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
|
||||
rm -f /usr/bin/px4-gazebo
|
||||
fi
|
||||
exit 0
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
# Docker entrypoint for PX4 SITL containers.
|
||||
#
|
||||
# On Docker Desktop (macOS/Windows), host.docker.internal resolves to the
|
||||
# host machine. We detect this and configure MAVLink + DDS to send to the
|
||||
# host IP instead of localhost (which stays inside the container VM).
|
||||
#
|
||||
# On Linux with --network host, host.docker.internal does not resolve and
|
||||
# PX4 defaults work without modification.
|
||||
|
||||
set -e
|
||||
|
||||
# Detect install prefix (SIH uses /opt/px4, Gazebo uses /opt/px4-gazebo)
|
||||
if [ -d /opt/px4-gazebo ]; then
|
||||
PX4_PREFIX=/opt/px4-gazebo
|
||||
else
|
||||
PX4_PREFIX=/opt/px4
|
||||
fi
|
||||
|
||||
# Resolve host.docker.internal to an IPv4 address. mavlink and uxrce_dds_client
|
||||
# only parse IPv4, and on Docker Desktop for Windows the default `getent hosts`
|
||||
# lookup can return an IPv6 ULA first, which both modules then reject.
|
||||
DOCKER_HOST_IP=$(getent ahostsv4 host.docker.internal 2>/dev/null | awk '/STREAM/ {print $1; exit}')
|
||||
|
||||
if [ -n "$DOCKER_HOST_IP" ]; then
|
||||
# MAVLink: replace default target (127.0.0.1) with the Docker host IP
|
||||
sed -i "s/mavlink start -x -u/mavlink start -x -t $DOCKER_HOST_IP -u/g" \
|
||||
"$PX4_PREFIX/etc/init.d-posix/px4-rc.mavlink"
|
||||
|
||||
# DDS: point uXRCE-DDS client at the host
|
||||
sed -i "s|uxrce_dds_client start -t udp|uxrce_dds_client start -t udp -h $DOCKER_HOST_IP|" \
|
||||
"$PX4_PREFIX/etc/init.d-posix/rcS"
|
||||
fi
|
||||
|
||||
exec "$PX4_PREFIX/bin/px4" "$@"
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
# px4-gazebo: Launch PX4 SITL with Gazebo from the installed .deb package
|
||||
set -e
|
||||
|
||||
PX4_GAZEBO_DIR="$(cd "$(dirname "$(readlink -f "$0")")/.." && pwd)"
|
||||
PX4_BINARY="${PX4_GAZEBO_DIR}/bin/px4"
|
||||
|
||||
# Set Gazebo resource paths so gz-sim finds PX4 models, worlds, and plugins.
|
||||
export PX4_GZ_MODELS="${PX4_GAZEBO_DIR}/share/gz/models"
|
||||
export PX4_GZ_WORLDS="${PX4_GAZEBO_DIR}/share/gz/worlds"
|
||||
export PX4_GZ_PLUGINS="${PX4_GAZEBO_DIR}/lib/gz/plugins"
|
||||
export PX4_GZ_SERVER_CONFIG="${PX4_GAZEBO_DIR}/share/gz/server.config"
|
||||
export GZ_SIM_RESOURCE_PATH="${GZ_SIM_RESOURCE_PATH}:${PX4_GZ_MODELS}:${PX4_GZ_WORLDS}"
|
||||
export GZ_SIM_SYSTEM_PLUGIN_PATH="${GZ_SIM_SYSTEM_PLUGIN_PATH}:${PX4_GZ_PLUGINS}"
|
||||
export GZ_SIM_SERVER_CONFIG_PATH="${PX4_GZ_SERVER_CONFIG}"
|
||||
|
||||
# Gazebo's Physics system searches for "gz-physics-dartsim-plugin" which maps
|
||||
# to the unversioned libgz-physics-dartsim-plugin.so. The runtime package only
|
||||
# ships versioned .so files; the unversioned symlink lives in the -dev package.
|
||||
# Create it if missing so Gazebo finds the DART engine without installing -dev.
|
||||
GZ_PHYSICS_ENGINE_DIR=$(find /usr/lib -maxdepth 3 -type d -name "engine-plugins" -path "*/gz-physics-7/*" 2>/dev/null | head -1)
|
||||
if [ -n "$GZ_PHYSICS_ENGINE_DIR" ] && [ -d "$GZ_PHYSICS_ENGINE_DIR" ]; then
|
||||
UNVERSIONED="$GZ_PHYSICS_ENGINE_DIR/libgz-physics-dartsim-plugin.so"
|
||||
if [ ! -e "$UNVERSIONED" ]; then
|
||||
VERSIONED=$(ls "$GZ_PHYSICS_ENGINE_DIR"/libgz-physics*-dartsim-plugin.so.* 2>/dev/null | head -1)
|
||||
if [ -n "$VERSIONED" ]; then
|
||||
ln -sf "$(basename "$VERSIONED")" "$UNVERSIONED" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
exec "${PX4_BINARY}" "$@"
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
ln -sf /opt/px4/bin/px4 /usr/bin/px4
|
||||
exit 0
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
|
||||
rm -f /usr/bin/px4
|
||||
fi
|
||||
exit 0
|
||||
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
MAVSDK mission test for PX4 SIH SITL in Docker.
|
||||
|
||||
Takes off to 100m, flies a short 4-waypoint box mission, then lands.
|
||||
Validates that the SIH Docker container works end-to-end with MAVSDK.
|
||||
|
||||
Prerequisites:
|
||||
- Docker container running:
|
||||
docker run --rm --network host px4io/px4-sitl:v1.17.0-alpha1
|
||||
- pip install mavsdk
|
||||
- mavsim-viewer running (optional):
|
||||
/path/to/mavsim-viewer -n 1
|
||||
|
||||
Usage:
|
||||
python3 Tools/packaging/test_sih_mission.py
|
||||
python3 Tools/packaging/test_sih_mission.py --speed 10 # faster-than-realtime
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import argparse
|
||||
import sys
|
||||
import time
|
||||
|
||||
from mavsdk import System
|
||||
from mavsdk.mission import MissionItem, MissionPlan
|
||||
|
||||
|
||||
async def run_mission(speed_factor: int = 1):
|
||||
drone = System()
|
||||
print(f"Connecting to drone on udp://:14540 ...")
|
||||
await drone.connect(system_address="udp://:14540")
|
||||
|
||||
print("Waiting for drone to connect...")
|
||||
async for state in drone.core.connection_state():
|
||||
if state.is_connected:
|
||||
print(f"Connected (UUID: {state.uuid if hasattr(state, 'uuid') else 'N/A'})")
|
||||
break
|
||||
|
||||
print("Waiting for global position estimate...")
|
||||
async for health in drone.telemetry.health():
|
||||
if health.is_global_position_ok and health.is_home_position_ok:
|
||||
print("Global position OK")
|
||||
break
|
||||
|
||||
# Get home position for reference
|
||||
async for pos in drone.telemetry.position():
|
||||
home_lat = pos.latitude_deg
|
||||
home_lon = pos.longitude_deg
|
||||
print(f"Home position: {home_lat:.6f}, {home_lon:.6f}")
|
||||
break
|
||||
|
||||
# Build a small box mission at 100m AGL
|
||||
# ~100m offset in each direction
|
||||
offset = 0.001 # roughly 111m at equator
|
||||
mission_items = [
|
||||
MissionItem(
|
||||
home_lat + offset, home_lon,
|
||||
100, 10, True, float('nan'), float('nan'),
|
||||
MissionItem.CameraAction.NONE,
|
||||
float('nan'), float('nan'), float('nan'),
|
||||
float('nan'), float('nan'),
|
||||
MissionItem.VehicleAction.NONE,
|
||||
),
|
||||
MissionItem(
|
||||
home_lat + offset, home_lon + offset,
|
||||
100, 10, True, float('nan'), float('nan'),
|
||||
MissionItem.CameraAction.NONE,
|
||||
float('nan'), float('nan'), float('nan'),
|
||||
float('nan'), float('nan'),
|
||||
MissionItem.VehicleAction.NONE,
|
||||
),
|
||||
MissionItem(
|
||||
home_lat, home_lon + offset,
|
||||
100, 10, True, float('nan'), float('nan'),
|
||||
MissionItem.CameraAction.NONE,
|
||||
float('nan'), float('nan'), float('nan'),
|
||||
float('nan'), float('nan'),
|
||||
MissionItem.VehicleAction.NONE,
|
||||
),
|
||||
MissionItem(
|
||||
home_lat, home_lon,
|
||||
100, 10, True, float('nan'), float('nan'),
|
||||
MissionItem.CameraAction.NONE,
|
||||
float('nan'), float('nan'), float('nan'),
|
||||
float('nan'), float('nan'),
|
||||
MissionItem.VehicleAction.NONE,
|
||||
),
|
||||
]
|
||||
|
||||
mission_plan = MissionPlan(mission_items)
|
||||
|
||||
print(f"Uploading mission ({len(mission_items)} waypoints, 100m AGL)...")
|
||||
await drone.mission.upload_mission(mission_plan)
|
||||
print("Mission uploaded")
|
||||
|
||||
print("Arming...")
|
||||
await drone.action.arm()
|
||||
print("Armed")
|
||||
|
||||
t0 = time.time()
|
||||
print("Starting mission...")
|
||||
await drone.mission.start_mission()
|
||||
|
||||
# Monitor mission progress
|
||||
async for progress in drone.mission.mission_progress():
|
||||
elapsed = time.time() - t0
|
||||
print(f" [{elapsed:6.1f}s] Waypoint {progress.current}/{progress.total}")
|
||||
if progress.current == progress.total:
|
||||
print(f"Mission complete in {elapsed:.1f}s (speed factor: {speed_factor}x)")
|
||||
break
|
||||
|
||||
print("Returning to launch...")
|
||||
await drone.action.return_to_launch()
|
||||
|
||||
# Wait for landing
|
||||
async for in_air in drone.telemetry.in_air():
|
||||
if not in_air:
|
||||
print("Landed")
|
||||
break
|
||||
|
||||
print("Disarming...")
|
||||
await drone.action.disarm()
|
||||
print("Test PASSED")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="PX4 SIH Docker mission test")
|
||||
parser.add_argument("--speed", type=int, default=1,
|
||||
help="PX4_SIM_SPEED_FACTOR (must match container)")
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
asyncio.run(run_mission(args.speed))
|
||||
except KeyboardInterrupt:
|
||||
print("\nInterrupted")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"Test FAILED: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -23,7 +23,7 @@ pyserial
|
||||
pyulog>=0.5.0
|
||||
pyyaml
|
||||
requests
|
||||
setuptools>=39.2.0
|
||||
setuptools>=39.2.0,<=81.0.0
|
||||
six>=1.12.0
|
||||
sympy>=1.10.1
|
||||
toml>=0.9
|
||||
|
||||
@@ -30,6 +30,7 @@ CONFIG_MODULES_EKF2=y
|
||||
# CONFIG_EKF2_GNSS_YAW is not set
|
||||
# CONFIG_EKF2_MAGNETOMETER is not set
|
||||
# CONFIG_EKF2_RANGE_FINDER is not set
|
||||
# CONFIG_EKF2_OPTICAL_FLOW is not set
|
||||
# CONFIG_EKF2_SIDESLIP is not set
|
||||
CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
|
||||
CONFIG_MODULES_LAND_DETECTOR=y
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
||||
#define BOARD_TYPE 1105
|
||||
#define BOARD_FLASH_SECTORS (14)
|
||||
#define BOARD_FLASH_SECTORS (13)
|
||||
#define BOARD_FLASH_SIZE (16 * 128 * 1024)
|
||||
#define APP_RESERVATION_SIZE (2 * 128 * 1024)
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ CONFIG_MODULES_NAVIGATOR=n
|
||||
CONFIG_MODULES_UXRCE_DDS_CLIENT=n
|
||||
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=n
|
||||
CONFIG_SYSTEMCMDS_BSONDUMP=n
|
||||
CONFIG_SYSTEMCMDS_I2CDETECT=y
|
||||
CONFIG_SYSTEMCMDS_PERF=n
|
||||
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=n
|
||||
CONFIG_SYSTEMCMDS_VER=n
|
||||
|
||||
@@ -287,8 +287,8 @@
|
||||
|
||||
/* AUX */
|
||||
|
||||
#define GPIO_LPUART4_RX (GPIO_LPUART4_RX_3 | LPUART_IOMUX) /* GPIO_B1_01 */
|
||||
#define GPIO_LPUART4_TX (GPIO_LPUART4_TX_3 | LPUART_IOMUX) /* GPIO_B1_00 */
|
||||
#define GPIO_LPUART4_RX (GPIO_LPUART4_RX_1 | LPUART_IOMUX) /* GPIO_B1_01 */
|
||||
#define GPIO_LPUART4_TX (GPIO_LPUART4_TX_1 | LPUART_IOMUX) /* GPIO_B1_00 */
|
||||
|
||||
/* GPS 1 */
|
||||
|
||||
|
||||
+59
-36
@@ -33,32 +33,24 @@
|
||||
|
||||
# packaging
|
||||
|
||||
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}-${PX4_CONFIG})
|
||||
|
||||
set(CPACK_PACKAGE_VENDOR "px4")
|
||||
set(CPACK_PACKAGE_CONTACT "daniel@agar.ca")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${PX4_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_RESOURCE_FILE_README "${PX4_SOURCE_DIR}/README.md")
|
||||
|
||||
set(CPACK_SOURCE_GENERATOR "ZIP;TBZ2")
|
||||
|
||||
# Debian version: convert git describe to Debian-compliant format
|
||||
# v1.17.0-beta1 -> 1.17.0~beta1, v1.17.0 -> 1.17.0
|
||||
string(REGEX REPLACE "^v" "" DEB_VERSION "${PX4_GIT_TAG}")
|
||||
# Replace first hyphen with tilde for pre-release (Debian sorts ~ before anything)
|
||||
string(REGEX REPLACE "^([0-9]+\\.[0-9]+\\.[0-9]+)-([a-zA-Z])" "\\1~\\2" DEB_VERSION "${DEB_VERSION}")
|
||||
# Strip any trailing commit info (e.g. -42-gabcdef)
|
||||
string(REGEX REPLACE "-[0-9]+-g[0-9a-f]+$" "" DEB_VERSION "${DEB_VERSION}")
|
||||
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PX4_VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${PX4_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${PX4_VERSION_PATCH})
|
||||
#set(CPACK_PACKAGE_VERSION ${PX4_GIT_TAG})
|
||||
|
||||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PX4_CONFIG}-${PX4_GIT_TAG}")
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PX4_CONFIG}-${PX4_GIT_TAG}-src")
|
||||
|
||||
set(CPACK_PACKAGE_CONTACT "daniel@agar.ca")
|
||||
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${PX4_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_RESOURCE_FILE_README "${PX4_SOURCE_DIR}/README.md")
|
||||
|
||||
set(CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE)#ONE_PER_GROUP)
|
||||
# without this you won't be able to pack only specified component
|
||||
set(CPACK_DEB_COMPONENT_INSTALL YES)
|
||||
|
||||
#set(CPACK_STRIP_FILES YES)
|
||||
|
||||
set(CPACK_SOURCE_GENERATOR "ZIP;TBZ2")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "")
|
||||
set(CPACK_SET_DESTDIR "OFF")
|
||||
|
||||
if("${CMAKE_SYSTEM}" MATCHES "Linux")
|
||||
set(CPACK_GENERATOR "TBZ2")
|
||||
@@ -67,30 +59,61 @@ if("${CMAKE_SYSTEM}" MATCHES "Linux")
|
||||
if(EXISTS ${DPKG_PROGRAM})
|
||||
list(APPEND CPACK_GENERATOR "DEB")
|
||||
|
||||
set(CPACK_SET_DESTDIR true)
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/tmp")
|
||||
execute_process(COMMAND ${DPKG_PROGRAM} --print-architecture
|
||||
OUTPUT_VARIABLE DEB_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(COMMAND ${DPKG_PROGRAM} --print-architecture OUTPUT_VARIABLE DEB_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
message("Architecture: " ${DEB_ARCHITECTURE})
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_${DEB_ARCHITECTURE}")
|
||||
# Detect Ubuntu/Debian codename for version suffix
|
||||
find_program(LSB_RELEASE lsb_release)
|
||||
if(EXISTS ${LSB_RELEASE})
|
||||
execute_process(COMMAND ${LSB_RELEASE} -cs
|
||||
OUTPUT_VARIABLE DEB_CODENAME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
else()
|
||||
set(DEB_CODENAME "unknown")
|
||||
endif()
|
||||
|
||||
set(CPACK_INSTALL_PREFIX @DEB_INSTALL_PREFIX@)
|
||||
message ("==> CPACK_INSTALL_PREFIX = " ${CPACK_INSTALL_PREFIX})
|
||||
# Override CPACK_PACKAGE_VERSION with full Debian version.
|
||||
# CPack DEB ignores CPACK_PACKAGE_VERSION_MAJOR/MINOR/PATCH
|
||||
# when CPACK_PACKAGE_VERSION is set, so we must replace them.
|
||||
unset(CPACK_PACKAGE_VERSION_MAJOR)
|
||||
unset(CPACK_PACKAGE_VERSION_MINOR)
|
||||
unset(CPACK_PACKAGE_VERSION_PATCH)
|
||||
set(CPACK_PACKAGE_VERSION "${DEB_VERSION}-${DEB_CODENAME}")
|
||||
|
||||
################################################################################
|
||||
# Label-aware package metadata
|
||||
if(PX4_BOARD_LABEL STREQUAL "sih")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/px4")
|
||||
set(CPACK_DEBIAN_PACKAGE_NAME "px4")
|
||||
set(CPACK_DEBIAN_FILE_NAME "px4_${DEB_VERSION}-${DEB_CODENAME}_${DEB_ARCHITECTURE}.deb")
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libstdc++6")
|
||||
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "PX4 SITL autopilot with SIH physics (no Gazebo)")
|
||||
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||
"${PX4_SOURCE_DIR}/Tools/packaging/sih/postinst;${PX4_SOURCE_DIR}/Tools/packaging/sih/postrm")
|
||||
else()
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/px4-gazebo")
|
||||
set(CPACK_DEBIAN_PACKAGE_NAME "px4-gazebo")
|
||||
set(CPACK_DEBIAN_FILE_NAME "px4-gazebo_${DEB_VERSION}-${DEB_CODENAME}_${DEB_ARCHITECTURE}.deb")
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libstdc++6, gz-sim8-cli, libgz-sim8-plugins, libgz-physics7-dartsim, gz-tools2")
|
||||
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "PX4 SITL autopilot with Gazebo Harmonic simulation resources")
|
||||
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||
"${PX4_SOURCE_DIR}/Tools/packaging/postinst;${PX4_SOURCE_DIR}/Tools/packaging/postrm")
|
||||
endif()
|
||||
|
||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Daniel Agar <${CPACK_PACKAGE_CONTACT}>")
|
||||
set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
|
||||
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
|
||||
# Bake the install prefix into the px4 binary so it can locate its ROMFS
|
||||
# (etc/) without a wrapper script or command-line argument.
|
||||
if(TARGET px4)
|
||||
target_compile_definitions(px4 PRIVATE PX4_INSTALL_PREFIX="${CPACK_PACKAGING_INSTALL_PREFIX}")
|
||||
endif()
|
||||
|
||||
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "PX4 autopilot")
|
||||
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||
set(CPACK_DEBIAN_PACKAGE_SECTION "misc")
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEB_ARCHITECTURE})
|
||||
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Daniel Agar <${CPACK_PACKAGE_CONTACT}>")
|
||||
|
||||
# autogenerate dependency information
|
||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||
set(CPACK_DEBIAN_COMPRESSION_TYPE xz)
|
||||
set(CPACK_DEBIAN_ARCHITECTURE ${DEB_ARCHITECTURE})
|
||||
|
||||
message(STATUS "PX4 SITL .deb version: ${DEB_VERSION}-${DEB_CODENAME} (${DEB_ARCHITECTURE})")
|
||||
|
||||
endif()
|
||||
else()
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 119 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 270 KiB |
+15
-10
@@ -323,6 +323,7 @@
|
||||
- [RFD900 (SiK) Telemetry Radio](telemetry/rfd900_telemetry.md)
|
||||
- [ThunderFly TFSIK01 Telemetry Radio](telemetry/tfsik_telemetry.md)
|
||||
- [HolyBro (SIK) Telemetry Radio](telemetry/holybro_sik_radio.md)
|
||||
- [HolyBro SiK Long Range Telemetry Radio](telemetry/holybro_sik_longrange.md)
|
||||
- [Telemetry Wifi](telemetry/telemetry_wifi.md)
|
||||
- [ESP8266 WiFi Module](telemetry/esp8266_wifi_module.md)
|
||||
- [ESP32 WiFi Module](telemetry/esp32_wifi_module.md)
|
||||
@@ -860,16 +861,20 @@
|
||||
- [Multi-vehicle simulation](simulation/multi-vehicle-simulation.md)
|
||||
- [Platform Testing and CI](test_and_ci/index.md)
|
||||
- [Test Flights](test_and_ci/test_flights.md)
|
||||
- [Test MC_01 - Manual Modes](test_cards/mc_01_manual_modes.md)
|
||||
- [Test MC_02 - Full Autonomous](test_cards/mc_02_full_autonomous.md)
|
||||
- [Test MC_03 - Auto Manual Mix](test_cards/mc_03_auto_manual_mix.md)
|
||||
- [Test MC_04 - Failsafe Testing](test_cards/mc_04_failsafe_testing.md)
|
||||
- [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md)
|
||||
- [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md)
|
||||
- [Test MC_07 - Optical Flow Low Mount](test_cards/mc_07_optical_flow_low_mount.md)
|
||||
- [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md)
|
||||
- [Test MC_09 - VIO (Visual-Inertial Odometry)](test_cards/mc_09_vio.md)
|
||||
- [Test MC_10 - Optical Flow / GPS Mixed](test_cards/mc_10_optical_flow_gps_mixed.md)
|
||||
- [Multicopter](test_and_ci/test_flights.md#multicopter)
|
||||
- [Test MC_01 - Manual Modes](test_cards/mc_01_manual_modes.md)
|
||||
- [Test MC_02 - Full Autonomous](test_cards/mc_02_full_autonomous.md)
|
||||
- [Test MC_03 - Auto Manual Mix](test_cards/mc_03_auto_manual_mix.md)
|
||||
- [Test MC_04 - Failsafe Testing](test_cards/mc_04_failsafe_testing.md)
|
||||
- [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md)
|
||||
- [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md)
|
||||
- [Test MC_07 - Optical Flow Low Mount](test_cards/mc_07_optical_flow_low_mount.md)
|
||||
- [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md)
|
||||
- [Test MC_09 - VIO (Visual-Inertial Odometry)](test_cards/mc_09_vio.md)
|
||||
- [Test MC_10 - Optical Flow / GPS Mixed](test_cards/mc_10_optical_flow_gps_mixed.md)
|
||||
- [Fixed Wing](test_and_ci/test_flights.md#fixed-wing)
|
||||
- [Test FW_01 - Manual Modes](test_cards/fw_01_manual_modes.md)
|
||||
- [Test FW_02 - Full Autonomous](test_cards/fw_02_full_autonomous.md)
|
||||
- [Unit Tests](test_and_ci/unit_tests.md)
|
||||
- [Fuzz Tests](test_and_ci/fuzz_tests.md)
|
||||
- [Continuous Integration](test_and_ci/continous_integration.md)
|
||||
|
||||
+14
-10
@@ -851,16 +851,20 @@
|
||||
- [Multi-vehicle simulation](/simulation/multi-vehicle-simulation.md)
|
||||
- [Platform Testing and CI](/test_and_ci/index.md)
|
||||
- [Test Flights](/test_and_ci/test_flights.md)
|
||||
- [Test MC_01 - Manual Modes](/test_cards/mc_01_manual_modes.md)
|
||||
- [Test MC_02 - Full Autonomous](/test_cards/mc_02_full_autonomous.md)
|
||||
- [Test MC_03 - Auto Manual Mix](/test_cards/mc_03_auto_manual_mix.md)
|
||||
- [Test MC_04 - Failsafe Testing](/test_cards/mc_04_failsafe_testing.md)
|
||||
- [Test MC_05 - Manual Modes (Inside)](/test_cards/mc_05_indoor_flight_manual_modes.md)
|
||||
- [Test MC_06 - Optical Flow (Inside)](/test_cards/mc_06_optical_flow.md)
|
||||
- [Test MC_07 - Optical Flow Low Mount](/test_cards/mc_07_optical_flow_low_mount.md)
|
||||
- [Test MC_08 - DSHOT ESC](/test_cards/mc_08_dshot.md)
|
||||
- [Test MC_09 - VIO (Visual-Inertial Odometry)](/test_cards/mc_09_vio.md)
|
||||
- [Test MC_10 - Optical Flow / GPS Mixed](/test_cards/mc_10_optical_flow_gps_mixed.md)
|
||||
- [Multicopter](/test_and_ci/test_flights.md#multicopter)
|
||||
- [Test MC_01 - Manual Modes](/test_cards/mc_01_manual_modes.md)
|
||||
- [Test MC_02 - Full Autonomous](/test_cards/mc_02_full_autonomous.md)
|
||||
- [Test MC_03 - Auto Manual Mix](/test_cards/mc_03_auto_manual_mix.md)
|
||||
- [Test MC_04 - Failsafe Testing](/test_cards/mc_04_failsafe_testing.md)
|
||||
- [Test MC_05 - Manual Modes (Inside)](/test_cards/mc_05_indoor_flight_manual_modes.md)
|
||||
- [Test MC_06 - Optical Flow (Inside)](/test_cards/mc_06_optical_flow.md)
|
||||
- [Test MC_07 - Optical Flow Low Mount](/test_cards/mc_07_optical_flow_low_mount.md)
|
||||
- [Test MC_08 - DSHOT ESC](/test_cards/mc_08_dshot.md)
|
||||
- [Test MC_09 - VIO (Visual-Inertial Odometry)](/test_cards/mc_09_vio.md)
|
||||
- [Test MC_10 - Optical Flow / GPS Mixed](/test_cards/mc_10_optical_flow_gps_mixed.md)
|
||||
- [Fixed Wing](/test_and_ci/test_flights.md#fixed-wing)
|
||||
- [Test FW_01 - Manual Modes](/test_cards/fw_01_manual_modes.md)
|
||||
- [Test FW_02 - Full Autonomous](/test_cards/fw_02_full_autonomous.md)
|
||||
- [Unit Tests](/test_and_ci/unit_tests.md)
|
||||
- [Fuzz Tests](/test_and_ci/fuzz_tests.md)
|
||||
- [Continuous Integration](/test_and_ci/continous_integration.md)
|
||||
|
||||
@@ -127,7 +127,7 @@ Configure the emitter type of the vehicle.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 15 | | 14 | |
|
||||
| ✓ | 0 | 19 | | 14 | |
|
||||
|
||||
### ADSB_GPS_OFF_LAT (`INT32`) {#ADSB_GPS_OFF_LAT}
|
||||
|
||||
@@ -17716,9 +17716,9 @@ Negative values are ignored and will cause the measured current to be used.
|
||||
The default value of 0 disables the overwrite, in which case the measured value
|
||||
is always used.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | | | | 0 | |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0 | |
|
||||
|
||||
### BAT1_N_CELLS (`INT32`) {#BAT1_N_CELLS}
|
||||
|
||||
@@ -17894,9 +17894,9 @@ Negative values are ignored and will cause the measured current to be used.
|
||||
The default value of 0 disables the overwrite, in which case the measured value
|
||||
is always used.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | | | | 0 | |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0 | |
|
||||
|
||||
### BAT2_N_CELLS (`INT32`) {#BAT2_N_CELLS}
|
||||
|
||||
@@ -18036,6 +18036,22 @@ Defines the capacity of battery 3 in mAh.
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | -1.0 | 100000 | 50 | -1.0 | mAh |
|
||||
|
||||
### BAT3_I_OVERWRITE (`FLOAT`) {#BAT3_I_OVERWRITE}
|
||||
|
||||
Battery 3 idle current overwrite.
|
||||
|
||||
This parameter allows to overwrite the current measured during
|
||||
idle (unarmed) state with a user-defined constant value (expressed in amperes).
|
||||
When the system is armed, the measured current is used. This is useful
|
||||
because on certain ESCs current measurements are inaccurate in case of no load.
|
||||
Negative values are ignored and will cause the measured current to be used.
|
||||
The default value of 0 disables the overwrite, in which case the measured value
|
||||
is always used.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0 | |
|
||||
|
||||
### BAT3_N_CELLS (`INT32`) {#BAT3_N_CELLS}
|
||||
|
||||
Number of cells for battery 3.
|
||||
@@ -18482,7 +18498,7 @@ parameters.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 3 | | 0 | |
|
||||
| | 0 | 4 | | 0 | |
|
||||
|
||||
### COM_ARMABLE (`INT32`) {#COM_ARMABLE}
|
||||
|
||||
@@ -21790,6 +21806,32 @@ EKF2 selector maximum accumulated velocity threshold for comparing accelerometer
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 2.0 | m/s |
|
||||
|
||||
### EKF2_SENS_EN (`INT32`) {#EKF2_SENS_EN}
|
||||
|
||||
Sensor fusion enable bitmask.
|
||||
|
||||
Bitmask to control which sensor fusion sources are enabled. Sources whose bit is cleared will be disabled. Only applied while disarmed. For in-flight changes use the MAVLink command VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE or the individual CTRL params (e.g. EKF2_GPS_CTRL, EKF2_BARO_CTRL).
|
||||
|
||||
**Bitmask:**
|
||||
|
||||
- `0`: GNSS 0
|
||||
- `1`: GNSS 1
|
||||
- `2`: Optical flow
|
||||
- `3`: External vision
|
||||
- `4`: Aux global position 0
|
||||
- `5`: Aux global position 1
|
||||
- `6`: Aux global position 2
|
||||
- `7`: Aux global position 3
|
||||
- `8`: Barometer
|
||||
- `9`: Range finder
|
||||
- `10`: Magnetometer
|
||||
- `11`: Airspeed
|
||||
- `12`: Ranging beacon
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 8191 | | 8191 | |
|
||||
|
||||
### EKF2_SYNT_MAG_Z (`INT32`) {#EKF2_SYNT_MAG_Z}
|
||||
|
||||
Enable synthetic magnetometer Z component measurement.
|
||||
@@ -23874,7 +23916,7 @@ Mode 6 is intended for use with a ground control station (not necessarily an RTK
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 1 | | 0 | |
|
||||
| ✓ | 0 | 6 | | 0 | |
|
||||
|
||||
### GPS_UBX_PPK (`INT32`) {#GPS_UBX_PPK}
|
||||
|
||||
@@ -28529,7 +28571,7 @@ MAVLink airframe type.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 22 | | 0 | |
|
||||
| | 0 | 23 | | 0 | |
|
||||
|
||||
### MAV_USEHILGPS (`INT32`) {#MAV_USEHILGPS}
|
||||
|
||||
@@ -28786,7 +28828,7 @@ Heading behavior in autonomous modes.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 4 | | 0 | |
|
||||
| | 0 | 5 | | 0 | |
|
||||
|
||||
### NAV_ACC_RAD (`FLOAT`) {#NAV_ACC_RAD}
|
||||
|
||||
@@ -37740,7 +37782,7 @@ TeraRanger Rangefinder (i2c).
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 3 | | 0 | |
|
||||
| ✓ | 0 | 5 | | 0 | |
|
||||
|
||||
### SENS_EN_VL53L0X (`INT32`) {#SENS_EN_VL53L0X}
|
||||
|
||||
@@ -39962,6 +40004,104 @@ Absolute value superior to 10000 will disable distance sensor
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | -1.0 | m |
|
||||
|
||||
### SIH_F_CP0 (`FLOAT`) {#SIH_F_CP0}
|
||||
|
||||
Forward thruster static power coefficient.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | | 0.0 | |
|
||||
|
||||
### SIH_F_CP1 (`FLOAT`) {#SIH_F_CP1}
|
||||
|
||||
Forward thruster power coefficient 1.
|
||||
|
||||
CP(J) = CP0 + CP1*J + CP2*J^2
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0.0 | |
|
||||
|
||||
### SIH_F_CP2 (`FLOAT`) {#SIH_F_CP2}
|
||||
|
||||
Forward thruster power coefficient 2.
|
||||
|
||||
CP(J) = CP0 + CP1*J + CP2*J^2
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | 0.0 | | 0.0 | |
|
||||
|
||||
### SIH_F_CT0 (`FLOAT`) {#SIH_F_CT0}
|
||||
|
||||
Forward thruster static thrust coefficient.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | | 0.0 | |
|
||||
|
||||
### SIH_F_CT1 (`FLOAT`) {#SIH_F_CT1}
|
||||
|
||||
Forward thruster thrust coefficient 1.
|
||||
|
||||
CT(J) = CT0 + CT1*J + CT2*J^2
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 0.0 | |
|
||||
|
||||
### SIH_F_CT2 (`FLOAT`) {#SIH_F_CT2}
|
||||
|
||||
Forward thruster thrust coefficient 2.
|
||||
|
||||
CT(J) = CT0 + CT1*J + CT2*J^2
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | 0.0 | | 0.0 | |
|
||||
|
||||
### SIH_F_DIA_INCH (`FLOAT`) {#SIH_F_DIA_INCH}
|
||||
|
||||
Forward thruster propeller diameter in inches.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.1 | | | 0.1 | |
|
||||
|
||||
### SIH_F_Q_MAX (`FLOAT`) {#SIH_F_Q_MAX}
|
||||
|
||||
Forward thruster max torque (Nm).
|
||||
|
||||
This is used for the Fixed-Wing, Tailsitter, or pusher of the Standard VTOL
|
||||
if SIH_F_CP0 <= 0.
|
||||
If SIH_F_CP0 > 0, propeller model with advance ratio J is used
|
||||
and this parameter value is overridden at simulation startup.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | | 0.0165 | Nm |
|
||||
|
||||
### SIH_F_RPM_MAX (`FLOAT`) {#SIH_F_RPM_MAX}
|
||||
|
||||
Forward thruster max RPM.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.1 | | | 6000.0 | |
|
||||
|
||||
### SIH_F_T_MAX (`FLOAT`) {#SIH_F_T_MAX}
|
||||
|
||||
Forward thruster max thrust (N).
|
||||
|
||||
This is used for the Fixed-Wing, Tailsitter, or pusher of the Standard VTOL
|
||||
if SIH_F_CT0 <= 0.
|
||||
If SIH_F_CT0 > 0, propeller model with advance ratio J is used
|
||||
and this parameter value is overridden at simulation startup.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | | 2.0 | N |
|
||||
|
||||
### SIH_IXX (`FLOAT`) {#SIH_IXX}
|
||||
|
||||
Vehicle inertia about X axis.
|
||||
@@ -40136,13 +40276,15 @@ This value can be measured by weighting the quad on a scale.
|
||||
|
||||
### SIH_Q_MAX (`FLOAT`) {#SIH_Q_MAX}
|
||||
|
||||
Max propeller torque.
|
||||
Max multicopter propeller torque.
|
||||
|
||||
This is the maximum torque delivered by one propeller
|
||||
when the motor is running at full speed.
|
||||
|
||||
This value is usually about few percent of the maximum thrust force.
|
||||
|
||||
Refer to SIH_F_Q_MAX for the propeller torque for FW, Tailsitter, and VTOL pusher.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | 0.05 | 0.1 | Nm |
|
||||
@@ -40159,13 +40301,15 @@ Gaussian noise added to simulated ranging beacon measurements. Set to 0 to disab
|
||||
|
||||
### SIH_T_MAX (`FLOAT`) {#SIH_T_MAX}
|
||||
|
||||
Max propeller thrust force.
|
||||
Max multicopter propeller thrust force.
|
||||
|
||||
This is the maximum force delivered by one propeller
|
||||
when the motor is running at full speed.
|
||||
|
||||
This value is usually about 5 times the mass of the quadrotor.
|
||||
|
||||
Refer to SIH_F_T_MAX for the thrust for FW, Tailsitter, and VTOL pusher.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.0 | | 0.5 | 5.0 | N |
|
||||
@@ -43930,7 +44074,7 @@ Selects what type of mode is enabled, if any
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0 | 2 | | 0 | |
|
||||
| ✓ | 0 | 3 | | 0 | |
|
||||
|
||||
### VOXL_ESC_PUB_BST (`INT32`) {#VOXL_ESC_PUB_BST}
|
||||
|
||||
|
||||
@@ -457,6 +457,10 @@ div.frame_variant td, div.frame_variant th {
|
||||
<td>SIH Quadcopter X</td>
|
||||
<td>Maintainer: Romain Chiappinelli <romain.chiap@gmail.com><p><code>SYS_AUTOSTART</code> = 1100</p></td>
|
||||
</tr>
|
||||
<tr id="copter_simulation_sih_hexacopter_x">
|
||||
<td>SIH Hexacopter X</td>
|
||||
<td>Maintainer: Romain Chiappinelli <romain.chiap@gmail.com><p><code>SYS_AUTOSTART</code> = 1105</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@ const { site } = useData();
|
||||
|
||||
<div v-if="site.title !== 'PX4 Guide (main)'">
|
||||
<div class="custom-block danger">
|
||||
<p class="custom-block-title">This page may be out of date. <a href="https://docs.px4.io/main/en/contribute/dev_call">See the latest version</a>.</p>
|
||||
<p class="custom-block-title">This page may be out of date. <a href="/en/contribute/dev_call.md">See the latest version</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -15,8 +15,8 @@ The PX4 dev team and community come together to discuss any topic of interest to
|
||||
|
||||
## Who should attend?
|
||||
|
||||
- Core project maintainers
|
||||
- Component maintainers
|
||||
- Code Owners
|
||||
- Reviewers
|
||||
- Test team lead
|
||||
- Dronecode members
|
||||
- Community members (you!)
|
||||
|
||||
@@ -20,7 +20,7 @@ We pledge to adhere to the [PX4 code of conduct](https://github.com/PX4/PX4-Auto
|
||||
This section contains information about how you can meet with the community and contribute to PX4:
|
||||
|
||||
- [Dev Call](../contribute/dev_call.md) - Discuss architecture, pull requests, impacting issues with the dev team
|
||||
- [Maintainers](./maintainers.md) - Maintainers of PX4 Subsystems and Ecosystem
|
||||
- [Maintainers](./maintainers.md) - Maintainer roles, types, and how to become one
|
||||
- [Support](../contribute/support.md) - Get help and raise issues
|
||||
- [Source Code Management](../contribute/code.md) - Work with PX4 code
|
||||
- [Documentation](../contribute/docs.md) - Improve the docs
|
||||
|
||||
@@ -1,57 +1,86 @@
|
||||
# Maintainer Role
|
||||
|
||||
Dronecode maintainers have technical leadership and responsibility for specific areas of PX4, and for other ecosystem components such as MAVLink, MAVSDK, QGroundControl, and others.
|
||||
Dronecode maintainers provide technical leadership for PX4 and for other ecosystem components such as MAVLink, MAVSDK, QGroundControl, and others. Some maintainers take responsibility for specific areas of the project, while others help across the project more broadly.
|
||||
The maintainer role is defined by the community with help and supervision from the [Dronecode Foundation](https://dronecode.org/).
|
||||
|
||||
To find the most up-to-date maintainers list, visit [PX4-Autopilot README](https://github.com/PX4/PX4-Autopilot#maintenance-team).
|
||||
To find the most up-to-date maintainers list, see [`MAINTAINERS.md`](https://github.com/PX4/PX4-Autopilot/blob/main/MAINTAINERS.md) in the PX4-Autopilot repository.
|
||||
|
||||
## Maintainer Types
|
||||
|
||||
PX4 recognizes two types of maintainers. Both are full members of the maintainer team, have write access via the [`Dev Team`](https://github.com/orgs/PX4/teams/dev-team) GitHub team, and participate in maintainer decisions.
|
||||
|
||||
- **Code Owners** are responsible for a specific category of the project (for example, State Estimation, Multirotor, or CI). They have final say on changes to their area, are the primary reviewers for that code, and help shape its roadmap. This is the role described in detail below.
|
||||
- **Reviewers** help maintain PX4 across the project without ownership of a specific category. They review, triage, and contribute wherever their interests and time allow. Reviewers have the same access and voting rights as Code Owners, but no on-call responsibility for any specific area of the codebase.
|
||||
|
||||
The Reviewer role is a good fit for contributors who want to help steward the project without committing to a specific component up front. A Reviewer may later become a Code Owner for a category by mutual agreement with the existing Code Owners of that category and sign-off from the maintainer team.
|
||||
|
||||
## Recruitment Process
|
||||
|
||||
If you would like to join the PX4 maintainers team or if you want to nominate someone else follow the steps below:
|
||||
|
||||
1. Read the [role description](#dronecode-maintainer-role-description), and make sure you understand the responsibilities of the role.
|
||||
2. To nominate yourself, reach out to one of the maintainers (see the complete list in the [PX4-Autopilot README](https://github.com/PX4/PX4-Autopilot#maintenance-team)), and seek their sponsorship.
|
||||
3. Express your interest in becoming a maintainer, and specify which area you would like to maintain.
|
||||
2. To nominate yourself, reach out to one of the maintainers (see the complete list in [`MAINTAINERS.md`](https://github.com/PX4/PX4-Autopilot/blob/main/MAINTAINERS.md)), and seek their sponsorship.
|
||||
3. Express your interest in becoming a maintainer, and specify whether you are applying as a **Code Owner** (for a specific category) or as a **Reviewer** (helping across the project without a fixed category).
|
||||
4. The sponsoring maintainer needs to bring this up for discussion in one of the [weekly developer calls](dev_call.md).
|
||||
The maintainer team will vote on the call to determine whether to accept you as a maintainer.
|
||||
|
||||
A Reviewer may later transition to a Code Owner role for a specific category. This requires agreement from the existing Code Owners of that category and sign-off from the maintainer team, following the same discussion and vote on the weekly developer call.
|
||||
|
||||
### Adding a new maintainer
|
||||
|
||||
Once the maintainer team has agreed to add a new maintainer, the change is landed via a pull request to [`MAINTAINERS.md`](https://github.com/PX4/PX4-Autopilot/blob/main/MAINTAINERS.md). The process is intentionally simple:
|
||||
|
||||
1. A current maintainer opens a PR adding the new maintainer to the appropriate table (**Code Owners** with a category, or **Reviewers**).
|
||||
2. The PR must be approved by at least one other current maintainer.
|
||||
3. If the new maintainer is being added as a Code Owner or sub-owner of a specific component, the existing Code Owner of that component must be among the approvers.
|
||||
|
||||
Once the PR is merged, the new maintainer proceeds through the [Onboarding Process](#onboarding-process) below.
|
||||
|
||||
## Onboarding Process
|
||||
|
||||
Once accepted every maintainers will go through the following process:
|
||||
|
||||
1. **Discord** server admin will grant you the `dev team` role, which gives you:
|
||||
1. Basic admin privileges on discord.
|
||||
2. Access to the `#maintainers` channel.
|
||||
2. Access to the private `#maintainers` channel for internal maintainer discussion.
|
||||
2. You will be given access to the GitHub team: "[`Dev Team`](https://github.com/orgs/PX4/teams/dev-team)" which grants you:
|
||||
1. Permission to merge the PR of any of PX4 workspace repositories after it's approved
|
||||
2. Permission to trigger GitHub actions when a new contributor opens a PR.
|
||||
3. Permission to edit Issue/PR contents.
|
||||
3. **Add your info to official PX4 channels**:
|
||||
1. Include your information on the PX4 [README](https://github.com/PX4/PX4-Autopilot/blob/main/README.md) next to the rest of the team
|
||||
2. Listed on the [Maintainers section](https://px4.io/community/maintainers/) of the PX4 website.
|
||||
3. Add your information to the internal Dronecode database of maintainers to keep you in sync.
|
||||
4. Community introduction to the new maintainer in the form of a forum post, which is promoted through ever growing official channels
|
||||
1. Add your information to the internal Dronecode database of maintainers to keep you in sync.
|
||||
2. Community introduction to the new maintainer in the form of a forum post, which is promoted through ever growing official channels
|
||||
|
||||
## Dronecode Maintainer Role Description
|
||||
|
||||
The responsibilities and qualifications below describe the **Code Owner** role in detail. **Reviewers** share the same spirit of technical stewardship, community guidance, and participation in maintainer meetings, without being tied to a specific category. Reviewers are expected to review and triage across the project where their expertise and interest apply.
|
||||
|
||||
### Summary
|
||||
|
||||
Maintainers lead/manage the development of a **specific category (referred to as category below)** of any Open Source Projects hosted within the Dronecode Foundation, such as the PX4 Autopilot.
|
||||
|
||||
### Responsibilities
|
||||
### Responsibilities (Code Owner)
|
||||
|
||||
1. Take charge of overseeing the development in their category.
|
||||
2. Provide guidance/advice on community members in their category.
|
||||
3. Review relevant pull requests and issues from the community on GitHub.
|
||||
4. Coordinate with the maintainer group.
|
||||
5. Keep regular attendance on [weekly meetings ](dev_call.md).
|
||||
5. Keep regular attendance on [weekly meetings](dev_call.md).
|
||||
6. Help create and maintain a roadmap for the project your represent.
|
||||
7. Uphold the [Code of Conduct](https://github.com/Dronecode/foundation/blob/main/CODE-OF-CONDUCT.md) of our community.
|
||||
|
||||
### Responsibilities (Reviewer)
|
||||
|
||||
1. Review relevant pull requests and issues across the project where your expertise applies.
|
||||
2. Help triage issues and guide community contributors.
|
||||
3. Coordinate with the maintainer group.
|
||||
4. Keep regular attendance on [weekly meetings](dev_call.md).
|
||||
5. Uphold the [Code of Conduct](https://github.com/Dronecode/foundation/blob/main/CODE-OF-CONDUCT.md) of our community.
|
||||
|
||||
### Qualifications
|
||||
|
||||
1. Proven track record of valuable contributions.
|
||||
2. Domain expertise in the category field.
|
||||
2. Domain expertise in the category field (for Code Owners) or broad working knowledge of the project (for Reviewers).
|
||||
3. Good overview of the project you are applying to.
|
||||
4. You need to manage approval from your employer when relevant.
|
||||
|
||||
|
||||
@@ -2,17 +2,29 @@
|
||||
|
||||
<img src="../../assets/site/position_fixed.svg" title="Position fix required (e.g. GPS)" width="30px" />
|
||||
|
||||
:::: warning
|
||||
|
||||
Offboard control with ROS 2 requires _significant care_ to ensure that it is used safely.
|
||||
Please read [ROS 2 Offboard Control](#ros-2-offboard-control) carefully to fully understand the risks involved when using it.
|
||||
A good understanding of [PX4 controller diagrams](../flight_stack/controller_diagrams.md) is advised.
|
||||
|
||||
::: tip
|
||||
[PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) provides a safer alternative.
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
The vehicle obeys position, velocity, acceleration, attitude, attitude rates or thrust/torque setpoints provided by some source that is external to the flight stack, such as a companion computer.
|
||||
The setpoints may be provided using MAVLink (or a MAVLink API such as [MAVSDK](https://mavsdk.mavlink.io/)) or by [ROS 2](../ros2/index.md).
|
||||
|
||||
PX4 requires that the external controller provides a continuous 2Hz "proof of life" signal, by streaming any of the supported MAVLink setpoint messages or the ROS 2 [OffboardControlMode](../msg_docs/OffboardControlMode.md) message.
|
||||
PX4 enables offboard control only after receiving the signal for more than a second, and will regain control if the signal stops.
|
||||
PX4 enables switching to offboard control mode only after receiving the signal for more than a second, and will failsafe (controlled by [COM_OBL_RC_ACT](../advanced_config/parameter_reference.md#COM_OBL_RC_ACT)) if the signal stops.
|
||||
|
||||
::: info
|
||||
|
||||
- This mode requires position or pose/attitude information - e.g. GPS, optical flow, visual-inertial odometry, mocap, etc.
|
||||
- This mode requires position or pose/attitude information - e.g. GPS, optical flow, visual-inertial odometry, mocap, etc. depending on the type of offboard setpoints that the external controller sends.
|
||||
- Manual control is disabled except to change modes (you can also fly without any manual controller at all by setting the parameter [COM_RC_IN_MODE](../advanced_config/parameter_reference.md#COM_RC_IN_MODE) to `4: Disable manual control`).
|
||||
- The vehicle must be already be receiving a stream of MAVLink setpoint messages or ROS 2 [OffboardControlMode](../msg_docs/OffboardControlMode.md) messages before arming in offboard mode or switching to offboard mode when flying.
|
||||
- The vehicle must already be receiving a stream of MAVLink setpoint messages or ROS 2 [OffboardControlMode](../msg_docs/OffboardControlMode.md) messages before arming in offboard mode or switching to offboard mode when flying.
|
||||
- The vehicle will exit offboard mode if MAVLink setpoint messages or `OffboardControlMode` are not received at a rate of > 2Hz.
|
||||
- Not all coordinate frames and field values allowed by MAVLink are supported for all setpoint messages and vehicles.
|
||||
Read the sections below _carefully_ to ensure only supported values are used.
|
||||
@@ -38,13 +50,37 @@ Note that offboard mode only supports a very limited set of MAVLink commands and
|
||||
Operations, like taking off, landing, return to launch, may be best handled using the appropriate modes.
|
||||
Operations like uploading, downloading missions can be performed in any mode.
|
||||
|
||||
## ROS 2 Messages
|
||||
## ROS 2 Offboard Control
|
||||
|
||||
This section describes how to perform offboard control through one of the direct ROS 2 interfaces: UXRCE-DDS or Zenoh.
|
||||
|
||||
When using direct ROS 2 offboard control, PX4 setpoint messages generated by external controllers are injected into the [PX4 control pipeline](../flight_stack/controller_diagrams.md).
|
||||
Because messages from internal and external controllers are indistinguishable within PX4, precise synchronization is required in order to avoid the controllers writing conflicting messages to the same topic.
|
||||
|
||||
In Offboard mode (only), an external system can use [`OffboardControlMode`](#the-offboardcontrolmode-px4-message) to specify which setpoint topics PX4 should publish/not publish, allowing them to be written safely by an external controller.
|
||||
|
||||
::: warning
|
||||
|
||||
PX4 has no means of filtering and distinguishing ROS 2 messages from internal messages, in any mode.
|
||||
In order to interwork safely, the external controller must:
|
||||
|
||||
- Publish PX4 setpoint messages **ONLY** in Offboard mode.
|
||||
- Specify which setpoints it will write using the `OffboardControlMode` topic.
|
||||
- Stream the `OffboardControlMode` topic as a keep-alive signal.
|
||||
- Stream the setpoints it wants: unlike with MAVLink, PX4 won't trigger a failsafe if setpoints aren't sent regularly.
|
||||
|
||||
If external setpoints are sent in any other flight mode, or they overwrite topics that have not been disabled by PX4 when in offboard mode, collisions are likely.
|
||||
This will result in unexpected, and possibly catastrophic, behaviour.
|
||||
|
||||
:::
|
||||
|
||||
### The `OffboardControlMode` PX4 message
|
||||
|
||||
The following ROS 2 messages and their particular fields and field values are allowed for the specified frames.
|
||||
In addition to providing heartbeat functionality, `OffboardControlMode` has two other main purposes:
|
||||
|
||||
1. Controls the level of the [PX4 control architecture](../flight_stack/controller_diagrams.md) at which offboard setpoints must be injected, and disables the bypassed controllers.
|
||||
2. Determines which valid estimates (position or velocity) are required, and also which setpoint messages should be used.
|
||||
1. Controls which internal PX4 control modules of the [PX4 control architecture](../flight_stack/controller_diagrams.md) shall remain active and which ones shall be disabled when the vehicle is in Offboard Mode.
|
||||
2. Determines which valid estimates (position, velocity, etc.) are required.
|
||||
|
||||
The `OffboardControlMode` message is defined as shown.
|
||||
|
||||
@@ -69,33 +105,46 @@ For rovers see the [rover section](#rover).
|
||||
|
||||
The fields are ordered in terms of priority such that `position` takes precedence over `velocity` and later fields, `velocity` takes precedence over `acceleration`, and so on.
|
||||
The first field that has a non-zero value (from top to bottom) defines what valid estimate is required in order to use offboard mode, and the setpoint message(s) that can be used.
|
||||
For example, if the `acceleration` field is the first non-zero value, then PX4 requires a valid `velocity estimate`, and the setpoint must be specified using the `TrajectorySetpoint` message.
|
||||
For example, if the `acceleration` field is the first non-zero value, then PX4 requires a valid `attitude estimate`, and the setpoint must be specified using the `TrajectorySetpoint` message.
|
||||
|
||||
| desired control quantity | position field | velocity field | acceleration field | attitude field | body_rate field | thrust_and_torque field | direct_actuator field | required estimate | required message |
|
||||
| ------------------------ | -------------- | -------------- | ------------------ | -------------- | --------------- | ----------------------- | --------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| position (NED) | ✓ | - | - | - | - | - | - | position | [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) |
|
||||
| velocity (NED) | ✗ | ✓ | - | - | - | - | - | velocity | [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) |
|
||||
| acceleration (NED) | ✗ | ✗ | ✓ | - | - | - | - | velocity | [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) |
|
||||
| attitude (FRD) | ✗ | ✗ | ✗ | ✓ | - | - | - | none | [VehicleAttitudeSetpoint](../msg_docs/VehicleAttitudeSetpoint.md) |
|
||||
| body_rate (FRD) | ✗ | ✗ | ✗ | ✗ | ✓ | - | - | none | [VehicleRatesSetpoint](../msg_docs/VehicleRatesSetpoint.md) |
|
||||
| acceleration (NED) | ✗ | ✗ | ✓ | - | - | - | - | attitude | [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) |
|
||||
| attitude (FRD) | ✗ | ✗ | ✗ | ✓ | - | - | - | attitude | [VehicleAttitudeSetpoint](../msg_docs/VehicleAttitudeSetpoint.md) |
|
||||
| body_rate (FRD) | ✗ | ✗ | ✗ | ✗ | ✓ | - | - | angular velocity | [VehicleRatesSetpoint](../msg_docs/VehicleRatesSetpoint.md) |
|
||||
| thrust and torque (FRD) | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | - | none | [VehicleThrustSetpoint](../msg_docs/VehicleThrustSetpoint.md) and [VehicleTorqueSetpoint](../msg_docs/VehicleTorqueSetpoint.md) |
|
||||
| direct motors and servos | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | none | [ActuatorMotors](../msg_docs/ActuatorMotors.md) and [ActuatorServos](../msg_docs/ActuatorServos.md) |
|
||||
|
||||
where ✓ means that the bit is set, ✘ means that the bit is not set and `-` means that the bit is value is irrelevant.
|
||||
where ✓ means that the bit is set, ✘ means that the bit is not set and `-` means that the bit value is irrelevant.
|
||||
|
||||
::: info
|
||||
Before using offboard mode with ROS 2, please spend a few minutes understanding the different [frame conventions](../ros2/user_guide.md#ros-2-px4-frame-conventions) that PX4 and ROS 2 use.
|
||||
:::
|
||||
|
||||
### Copter
|
||||
In the following, the different setpoint messages for the main supported airframes are explained.
|
||||
For fixed-wing offboard control, please refer to the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md).
|
||||
|
||||
### Multicopters
|
||||
|
||||
- [px4_msgs::msg::TrajectorySetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg)
|
||||
- The following input combinations are supported:
|
||||
- Position setpoint (`position` different from `NaN`). Non-`NaN` values of velocity and acceleration are used as feedforward terms for the inner loop controllers.
|
||||
- Velocity setpoint (`velocity` different from `NaN` and `position` set to `NaN`). Non-`NaN` values acceleration are used as feedforward terms for the inner loop controllers.
|
||||
- Velocity setpoint (`velocity` different from `NaN` and `position` set to `NaN`). Non-`NaN` values of acceleration are used as feedforward terms for the inner loop controllers.
|
||||
- Acceleration setpoint (`acceleration` different from `NaN` and `position` and `velocity` set to `NaN`)
|
||||
|
||||
- All values are interpreted in NED (Nord, East, Down) coordinate system and the units are `[m]`, `[m/s]` and `[m/s^2]` for position, velocity and acceleration, respectively.
|
||||
- All values are interpreted in NED (North, East, Down) coordinate system and the units are `[m]`, `[m/s]` and `[m/s^2]` for position, velocity and acceleration, respectively.
|
||||
|
||||
::: warning
|
||||
|
||||
Position, velocity and acceleration control for multicopters are all handled by the `mc_pos_control` module.
|
||||
This module is enabled if any of `position`, `velocity` and `acceleration` fields are set to true.
|
||||
However, only the content of the `TrajectorySetpoint` messages determines which of the three controllers shall run.
|
||||
|
||||
This means that even if `OffboardControlMode` messages carry the intention of velocity control (only `velocity` field is set) but non-`NaN` position values are sent in the `TrajectorySetpoint` messages, then PX4 will keep running the position controller.
|
||||
|
||||
:::
|
||||
|
||||
- [px4_msgs::msg::VehicleAttitudeSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg)
|
||||
- The following input combination is supported:
|
||||
@@ -194,13 +243,11 @@ The following offboard control modes bypass all internal PX4 control loops and s
|
||||
|
||||
- [px4_msgs::msg::ActuatorMotors](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + [px4_msgs::msg::ActuatorServos](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg)
|
||||
- You directly control the motor outputs and/or servo outputs.
|
||||
- Currently works at lower level than then `control_allocator` module.
|
||||
Do not publish these messages when not in offboard mode.
|
||||
- All the values normalized in `[-1, 1]`.
|
||||
For outputs that do not support negative values, negative entries map to `NaN`.
|
||||
- `NaN` maps to disarmed.
|
||||
|
||||
## MAVLink Messages
|
||||
## MAVLink Offboard Control
|
||||
|
||||
The following MAVLink messages and their particular fields and field values are allowed for the specified vehicle frames.
|
||||
|
||||
|
||||
+194
-193
@@ -95,206 +95,207 @@ They are not build into the module, and hence are neither published or subscribe
|
||||
|
||||
::: details See messages
|
||||
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [EstimatorFusionControl](../msg_docs/EstimatorFusionControl.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [EscEepromRead](../msg_docs/EscEepromRead.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [RangingBeacon](../msg_docs/RangingBeacon.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [RangingBeacon](../msg_docs/RangingBeacon.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [EscEepromRead](../msg_docs/EscEepromRead.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
:::
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pageClass: is-wide-page
|
||||
---
|
||||
|
||||
# EstimatorFusionControl (UORB message)
|
||||
|
||||
**TOPICS:** estimator_fusion_control
|
||||
|
||||
## Fields
|
||||
|
||||
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
||||
| --------------- | --------- | ------------ | ---------- | -------------------------------------- |
|
||||
| timestamp | `uint64` | | | time since system start (microseconds) |
|
||||
| gps_intended | `bool[2]` | | |
|
||||
| of_intended | `bool` | | |
|
||||
| ev_intended | `bool` | | |
|
||||
| agp_intended | `bool[4]` | | |
|
||||
| baro_intended | `bool` | | |
|
||||
| rng_intended | `bool` | | |
|
||||
| mag_intended | `bool` | | |
|
||||
| aspd_intended | `bool` | | |
|
||||
| rngbcn_intended | `bool` | | |
|
||||
| gps_active | `bool[2]` | | |
|
||||
| of_active | `bool` | | |
|
||||
| ev_active | `bool` | | |
|
||||
| agp_active | `bool[4]` | | |
|
||||
| baro_active | `bool` | | |
|
||||
| rng_active | `bool` | | |
|
||||
| mag_active | `bool` | | |
|
||||
| aspd_active | `bool` | | |
|
||||
| rngbcn_active | `bool` | | |
|
||||
|
||||
## Source Message
|
||||
|
||||
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorFusionControl.msg)
|
||||
|
||||
::: details Click here to see original file
|
||||
|
||||
```c
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
|
||||
# sensor intended for fusion (enabled via EKF2_SENS_EN AND CTRL param != disabled)
|
||||
bool[2] gps_intended
|
||||
bool of_intended
|
||||
bool ev_intended
|
||||
bool[4] agp_intended
|
||||
bool baro_intended
|
||||
bool rng_intended
|
||||
bool mag_intended
|
||||
bool aspd_intended
|
||||
bool rngbcn_intended
|
||||
|
||||
# whether the estimator is actively fusing data from each source
|
||||
bool[2] gps_active
|
||||
bool of_active
|
||||
bool ev_active
|
||||
bool[4] agp_active
|
||||
bool baro_active
|
||||
bool rng_active
|
||||
bool mag_active
|
||||
bool aspd_active
|
||||
bool rngbcn_active
|
||||
```
|
||||
|
||||
:::
|
||||
@@ -1458,6 +1458,20 @@ None
|
||||
| 6 | | | ? |
|
||||
| 7 | | | ? |
|
||||
|
||||
### VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE (43006)
|
||||
|
||||
Enable/disable estimator sensor fusion.
|
||||
|
||||
| Param | Units | Range/Enum | Description |
|
||||
| ----- | ----- | ---------- | ---------------------------------- |
|
||||
| 1 | | | Source (FUSION*SOURCE*\*) |
|
||||
| 2 | | | Sensor instance (0-based) |
|
||||
| 3 | | | Enable (1) or Disable (0) |
|
||||
| 4 | | | Estimator Instance (NaN: not used) |
|
||||
| 5 | | | Empty |
|
||||
| 6 | | | Empty |
|
||||
| 7 | | | Empty |
|
||||
|
||||
### VEHICLE_CMD_PX4_INTERNAL_START (65537)
|
||||
|
||||
Start of PX4 internal only vehicle commands (> UINT16_MAX).
|
||||
@@ -1544,6 +1558,15 @@ Change mode by specifying nav_state directly.
|
||||
| --------------------------------------------------------------------------------------------------------- | -------- | ----- | ----------------------------------------------------------------------------------------------------- |
|
||||
| <a id="#MESSAGE_VERSION"></a> MESSAGE_VERSION | `uint32` | 0 |
|
||||
| <a id="#PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION"></a> PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION | `uint16` | 3 | Param value for VEHICLE_CMD_PREFLIGHT_CALIBRATION to start temperature calibration. |
|
||||
| <a id="#FUSION_SOURCE_GPS"></a> FUSION_SOURCE_GPS | `uint8` | 0 | GNSS (EKF2_GPS{i}\_CTRL, use instance param) |
|
||||
| <a id="#FUSION_SOURCE_OF"></a> FUSION_SOURCE_OF | `uint8` | 1 | Optical Flow (EKF2_OF_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_EV"></a> FUSION_SOURCE_EV | `uint8` | 2 | External Vision (EKF2_EV_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_AGP"></a> FUSION_SOURCE_AGP | `uint8` | 3 | Auxiliary Global Position (EKF2_AGP{i}\_CTRL, use instance param) |
|
||||
| <a id="#FUSION_SOURCE_BARO"></a> FUSION_SOURCE_BARO | `uint8` | 4 | Barometer (EKF2_BARO_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_RNG"></a> FUSION_SOURCE_RNG | `uint8` | 5 | Range Finder (EKF2_RNG_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_MAG"></a> FUSION_SOURCE_MAG | `uint8` | 6 | Magnetometer (EKF2_MAG_TYPE) |
|
||||
| <a id="#FUSION_SOURCE_ASPD"></a> FUSION_SOURCE_ASPD | `uint8` | 7 | Airspeed (EKF2_ARSP_THR) |
|
||||
| <a id="#FUSION_SOURCE_RNGBCN"></a> FUSION_SOURCE_RNGBCN | `uint8` | 8 | Ranging Beacon |
|
||||
| <a id="#VEHICLE_MOUNT_MODE_RETRACT"></a> VEHICLE_MOUNT_MODE_RETRACT | `uint8` | 0 | Load and keep safe position (Roll,Pitch,Yaw) from permanent memory and stop stabilization. |
|
||||
| <a id="#VEHICLE_MOUNT_MODE_NEUTRAL"></a> VEHICLE_MOUNT_MODE_NEUTRAL | `uint8` | 1 | Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory. |
|
||||
| <a id="#VEHICLE_MOUNT_MODE_MAVLINK_TARGETING"></a> VEHICLE_MOUNT_MODE_MAVLINK_TARGETING | `uint8` | 2 | Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization. |
|
||||
@@ -1710,6 +1733,17 @@ uint16 VEHICLE_CMD_DO_WINCH = 42600 # Command to operate winch.
|
||||
|
||||
uint16 VEHICLE_CMD_EXTERNAL_POSITION_ESTIMATE = 43003 # External reset of estimator global position when dead reckoning.
|
||||
uint16 VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE = 43004
|
||||
uint16 VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE = 43006 # Enable/disable estimator sensor fusion. |Source (FUSION_SOURCE_*)|Sensor instance (0-based)|Enable (1) or Disable (0)|Estimator Instance (NaN: not used)|Empty|Empty|Empty|
|
||||
# Sensor fusion source types for VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE
|
||||
uint8 FUSION_SOURCE_GPS = 0 # GNSS (EKF2_GPS{i}_CTRL, use instance param)
|
||||
uint8 FUSION_SOURCE_OF = 1 # Optical Flow (EKF2_OF_CTRL)
|
||||
uint8 FUSION_SOURCE_EV = 2 # External Vision (EKF2_EV_CTRL)
|
||||
uint8 FUSION_SOURCE_AGP = 3 # Auxiliary Global Position (EKF2_AGP{i}_CTRL, use instance param)
|
||||
uint8 FUSION_SOURCE_BARO = 4 # Barometer (EKF2_BARO_CTRL)
|
||||
uint8 FUSION_SOURCE_RNG = 5 # Range Finder (EKF2_RNG_CTRL)
|
||||
uint8 FUSION_SOURCE_MAG = 6 # Magnetometer (EKF2_MAG_TYPE)
|
||||
uint8 FUSION_SOURCE_ASPD = 7 # Airspeed (EKF2_ARSP_THR)
|
||||
uint8 FUSION_SOURCE_RNGBCN = 8 # Ranging Beacon
|
||||
|
||||
# PX4 vehicle commands (beyond 16 bit MAVLink commands).
|
||||
uint32 VEHICLE_CMD_PX4_INTERNAL_START = 65537 # Start of PX4 internal only vehicle commands (> UINT16_MAX).
|
||||
|
||||
@@ -95,6 +95,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
|
||||
- [EstimatorBias](EstimatorBias.md)
|
||||
- [EstimatorBias3d](EstimatorBias3d.md)
|
||||
- [EstimatorEventFlags](EstimatorEventFlags.md)
|
||||
- [EstimatorFusionControl](EstimatorFusionControl.md)
|
||||
- [EstimatorGpsStatus](EstimatorGpsStatus.md)
|
||||
- [EstimatorInnovations](EstimatorInnovations.md)
|
||||
- [EstimatorSelectorStatus](EstimatorSelectorStatus.md)
|
||||
|
||||
@@ -18,7 +18,7 @@ It has been tested with the following devices:
|
||||
Any of the devices can be connected to any free/unused serial port on the flight controller.
|
||||
Most commonly they are connected to `TELEM2` (if this is not being use for some other purpose).
|
||||
|
||||
### PingRX
|
||||
### PingRX Pro
|
||||
|
||||
The PingRX MAVLink port uses a JST ZHR-4 mating connector with pinout as shown below.
|
||||
|
||||
@@ -29,9 +29,19 @@ The PingRX MAVLink port uses a JST ZHR-4 mating connector with pinout as shown b
|
||||
| 3 (blk) | Power | +4 to 6V |
|
||||
| 4 (blk) | GND | GND |
|
||||
|
||||
The PingRX comes with connector cable that can be attached directly to the TELEM2 port (DF13-6P) on an [mRo Pixhawk](../flight_controller/mro_pixhawk.md).
|
||||
The PingRX comes with connector cable that can be attached directly to the `TELEM2` port (DF13-6P) on an [mRo Pixhawk](../flight_controller/mro_pixhawk.md).
|
||||
For other ports or boards, you will need to obtain your own cable.
|
||||
|
||||
The recommended port configuration for this receiver is:
|
||||
|
||||
| Parameter | Recommended Value |
|
||||
| ---------------------------------------------------------------------------- | ----------------- |
|
||||
| [MAV_1_CONFIG](../advanced_config/parameter_reference.md#MAV_1_CONFIG) | `TELEM 2` |
|
||||
| [MAV_1_MODE](../advanced_config/parameter_reference.md#MAV_1_MODE) | uAvionix |
|
||||
| [MAV_1_FORWARD](../advanced_config/parameter_reference.md#MAV_1_FORWARD) | Enabled |
|
||||
| [MAV_1_RADIO_CTL](../advanced_config/parameter_reference.md#MAV_1_RADIO_CTL) | Disabled |
|
||||
| [MAV_1_FLOW_CTRL](../advanced_config/parameter_reference.md#MAV_2_FLOW_CTRL) | Force off |
|
||||
|
||||
## FLARM
|
||||
|
||||
FLARM has an on-board DF-13 6 Pin connector that has an identical pinout to the [mRo Pixhawk](../flight_controller/mro_pixhawk.md).
|
||||
@@ -49,7 +59,7 @@ FLARM has an on-board DF-13 6 Pin connector that has an identical pinout to the
|
||||
The TX and RX on the flight controller must be connected to the RX and TX on the FLARM, respectively.
|
||||
:::
|
||||
|
||||
## Software Configuration
|
||||
## PX4 Configuration
|
||||
|
||||
### Port Configuration
|
||||
|
||||
@@ -58,10 +68,12 @@ The only _specific_ setup is that the port baud rate must be set to 57600 and th
|
||||
|
||||
Assuming you have connected the device to the TELEM2 port, [set the parameters](../advanced_config/parameters.md) as shown:
|
||||
|
||||
- [MAV_1_CONFIG](../advanced_config/parameter_reference.md#MAV_1_CONFIG) = TELEM 2
|
||||
- [MAV_1_MODE](../advanced_config/parameter_reference.md#MAV_1_MODE) = Normal
|
||||
- [MAV_1_RATE](../advanced_config/parameter_reference.md#MAV_1_RATE) = 0 (default sending rate for port).
|
||||
- [MAV_1_FORWARD](../advanced_config/parameter_reference.md#MAV_1_FORWARD) = Enabled
|
||||
| Parameter | Recommended Value |
|
||||
| ------------------------------------------------------------------------ | --------------------------------- |
|
||||
| [MAV_1_CONFIG](../advanced_config/parameter_reference.md#MAV_1_CONFIG) | `TELEM 2` |
|
||||
| [MAV_1_MODE](../advanced_config/parameter_reference.md#MAV_1_MODE) | Normal |
|
||||
| [MAV_1_RATE](../advanced_config/parameter_reference.md#MAV_1_RATE) | 0 (default sending rate for port) |
|
||||
| [MAV_1_FORWARD](../advanced_config/parameter_reference.md#MAV_1_FORWARD) | Enabled |
|
||||
|
||||
Then reboot the vehicle.
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ Recommended digital airspeed sensors include:
|
||||
- [Holybro High Precision DroneCAN Airspeed Sensor - DLVR](https://holybro.com/collections/sensors/products/high-precision-dronecan-airspeed-sensor-dlvr)
|
||||
- [RaccoonLab Cyphal/CAN and DroneCAN Airspeed Sensor - MS4525DO](https://raccoonlab.co/tproduct/360882105-652259850171-cyphal-and-dronecan-airspeed-v2)
|
||||
- [Avionics Anonymous Air Data Computer with OAT probe](https://www.tindie.com/products/avionicsanonymous/uavcan-air-data-computer-airspeed-sensor/)
|
||||
- [UAV-DEV GmbH DroneCAN Airspeed and Barometer Sensor - AUAV](https://wiki.uav-dev.com/en/product/airspeed/auav)
|
||||
- Based on [Venturi effect](https://en.wikipedia.org/wiki/Venturi_effect)
|
||||
- [TFSLOT](airspeed_tfslot.md) Venturi effect airspeed sensor.
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
# Holybro SiK Telemetry Radio - Long Range
|
||||
|
||||
This Holybro SiK Long Range Telemetry Radio is a small, light, and inexpensive open-source radio platform with an extended range (~20km) compared to the standard model.
|
||||
|
||||
This radio is plug-and-play, ready for all Pixhawk Standard and other similar flight controllers, providing the easiest way to set up a telemetry connection between your controller and a ground station.
|
||||
It uses open-source firmware that has been specially designed to work well with MAVLink packets and to be integrated with PX4, ArduPilot, Mission Planner and QGroundControl.
|
||||
|
||||
The radios are available in 915 MHz or 433 MHz versions.
|
||||
Please purchase the model that is appropriate for your country/region.
|
||||
|
||||

|
||||
|
||||
## Where to Buy
|
||||
|
||||
- [Holybro SiK Telemetry Radio - Long Range](https://holybro.com/collections/telemetry-radios/products/sik-telemetry-radio-1w)
|
||||
|
||||
## Features
|
||||
|
||||
- 1W maximum RF output and up to 20km range (compared to 100mW/300m for the short range version).
|
||||
- Open-source SIK firmware
|
||||
- Plug-n-play for Pixhawk Standard Flight Controllers
|
||||
- The Easiest way to connect your controller and Ground Station
|
||||
- Interchangeable air and ground radio
|
||||
- 6-position JST-GH connector
|
||||
|
||||
## Specification
|
||||
|
||||
- 1 W maximum output power (adjustable) -117 dBm receive sensitivity
|
||||
- RP-SMA connector
|
||||
- 2-way full-duplex communication through adaptive TDM UART interface
|
||||
- Transparent serial link
|
||||
- MAVLink protocol framing
|
||||
- Frequency Hopping Spread Spectrum (FHSS) Configurable duty cycle
|
||||
- Error correction corrects up to 25% of bit errors Open-source SIK firmware
|
||||
- Configurable through Mission Planner & APM Planner
|
||||
- FT230X USB to BASIC UART IC
|
||||
- USB Type C connector
|
||||
- XT30 power connector for 7~28V DC input
|
||||
|
||||
## LEDs Indicators Status
|
||||
|
||||
The radios have four status LEDs.
|
||||
The USB `RX` and `TX` LEDs indicate the status of reception and transmission of the USB port.
|
||||
The `RADIO` and `ACT` two LED lights indicate the status of the RF circuit.
|
||||
|
||||
- USB-TX LED (orange):
|
||||
- Blinking: USB port has data transmission
|
||||
- Off: USB port has no data transmission
|
||||
- USB-RX LED (orange):
|
||||
- Blinking: USB port has data reception
|
||||
- Off: USB port has no data reception
|
||||
- Radio LED (Green)
|
||||
- Blinking: Searching for another radio
|
||||
- Solid: Link is established with another radio
|
||||
- ACT LED (Red)
|
||||
- Flashing: Transmitting data
|
||||
- Solid: In firmware update mode
|
||||
|
||||

|
||||
|
||||
## Connecting to Flight Controller
|
||||
|
||||
Supply the power (7~28V) to the radio via the XT30 connector.
|
||||
Use the 6-pin JST-GH connector that comes with the radio to connect the radio to your flight controller's `TELEM1` port.
|
||||
|
||||
Note that `TELEM2` can also be used, but you may need to [configure the telemetry port](../peripherals/mavlink_peripherals.md) on some flight controllers.
|
||||
|
||||
## Connecting to a PC or Ground Station
|
||||
|
||||
First, power the module with a 7~28V DC source.
|
||||
Then, connect the radio to your Windows PC or Ground Station using a Type-C USB cable.
|
||||
|
||||
The necessary drivers should be installed automatically, and the radio will appear as a new “USB Serial Port” in the Windows Device Manager under Ports (COM & LPT).
|
||||
The Mission Planner's COM Port selection drop-down should also include the newly added COM port.
|
||||
|
||||
## Packages Include
|
||||
|
||||
### Single Radio
|
||||
|
||||
- 1W Radio modules with antennas (1)
|
||||
- High-gain omnidirectional antenna (1)
|
||||
- Male Type-C to male Type-C USB cable (1)
|
||||
- Male XT30 to female XT30 adapter cable (1)
|
||||
- Male XT30 to female XT60 adapter cable (1)
|
||||
- JST-GH-6P to JST-GH-6P cable (1) (for Pixhawk Standard FC)
|
||||
- Rubber damping grommet (3)
|
||||
|
||||

|
||||
|
||||
### Pair Radios
|
||||
|
||||
- 1W Radio modules with antennas (2)
|
||||
- High-gain omnidirectional antenna (2)
|
||||
- Male Type-C to male Type-C USB cable (1)
|
||||
- Male XT30 to female XT30 adapter cable (1)
|
||||
- Male XT30 to female XT60 adapter cable (1)
|
||||
- JST-GH-6P to JST-GH-6P cable (1) (for Pixhawk Standard FC)
|
||||
- Rubber damping grommet (3)
|
||||
|
||||

|
||||
@@ -6,6 +6,7 @@ PX4 supports a number of types of telemetry radios:
|
||||
|
||||
- [SiK Radio](../telemetry/sik_radio.md) based firmware (more generally, any radio with a UART interface should work).
|
||||
- [HolyBro SiK Telemetry Radio](../telemetry/holybro_sik_radio.md)
|
||||
- [HolyBro SiK Long Range](../telemetry/holybro_sik_longrange.md)
|
||||
- [RFD900 Telemetry Radio](../telemetry/rfd900_telemetry.md)
|
||||
- [ThunderFly TFSIK01 Telemetry Radio](../telemetry/tfsik_telemetry.md)
|
||||
- <del>_HKPilot Telemetry Radio_</del> (Discontinued)
|
||||
|
||||
@@ -14,6 +14,7 @@ Hardware for the SiK radio can be obtained from various manufacturers/stores in
|
||||
## Vendors
|
||||
|
||||
- [Holybro Telemetry Radio](../telemetry/holybro_sik_radio.md)
|
||||
- [HolyBro SiK Long Range](../telemetry/holybro_sik_longrange.md)
|
||||
- [RFD900 Telemetry Radio](../telemetry/rfd900_telemetry.md)
|
||||
- [ThunderFly TFSIK01 Telemetry Radio](../telemetry/tfsik_telemetry.md)
|
||||
- <del>_HKPilot Telemetry Radio_</del> (Discontinued)
|
||||
|
||||
@@ -22,6 +22,8 @@ For significant changes to the system you should also run general flight tests u
|
||||
These test cards define "standard" flight tests.
|
||||
These are run by the test team as part of release testing, and for more significant system changes.
|
||||
|
||||
### Multicopter
|
||||
|
||||
- [MC_01 - Manual modes](../test_cards/mc_01_manual_modes.md)
|
||||
- [MC_02 - Full Autonomous](../test_cards/mc_02_full_autonomous.md)
|
||||
- [MC_03 - Auto Manual Mix](../test_cards/mc_03_auto_manual_mix.md)
|
||||
@@ -32,3 +34,8 @@ These are run by the test team as part of release testing, and for more signific
|
||||
- [MC_08 - DSHOT ESC](../test_cards/mc_08_dshot.md)
|
||||
- [MC_09 - VIO (Visual-Inertial Odometry)](../test_cards/mc_09_vio.md)
|
||||
- [MC_10 - Optical Flow / GPS Mixed](../test_cards/mc_10_optical_flow_gps_mixed.md)
|
||||
|
||||
### Fixed Wing
|
||||
|
||||
- [FW_01 - Manual Modes](../test_cards/fw_01_manual_modes.md)
|
||||
- [FW_02 - Full Autonomous](../test_cards/fw_02_full_autonomous.md)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# Test FW_01 - Manual Modes
|
||||
|
||||
## Objective
|
||||
|
||||
To test that manual flight modes work as expected for fixed wing vehicles.
|
||||
|
||||
## Preflight
|
||||
|
||||
Ensure that the vehicle can go into Stabilized, Altitude, and Position mode while still on the ground.
|
||||
|
||||
## Flight Tests
|
||||
|
||||
❏ Stabilized
|
||||
|
||||
❏ Wings level with stick centered
|
||||
|
||||
❏ Pitch/Roll response with correct bank angle limits
|
||||
|
||||
❏ Yaw coordination
|
||||
|
||||
❏ Throttle response 1:1
|
||||
|
||||
❏ Altitude
|
||||
|
||||
❏ Altitude should hold current value with stick centered
|
||||
|
||||
❏ Pitch input controls climb/descend rate
|
||||
|
||||
❏ Throttle automatically managed to maintain airspeed
|
||||
|
||||
❏ Roll/Yaw respond correctly to stick movement
|
||||
|
||||
❏ Position
|
||||
|
||||
❏ Vehicle should hold current heading and loiter with stick centered
|
||||
|
||||
❏ Altitude should hold current value
|
||||
|
||||
❏ Roll input commands heading change
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Takeoff should be smooth (hand launch or runway)
|
||||
- No oscillations should be present in any of the above flight modes
|
||||
- Vehicle should maintain stable flight throughout all mode transitions
|
||||
- Landing approach should be stable and controllable
|
||||
@@ -0,0 +1,64 @@
|
||||
# Test FW_02 - Full Autonomous
|
||||
|
||||
## Objective
|
||||
|
||||
To test the auto modes such as Mission, Takeoff, Hold, and RTL for fixed wing vehicles.
|
||||
|
||||
## Preflight
|
||||
|
||||
Plan a mission on the ground. Ensure the mission has:
|
||||
|
||||
- Takeoff as first waypoint
|
||||
- Changes in altitude throughout the mission
|
||||
- Last waypoint is an RTL
|
||||
- Duration of 1 to 2 minutes
|
||||
|
||||
## Flight Tests
|
||||
|
||||
❏ Takeoff
|
||||
|
||||
❏ Engage Takeoff mode (hand launch or runway)
|
||||
|
||||
❏ Vehicle should climb to takeoff altitude
|
||||
|
||||
❏ Vehicle should hold/loiter after reaching takeoff altitude
|
||||
|
||||
❏ Mission
|
||||
|
||||
❏ Auto takeoff (hand launch or runway)
|
||||
|
||||
❏ Verify changes in altitude throughout the mission
|
||||
|
||||
❏ Verify Mission Ends in RTL
|
||||
|
||||
❏ Duration of 1 to 2 minutes
|
||||
|
||||
❏ Auto land or hold at end
|
||||
|
||||
❏ Hold
|
||||
|
||||
❏ Engage Hold mode during flight
|
||||
|
||||
❏ Vehicle should orbit at current position and altitude
|
||||
|
||||
❏ Orbit radius and direction should match parameters
|
||||
|
||||
❏ RTL
|
||||
|
||||
❏ Arm and takeoff in any manual mode
|
||||
|
||||
❏ Fly out ~200m from start point
|
||||
|
||||
❏ Engage Return mode
|
||||
|
||||
❏ Vehicle should climb to RTL altitude if below it
|
||||
|
||||
❏ Vehicle should return to home and hold or land
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Mission should upload on first attempt
|
||||
- Vehicle should automatically takeoff upon engaging Auto
|
||||
- Waypoint tracking should be smooth with appropriate turn radius
|
||||
- Vehicle should adjust height to RTL altitude before returning home
|
||||
- Landing approach should be stable (if auto-land is configured)
|
||||
@@ -172,6 +172,7 @@
|
||||
- [CUAV V5 nano (FMUv5)](flight_controller/cuav_v5_nano.md)
|
||||
- [CUAV V5 nano 배선 퀵 스타트](assembly/quick_start_cuav_v5_nano.md)
|
||||
- [CUAV X25 EVO](flight_controller/cuav_x25-evo.md)
|
||||
- [CUAV X25 EVO Wiring Quick Start](assembly/quick_start_cuav_x25_evo.md)
|
||||
- [CUAV X25 SUPER](flight_controller/cuav_x25-super.md)
|
||||
- [CubePilot Cube Orange+ (CubePilot)](flight_controller/cubepilot_cube_orangeplus.md)
|
||||
- [CubePilot Cube Orange (CubePilot)](flight_controller/cubepilot_cube_orange.md)
|
||||
|
||||
@@ -27,6 +27,8 @@ Supported flight controllers include:
|
||||
|
||||
- [ARK Electronics ARKV6X](../flight_controller/ark_v6x.md)
|
||||
- [CUAV Pixhawk V6X](../flight_controller/cuav_pixhawk_v6x.md)
|
||||
- [CUAV X25 EVO](../flight_controller/cuav_x25-evo.md)
|
||||
- [CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
- [Holybro Pixhawk 5X](../flight_controller/pixhawk5x.md)
|
||||
- [Holybro Pixhawk 6X](../flight_controller/pixhawk6x.md)
|
||||
- [RaccoonLab FMUv6X Autopilot](../flight_controller/raccoonlab_fmu6x.md)
|
||||
|
||||
@@ -410,6 +410,7 @@ They recommend sensors, power systems, and other components from the same manufa
|
||||
- [CUAV Pixhawk V6X Wiring QuickStart](../assembly/quick_start_cuav_pixhawk_v6x.md)
|
||||
- [CUAV V5+ Wiring Quickstart](../assembly/quick_start_cuav_v5_plus.md)
|
||||
- [CUAV V5 nano Wiring Quickstart](../assembly/quick_start_cuav_v5_nano.md)
|
||||
- [CUAV X25 EVO Wiring Quickstart](../assembly/quick_start_cuav_x25_evo.md)
|
||||
- [Holybro Pixhawk 6C Wiring Quickstart](../assembly/quick_start_pixhawk6c.md)
|
||||
- [Holybro Pixhawk 6X Wiring Quickstart](../assembly/quick_start_pixhawk6x.md)
|
||||
- [Holybro Pixhawk 5X Wiring Quickstart](../assembly/quick_start_pixhawk5x.md)
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
# CUAV X25 EVO Wiring Quick Start
|
||||
|
||||
:::warning
|
||||
PX4 does not manufacture this (or any) autopilot.
|
||||
Contact the [manufacturer](https://store.cuav.net/) for hardware support or compliance issues.
|
||||
:::
|
||||
|
||||
This quick start guide shows how to power the [X25 EVO](../flight_controller/cuav_x25-evo.md) flight controller and connect its most important peripherals.
|
||||
|
||||
:::info
|
||||
The following flight controller models are applicable to this quick start guide.
|
||||
[CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
:::
|
||||
|
||||
## 배선 개요
|
||||
|
||||
아래의 이미지는 주요 센서와 주변 장치(모터 및 서보 출력 제외)들의 연결 방법을 설명합니다.
|
||||
다음 섹션에서 각 장치에 대하여 자세히 설명합니다.
|
||||
|
||||

|
||||
|
||||
| 인터페이스 | **Function** |
|
||||
| :----------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| POWER C1/C2 | Connect the PMU2 Lite to this port; this port is used for connecting the DroneCAN power module |
|
||||
| M1 ~ M16 | PWM signal output ports, usable for controlling motors or servos; support 3.3V/5V PWM configuration |
|
||||
| RC IN | Connect remote controller receivers with one-way protocols (e.g., SBUS/DSM/PPM). Note: ELRS/CRSF receivers should be connected to any serial port, not RC IN |
|
||||
| RSSI | For connecting signal strength feedback modules |
|
||||
| GPS&SAFETY | Connect Neo-series GPS or C-RTK-series RTK; this port includes interfaces for GPS, safety switch, and buzzer |
|
||||
| GPS2 | Usable for connecting additional GPS/RTK modules |
|
||||
| DEBUG (DSU) | For FMU chip debugging and reading debug device information; with ArduPilot firmware, it can be configured for other serial port functions |
|
||||
| ADC3V3 | For analog level signal detection; the maximum detectable level signal is 3.3V |
|
||||
| ADC6V6 | For analog level signal detection; the maximum detectable level signal is 6.6V (PX4 is not supported.) |
|
||||
| TF CARD | Insert an SD card here to enable log storage functionality |
|
||||
| ETH | Ethernet port, usable for connecting Ethernet devices such as companion computers |
|
||||
| I2C1/2/3 | Connect external I2C devices (e.g., external compasses) for communication between the controller and I2C devices |
|
||||
| TELEM1/TELEM2 | Connect telemetry modules (for data transmission) to enable MAVLINK data interaction |
|
||||
| CAN1/2 | For communication between the controller and DroneCAN devices (e.g., connecting NEO4 SE GPS) |
|
||||
| TYPE C | USB port of the controller, usable for connecting to the ground station, flashing firmware, and other operations |
|
||||
| SPI6 | SPI port for external expansion; generally not used |
|
||||
|
||||
## Vehicle Front
|
||||
|
||||
:::info
|
||||
If the controller cannot be mounted in the recommended/default orientation (e.g. due to space constraints) you will need to configure the autopilot software with the orientation that you actually used: [Flight Controller Orientation](../config/flight_controller_orientation.md).
|
||||
:::
|
||||
|
||||

|
||||
|
||||
## GPS + 나침반 + 부저 + 안전 스위치 + LED
|
||||
|
||||
We recommend using a CAN GPS/RTK (such as [Neo 4SE](https://store.cuav.net/shop/cuav-neo-4-se-gps-module/)); simply connect it to the **CAN 1** or **CAN 2** port.
|
||||
|
||||
You can also use a standard GPS/RTK module(such as [NEO3 GPS](https://store.cuav.net/shop/neo-3/) (10-pin connector)) by connecting it to the **GPS&SAFETY** port.
|
||||
Most commonly used GPS modules today integrate GPS, compass, safety switch, buzzer, and LED status light.
|
||||
|
||||
If you need to use assisted GPS, connect to the **GPS2** port.
|
||||
|
||||
The GPS/compass should be [mounted on the frame](../assembly/mount_gps_compass.md) as far away from other electronics as possible (separating the compass from other electronics will reduce interference), with the direction markings towards the front of the vehicle (the arrow on the NEO GPS should match the arrow on the flight controller).
|
||||
|
||||

|
||||
|
||||
:::info
|
||||
The GPS module's integrated safety switch is enabled _by default_ (when enabled, PX4 will not let you arm the vehicle).
|
||||
To disable the safety, press and hold the safety switch for 1 second.
|
||||
안전 스위치를 다시 눌러 안전 장치를 활성화하고 기체 시동을 끌 수 있습니다.
|
||||
조종기나 지상국 프로그램에서 기체 시동을 끌 수 없는 상황에서 유용합니다.
|
||||
:::
|
||||
|
||||
## 무선 조종
|
||||
|
||||
A remote control (RC) radio system is required if you want to _manually_ control your vehicle (PX4 does not require a radio system for autonomous flight modes).
|
||||
|
||||
You will need to [select a compatible transmitter/receiver](../getting_started/rc_transmitter_receiver.md) and then _bind_ them so that they communicate (read the instructions that come with your specific transmitter/receiver).
|
||||
|
||||
Connection methods vary by remote controller and receiver type:
|
||||
|
||||
### Android Remote Controllers
|
||||
|
||||
Take the H16 as an example:
|
||||
|
||||

|
||||
|
||||
Connect **TELEM1/TELEM2** to the UART0 port of the H16 remote controller, and link the H16’s SBUS pin to the **RC IN** port.
|
||||
|
||||
### SBUS/DSM/PPM Protocol Receivers
|
||||
|
||||

|
||||
|
||||
Use wires to connect the receiver to the **RC IN** port at the rear of the controller.
|
||||
|
||||
### ELRS/CRSF Receivers
|
||||
|
||||

|
||||
|
||||
Connect the [ELRS/CRSF](../telemetry/crsf_telemetry.md) receiver to any UART serial port of the X25 EVO (e.g., **TELEM2**).
|
||||
|
||||
## 전원
|
||||
|
||||
The X25 EVO comes standard with the PMU2 Lite power module, which supports 20–70V input and can measure a maximum current of 220A.
|
||||
It can be directly connected to the **Power C1/C2** port of the X25 EVO and is plug-and-play (no configuration required).
|
||||
|
||||

|
||||
|
||||
## Telemetry (Radio) System
|
||||
|
||||
[Telemetry system](../telemetry/index.md) allows you to communicate with the unmanned system via ground station software, enabling you to monitor and control the UAV’s status during flight. Connect the on-board unit of the telemetry system to the **TELEM1** or **TELEM2** port.
|
||||
|
||||
You can also purchase telemetry radios from the [CUAV store](https://store.cuav.net/uav-telemetry-module/).
|
||||
|
||||

|
||||
|
||||
## SD 카드
|
||||
|
||||
SD cards are highly recommended as they are required for [recording and analyzing flight details](../getting_started/flight_reporting.md), running tasks and using UAVCAN bus hardware.
|
||||
An SD card is already installed on X25 EVO when it leaves the factory.
|
||||
|
||||
:::tip
|
||||
For more information see [Basic Concepts > SD Cards (Removable Memory)](../getting_started/px4_basic_concepts.md#sd-cards-removable-memory).
|
||||
:::
|
||||
|
||||
## Motors/Servo
|
||||
|
||||
Motors/servos are connected to the **M1~M16** ports in the order specified for your vehicle in the [Airframe Reference](../airframes/airframe_reference.md).
|
||||
|
||||

|
||||
|
||||
## Servo Power Supply
|
||||
|
||||
The X25 EVO does not supply power to servos. If you need to power servos:
|
||||
|
||||
1. Connect a BEC to the positive and negative terminals of any column among **M1 ~ M16** (the positive and negative terminals of **M1 ~ M16** are interconnected).
|
||||
2. Then connect the servos to the same column.
|
||||
|
||||

|
||||
|
||||
:::info
|
||||
The power rail voltage must be appropriate for the servo being used!
|
||||
:::
|
||||
|
||||
## 기타 주변 장치
|
||||
|
||||
The wiring and configuration of optional/less common components is covered within the topics for individual [peripherals](../peripherals/index.md).
|
||||
|
||||
## 설정
|
||||
|
||||
General configuration information is covered in: [Autopilot Configuration](../config/index.md).
|
||||
|
||||
QuadPlane-specific configuration is covered here: [QuadPlane VTOL Configuration](../config_vtol/vtol_quad_configuration.md)
|
||||
|
||||
## 추가 정보
|
||||
|
||||
- [CUAV Docs](https://doc.cuav.net/) (CUAV)
|
||||
- [X25 EVO](../flight_controller/cuav_x25-evo.md) (PX4 Doc Overview page)
|
||||
- [X25 SUPER](../flight_controller/cuav_x25-super.md) (PX4 Doc Overview page)
|
||||
@@ -176,7 +176,7 @@ The fields are:
|
||||
|
||||
#### Flap Scale and Spoiler Scale Configuration
|
||||
|
||||
"Flap-control" and "Spoiler-control" are aerodynamic configurations that can either be commanded manually by the pilot (using RC, say), or are set automatically by the controller.
|
||||
"Flap-control" and "Spoiler-control" are aerodynamic configurations that can either be commanded manually by the pilot (using RC or a Joystick, say) (see [Flaps and Spoiler Control with Manual Control](#flaps-and-spoiler-control-with-manual-control)), or are set automatically by the controller.
|
||||
For example, a pilot or the landing system might engage "Spoiler-control" in order to reduce the airspeed before landing.
|
||||
|
||||
The configurations are an _abstract_ way for the controller to tell the allocator how much it should adjust the aerodynamic properties of the wings relative to the "full flaps" or "full spoiler" configuration (between `[0,1]`, where "1" indicates the full range).
|
||||
@@ -199,6 +199,20 @@ In the following example, the vehicle has two ailerons, one elevator, one rudder
|
||||
These are the elevator deflections added to compensate for the pitching moments generated by the flaps and spoiler actuators.
|
||||
In the case here the elevator would be deflected 0.3 up when the flaps are fully deployed to counteract the pitching down moment caused by the flaps.
|
||||
|
||||
#### Flaps and Spoiler Control with Manual Control
|
||||
|
||||
The preferred method to manually actuate spoilers and flaps is to map a manual control switch to an `AUX` output (see [Generic Actuator Control with RC](#generic-actuator-control-with-rc)), and then map that AUX output to the flap or spoiler function using [FW_FLAPS_MAN](../advanced_config/parameter_reference.md#FW_FLAPS_MAN) or [FW_SPOILERS_MAN](../advanced_config/parameter_reference.md#FW_SPOILERS_MAN).
|
||||
The source for the manual control can be RC or MAVLink.
|
||||
|
||||
:::warning
|
||||
The following method is not recommended, and will be removed in a future release.
|
||||
If using it you should migrate to using the AUX-based method.
|
||||
|
||||
It is also possible to define a flaps channel directly on the RC using [RC_MAP_FLAPS](../advanced_config/parameter_reference.md#RC_MAP_FLAPS).
|
||||
This channel can also be used to control the spoilers by setting [FW_SPOILERS_MAN](../advanced_config/parameter_reference.md#FW_SPOILERS_MAN) to `Flaps channel`.
|
||||
This method is not possible when the source for the manual control is MAVLink.
|
||||
:::
|
||||
|
||||
#### 액추에이터 롤, 피치 및 요 스케일링
|
||||
|
||||
:::info
|
||||
|
||||
+15
-14
@@ -314,23 +314,24 @@ The failure detector is active in all vehicle types and modes, except for those
|
||||
|
||||
### Motor Failure Trigger
|
||||
|
||||
The failure detector can be configured to detect a motor failure while armed (and trigger an associated action) in the following conditions:
|
||||
The failure detector can be configured to detect a motor failure while armed (and trigger an associated action) if the ESC current falls outside expected bounds for more than [MOTFAIL_TIME](#MOTFAIL_TIME) seconds.
|
||||
Motor failures are non-latching: if the failure condition clears, the failure is cleared.
|
||||
|
||||
- A 300 ms timeout occurs in telemetry from an ESC that was previously available.
|
||||
- The input current in the telemetry of an ESC which was previously positive gets too low for more than [`FD_ACT_MOT_TOUT`](FD_ACT_MOT_TOUT) ms.
|
||||
The "too low" condition is defined by:
|
||||
The undercurrent and overcurrent conditions are defined by:
|
||||
|
||||
```text
|
||||
{esc current} < {parameter FD_ACT_MOT_C2T} * {motor command between 0 and 1}
|
||||
```
|
||||
```text
|
||||
undercurrent: {esc current} < {MOTFAIL_C2T} * {motor command [0,1]} - {MOTFAIL_LOW_OFF}
|
||||
overcurrent: {esc current} > {MOTFAIL_C2T} * {motor command [0,1]} + {MOTFAIL_HIGH_OFF}
|
||||
```
|
||||
|
||||
| 매개변수 | 설명 |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="FD_ACT_EN"></a>[FD_ACT_EN](../advanced_config/parameter_reference.md#FD_ACT_EN) | Enable/disable the motor failure trigger completely. |
|
||||
| <a id="FD_ACT_MOT_THR"></a>[FD_ACT_MOT_THR](../advanced_config/parameter_reference.md#FD_ACT_MOT_THR) | Minimum normalized [0,1] motor command below which motor under current is ignored. |
|
||||
| <a id="FD_ACT_MOT_C2T"></a>[FD_ACT_MOT_C2T](../advanced_config/parameter_reference.md#FD_ACT_MOT_C2T) | Scale between normalized [0,1] motor command and expected minimally reported current when the rotor is healthy. |
|
||||
| <a id="FD_ACT_MOT_TOUT"></a>[FD_ACT_MOT_TOUT](../advanced_config/parameter_reference.md#FD_ACT_MOT_TOUT) | Time in milliseconds for which the under current detection condition needs to stay true. |
|
||||
| <a id="CA_FAILURE_MODE"></a>[CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE) | Configure to not only warn about a motor failure but remove the first motor that detects a failure from the allocation effectiveness which turns off the motor and tries to operate the vehicle without it until disarming the next time. |
|
||||
| 매개변수 | 설명 |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="FD_ACT_EN"></a>[FD_ACT_EN](../advanced_config/parameter_reference.md#FD_ACT_EN) | Enable/disable the motor failure trigger completely. |
|
||||
| <a id="MOTFAIL_C2T"></a>[MOTFAIL_C2T](../advanced_config/parameter_reference.md#MOTFAIL_C2T) | Slope between normalized motor command [0–1] and expected steady-state current (FD_ACT_MOT_C2T at 100%) (A/%). |
|
||||
| <a id="MOTFAIL_LOW_OFF"></a>[MOTFAIL_LOW_OFF](../advanced_config/parameter_reference.md#MOTFAIL_LOW_OFF) | Undercurrent detection threshold offset (A). Subtracted from the expected current to form the lower bound. |
|
||||
| <a id="MOTFAIL_HIGH_OFF"></a>[MOTFAIL_HIGH_OFF](../advanced_config/parameter_reference.md#MOTFAIL_HIGH_OFF) | Overcurrent detection threshold offset (A). Added to the expected current to form the upper bound. |
|
||||
| <a id="MOTFAIL_TIME"></a>[MOTFAIL_TIME](../advanced_config/parameter_reference.md#MOTFAIL_TIME) | Hysteresis time (s) for which the current threshold must remain exceeded before a motor failure is triggered. |
|
||||
| <a id="CA_FAILURE_MODE"></a>[CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE) | Configure to not only warn about a motor failure but remove the first motor that detects a failure from the allocation effectiveness which turns off the motor and tries to operate the vehicle without it until disarming the next time. |
|
||||
|
||||
### 외부 자동 작동 시스템 (ATS)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ This category includes boards that are not fully compliant with the pixhawk stan
|
||||
- [CUAV V5+](../flight_controller/cuav_v5_plus.md) (FMUv5)
|
||||
- [CUAV V5 nano](../flight_controller/cuav_v5_nano.md) (FMUv5)
|
||||
- [CUAV X25 EVO](../flight_controller/cuav_x25-evo.md)
|
||||
[CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
- [CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
- [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)
|
||||
|
||||
@@ -9,7 +9,7 @@ The _X25-EVO_ is an advanced autopilot manufactured by CUAV<sup>®</sup>.
|
||||
|
||||
The autopilot is recommended for commercial system integration but is also suitable for academic research and any other applications.
|
||||
|
||||

|
||||

|
||||
|
||||
The X25-EVO brings you ultimate performance, stability, and reliability in every aspect.
|
||||
|
||||
@@ -19,12 +19,17 @@ The X25-EVO brings you ultimate performance, stability, and reliability in every
|
||||
|
||||
### 특징
|
||||
|
||||
- Arm® Cortex-M7® processor (STM32H743XI) with Floating-Point Unit (FPU), operating at 480MHz, and featuring 2MB Flash memory. Enables developers to enhance productivity and efficiency, allowing for more complex algorithms and models.
|
||||
- Automotive-grade RM3100 compass. Designed for better stability and anti-interference capability.
|
||||
- Triple-redundant IMUs and dual-redundant barometers located on separate buses. If the PX4 autopilot detects a sensor failure, the system seamlessly switches to another sensor to maintain flight control reliability.
|
||||
- Independent LDO power control supplies power to each sensor group. A vibration isolation system filters high-frequency vibrations and reduces noise to ensure accurate readings, enabling better overall flight performance for the vehicle.
|
||||
- Arm® Cortex-M7® processor (STM32H743XI) with Floating-Point Unit (FPU), operating at 480MHz, and featuring 2MB Flash memory.
|
||||
Enables developers to enhance productivity and efficiency, allowing for more complex algorithms and models.
|
||||
- Automotive-grade RM3100 compass.
|
||||
Designed for better stability and anti-interference capability.
|
||||
- Triple-redundant IMUs and dual-redundant barometers located on separate buses.
|
||||
If the PX4 autopilot detects a sensor failure, the system seamlessly switches to another sensor to maintain flight control reliability.
|
||||
- Independent LDO power control supplies power to each sensor group.
|
||||
A vibration isolation system filters high-frequency vibrations and reduces noise to ensure accurate readings, enabling better overall flight performance for the vehicle.
|
||||
- Integrated Microchip Ethernet PHY for high-speed communication with onboard devices like mission computers via Ethernet.
|
||||
- Dual temperature compensation systems, located on the IMU board and FMU board respectively. Temperature is controlled by onboard heating resistors to achieve the optimal operating temperature for the IMUs.
|
||||
- Dual temperature compensation systems, located on the IMU board and FMU board respectively.
|
||||
Temperature is controlled by onboard heating resistors to achieve the optimal operating temperature for the IMUs.
|
||||
- PWM servo output voltage switchable between 3.3V or 5V.
|
||||
- Modular design for DIY carrier boards.
|
||||
|
||||
@@ -33,7 +38,7 @@ The X25-EVO brings you ultimate performance, stability, and reliability in every
|
||||
- Main Processor: STM32H743XI
|
||||
- 32-bit Arm® Cortex®-M7, 480MHz, 2MB Flash, 1MB RAM
|
||||
- Onboard Sensors:
|
||||
- Accel/Gyro: IIM42652\*2
|
||||
- Accel/Gyro: IIM42652 (x2)
|
||||
- Accel/Gyro: IIM42653
|
||||
- 자력계 : RM3100
|
||||
- Barometer: BMP581
|
||||
@@ -47,14 +52,14 @@ The X25-EVO brings you ultimate performance, stability, and reliability in every
|
||||
- Servo Rail Input: 0~9.9V
|
||||
- Rated Current:
|
||||
- Total Output Max Current: 10A
|
||||
- TELEM1 and TELEM2 Output Current limiter: 4A
|
||||
- CAN1 and CAN2 Output Current limiter: 2.4A
|
||||
- `TELEM1` and `TELEM2` Output Current limiter: 4A
|
||||
- `CAN1` and `CAN2` Output Current limiter: 2.4A
|
||||
- Other Ports Output Current limiter: 1.5A
|
||||
|
||||
### 인터페이스
|
||||
|
||||
- 16x PWM Servo Outputs
|
||||
- 1x Dedicated R/C Input for Spektrum / DSM and S.Bus
|
||||
- 1x Dedicated R/C Input(`RC IN`) for Spektrum / DSM and S.Bus
|
||||
- 1x Analog/PWM RSSI Input
|
||||
- 2x TELEM Ports (with full flow control)
|
||||
- 1x UART4 Port
|
||||
@@ -83,7 +88,12 @@ The X25-EVO brings you ultimate performance, stability, and reliability in every
|
||||
|
||||
### 기계식 부품
|
||||
|
||||
- Not provided.
|
||||
- 중량
|
||||
- Flight Controller Module: 110g
|
||||
- Operating & storage temperature: -20 ~ 85°C
|
||||
- Dimensions:
|
||||
|
||||

|
||||
|
||||
## Purchase Channels {#store}
|
||||
|
||||
@@ -91,11 +101,11 @@ Order from [CUAV](https://store.cuav.net/).
|
||||
|
||||
## 조립 및 설정
|
||||
|
||||
- Not provided.
|
||||
The [X25 EVO Wiring Quick Start](../assembly/quick_start_cuav_x25_evo.md) provides instructions on how to assemble required/important peripherals including GPS, Power Module etc.
|
||||
|
||||
## Pin Definitions
|
||||
## 핀배열
|
||||
|
||||
- Not provided.
|
||||

|
||||
|
||||
## 시리얼 포트 매핑
|
||||
|
||||
@@ -106,12 +116,34 @@ Order from [CUAV](https://store.cuav.net/).
|
||||
| USART3 | /dev/ttyS2 | 디버그 콘솔 |
|
||||
| UART4 | /dev/ttyS3 | UART4 |
|
||||
| UART5 | /dev/ttyS4 | TELEM2 |
|
||||
| USART6 | /dev/ttyS5 | RC |
|
||||
| USART6 | /dev/ttyS5 | RC IN |
|
||||
| UART7 | /dev/ttyS6 | TELEM1 |
|
||||
|
||||
## PWM Outputs {#pwm_outputs}
|
||||
|
||||
This flight controller supports up to 16 FMU PWM outputs (MAIN).
|
||||
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 9-16 do not support DShot.
|
||||
- Outputs 1-7 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
- Output 8 supports Bidirectional DShot output only (no eRPM capture).
|
||||
|
||||
The 16 outputs are in 5 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-8 in group2 (Timer4)
|
||||
- Outputs 9-11 in group3 (Timer1)
|
||||
- Outputs 12-14 in group4 (Timer8)
|
||||
- Outputs 15-16 in group5 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
## 정격 전압
|
||||
|
||||
The _X25-EVO_ achieves triple redundancy on power supplies if three power sources are provided. The three power rails are POWERC1, POWERC2, and USB.
|
||||
The _X25-EVO_ achieves triple redundancy on power supplies if three power sources are provided.
|
||||
The three power rails are `POWERC1`, `POWERC2`, and `USB`.
|
||||
|
||||
- **POWER C1** and **POWER C2** are DroneCAN/UAVCAN battery interfaces.
|
||||
|
||||
@@ -154,7 +186,8 @@ The [PX4 System Console](../debug/system_console.md) and [SWD Interface](../debu
|
||||
|
||||
## 지원 플랫폼 및 기체
|
||||
|
||||
Any multirotor/airplane/rover or boat that can be controlled using normal RC servos or Futaba S-Bus servos. The complete set of supported configurations can be found in the [Airframe Reference](../airframes/airframe_reference.md).
|
||||
일반 RC 서보 또는 Futaba S-Bus 서보로 제어 가능한 모든 멀티콥터/비행기/로버 또는 보트.
|
||||
The complete set of supported configurations can be seen in the [Airframes Reference](../airframes/airframe_reference.md).
|
||||
|
||||
## 추가 정보
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# CUAV X25-SUPER
|
||||
|
||||
<Badge type="tip" text="PX4 v1.18)" />
|
||||
<Badge type="tip" text="PX4 v1.18" />
|
||||
|
||||
:::warning
|
||||
PX4 does not manufacture this (or any) autopilot.
|
||||
@@ -21,12 +21,17 @@ The X25-SUPER brings you ultimate performance, stability, and reliability in eve
|
||||
|
||||
### 특징
|
||||
|
||||
- Arm® Cortex-M7® processor (STM32H743XI) with Floating-Point Unit (FPU), operating at 480MHz, and featuring 2MB Flash memory. Enables developers to enhance productivity and efficiency, allowing for more complex algorithms and models.
|
||||
- Automotive-grade RM3100 compass. Designed for better stability and anti-interference capability.
|
||||
- Triple-redundant IMUs and dual-redundant barometers located on separate buses. If the PX4 autopilot detects a sensor failure, the system seamlessly switches to another sensor to maintain flight control reliability.
|
||||
- Independent LDO power control supplies power to each sensor group. A vibration isolation system filters high-frequency vibrations and reduces noise to ensure accurate readings, enabling better overall flight performance for the vehicle.
|
||||
- Arm® Cortex-M7® processor (STM32H743XI) with Floating-Point Unit (FPU), operating at 480MHz, and featuring 2MB Flash memory.
|
||||
Enables developers to enhance productivity and efficiency, allowing for more complex algorithms and models.
|
||||
- Automotive-grade RM3100 compass.
|
||||
Designed for better stability and anti-interference capability.
|
||||
- Triple-redundant IMUs and dual-redundant barometers located on separate buses.
|
||||
If the PX4 autopilot detects a sensor failure, the system seamlessly switches to another sensor to maintain flight control reliability.
|
||||
- Independent LDO power control supplies power to each sensor group.
|
||||
A vibration isolation system filters high-frequency vibrations and reduces noise to ensure accurate readings, enabling better overall flight performance for the vehicle.
|
||||
- Integrated Microchip Ethernet PHY for high-speed communication with onboard devices like mission computers via Ethernet.
|
||||
- Dual temperature compensation systems, located on the IMU board and FMU board respectively. Temperature is controlled by onboard heating resistors to achieve the optimal operating temperature for the IMUs.
|
||||
- Dual temperature compensation systems, located on the IMU board and FMU board respectively.
|
||||
Temperature is controlled by onboard heating resistors to achieve the optimal operating temperature for the IMUs.
|
||||
- PWM servo output voltage switchable between 3.3V or 5V.
|
||||
- Modular design for DIY carrier boards.
|
||||
|
||||
@@ -50,14 +55,14 @@ The X25-SUPER brings you ultimate performance, stability, and reliability in eve
|
||||
- Servo Rail Input: 0~9.9V
|
||||
- Rated Current:
|
||||
- Total Output Max Current: 10A
|
||||
- TELEM1 and TELEM2 Output Current limiter: 4A
|
||||
- CAN1 and CAN2 Output Current limiter: 2.4A
|
||||
- `TELEM1` and `TELEM2` Output Current limiter: 4A
|
||||
- `CAN1` and `CAN2` Output Current limiter: 2.4A
|
||||
- Other Ports Output Current limiter: 1.5A
|
||||
|
||||
### 인터페이스
|
||||
|
||||
- 16x PWM Servo Outputs
|
||||
- 1x Dedicated R/C Input for Spektrum / DSM and S.Bus
|
||||
- 1x Dedicated R/C Input(`RC IN`) for Spektrum / DSM and S.Bus
|
||||
- 1x Analog/PWM RSSI Input
|
||||
- 2x TELEM Ports (with full flow control)
|
||||
- 1x UART4 Port
|
||||
@@ -80,16 +85,15 @@ The X25-SUPER brings you ultimate performance, stability, and reliability in eve
|
||||
- DroneCAN/UAVCAN Power Input
|
||||
- 2x AD Ports
|
||||
- Analog Input (3.3V)
|
||||
- Analog Input (6.6V - not supported)
|
||||
- Analog Input (6.6V - not supported by PX4)
|
||||
- 1x Dedicated Debug Port
|
||||
- FMU Debug
|
||||
|
||||
### 기계식 부품
|
||||
|
||||
- Size
|
||||
- Flight controller
|
||||
- Dimensions:
|
||||
|
||||

|
||||

|
||||
|
||||
## Purchase Channels {#store}
|
||||
|
||||
@@ -97,7 +101,7 @@ Order from [CUAV](https://store.cuav.net/).
|
||||
|
||||
## 조립 및 설정
|
||||
|
||||
- Not provided.
|
||||
The [X25 SUPER Wiring Quick Start](../assembly/quick_start_cuav_x25_evo.md) provides instructions on how to assemble required/important peripherals including GPS, Power Module etc.
|
||||
|
||||
## 핀배열
|
||||
|
||||
@@ -113,7 +117,7 @@ Order from [CUAV](https://store.cuav.net/).
|
||||
| USART3 | /dev/ttyS2 | 디버그 콘솔 |
|
||||
| UART4 | /dev/ttyS3 | UART4 |
|
||||
| UART5 | /dev/ttyS4 | TELEM2 |
|
||||
| USART6 | /dev/ttyS5 | RC |
|
||||
| USART6 | /dev/ttyS5 | RC IN |
|
||||
| UART7 | /dev/ttyS6 | TELEM1 |
|
||||
|
||||
## RC Input
|
||||
@@ -122,7 +126,8 @@ The RC input pin is directly connected to the FMU UART6 TX.
|
||||
|
||||
## 정격 전압
|
||||
|
||||
The _X25-SUPER_ achieves triple redundancy on power supplies if three power sources are provided. The three power rails are POWERC1, POWERC2, and USB.
|
||||
The _X25-SUPER_ achieves triple redundancy on power supplies if three power sources are provided.
|
||||
The three power rails are `POWERC1`, `POWERC2`, and `USB`.
|
||||
|
||||
- **POWER C1** and **POWER C2** are DroneCAN/UAVCAN battery interfaces.
|
||||
|
||||
@@ -140,13 +145,13 @@ Digital DroneCAN/UAVCAN battery monitoring is enabled by default.
|
||||
## 펌웨어 빌드
|
||||
|
||||
:::tip
|
||||
Most users will not need to build this firmware from PX4 v1.18.
|
||||
Most users will not need to build this firmware (from PX4 v1.18).
|
||||
It is pre-built and automatically installed by _QGroundControl_ when appropriate hardware is connected.
|
||||
:::
|
||||
|
||||
To [build PX4](../dev_setup/building_px4.md) for this target, execute:
|
||||
|
||||
```
|
||||
```sh
|
||||
make cuav_x25-super_default
|
||||
```
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ Runs after the package is installed. Common tasks:
|
||||
- Board-specific setup (e.g., DSP signature generation)
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Create px4-* symlinks
|
||||
@@ -185,7 +185,7 @@ fi
|
||||
Runs before the package is removed:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Stop the service
|
||||
|
||||
@@ -70,3 +70,19 @@ The command line and GUI interfaces are shown below.
|
||||
### menuconfig Command Line Interface
|
||||
|
||||

|
||||
|
||||
## Fortified Toolchain Compatibility
|
||||
|
||||
Some toolchains define `_FORTIFY_SOURCE` by default. Those toolchains generally require some optimization, which means PX4 configurations that use `-O0` may fail.
|
||||
|
||||
PX4 keeps the default debug optimization unchanged unless you explicitly opt in. To switch `PX4_DEBUG_OPT_LEVEL` from `-O0` to `-Og`, enable:
|
||||
|
||||
- `Toolchain > Fortified toolchain support`
|
||||
|
||||
This is the Kconfig symbol:
|
||||
|
||||
```sh
|
||||
CONFIG_BOARD_SUPPORT_FORTIFIED_TOOLCHAIN=y
|
||||
```
|
||||
|
||||
You can set it either in `boardconfig`/`boardguiconfig` or directly in your board's `*.px4board` file.
|
||||
|
||||
+197
-195
@@ -96,206 +96,208 @@ They are not build into the module, and hence are neither published or subscribe
|
||||
:::details
|
||||
See messages
|
||||
|
||||
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [EscEepromRead](../msg_docs/EscEepromRead.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [RangingBeacon](../msg_docs/RangingBeacon.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [RaptorStatus](../msg_docs/RaptorStatus.md)
|
||||
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [DeviceInformation](../msg_docs/DeviceInformation.md)
|
||||
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [EscEepromRead](../msg_docs/EscEepromRead.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [EstimatorFusionControl](../msg_docs/EstimatorFusionControl.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [Vtx](../msg_docs/Vtx.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [GainCompression](../msg_docs/GainCompression.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [RaptorInput](../msg_docs/RaptorInput.md)
|
||||
|
||||
:::
|
||||
|
||||
@@ -4,7 +4,7 @@ pageClass: is-wide-page
|
||||
|
||||
# EstimatorAidSource1d (UORB message)
|
||||
|
||||
**TOPICS:** estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt estimator_aid_src_airspeed estimator_aid_src_sideslip estimator_aid_src_fake_hgt estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw
|
||||
**TOPICS:** estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt estimator_aid_src_ranging_beacon estimator_aid_src_airspeed estimator_aid_src_sideslip estimator_aid_src_fake_hgt estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw
|
||||
|
||||
## Fields
|
||||
|
||||
@@ -56,7 +56,7 @@ float32 test_ratio_filtered # signed filtered test ratio
|
||||
bool innovation_rejected # true if the observation has been rejected
|
||||
bool fused # true if the sample was successfully fused
|
||||
|
||||
# TOPICS estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt
|
||||
# TOPICS estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt estimator_aid_src_ranging_beacon
|
||||
# TOPICS estimator_aid_src_airspeed estimator_aid_src_sideslip
|
||||
# TOPICS estimator_aid_src_fake_hgt
|
||||
# TOPICS estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
pageClass: is-wide-page
|
||||
---
|
||||
|
||||
# EstimatorFusionControl (UORB message)
|
||||
|
||||
**TOPICS:** estimator_fusion_control
|
||||
|
||||
## Fields
|
||||
|
||||
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
|
||||
| ------------------------------------ | --------- | ---------------------------------------------------------------- | ---------- | --------------------------------------------------------- |
|
||||
| timestamp | `uint64` | | | time since system start (microseconds) |
|
||||
| gps_intended | `bool[2]` | | | |
|
||||
| of_intended | `bool` | | | |
|
||||
| ev_intended | `bool` | | | |
|
||||
| agp_intended | `bool[4]` | | | |
|
||||
| baro_intended | `bool` | | | |
|
||||
| rng_intended | `bool` | | | |
|
||||
| mag_intended | `bool` | | | |
|
||||
| aspd_intended | `bool` | | | |
|
||||
| rngbcn_intended | `bool` | | | |
|
||||
| gps_active | `bool[2]` | | | |
|
||||
| of_active | `bool` | | | |
|
||||
| ev_active | `bool` | | | |
|
||||
| agp_active | `bool[4]` | | | |
|
||||
| baro_active | `bool` | | | |
|
||||
| rng_active | `bool` | | | |
|
||||
| mag_active | `bool` | | | |
|
||||
| aspd_active | `bool` | | | |
|
||||
| rngbcn_active | `bool` | | | |
|
||||
|
||||
## Source Message
|
||||
|
||||
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorFusionControl.msg)
|
||||
|
||||
:::details
|
||||
Click here to see original file
|
||||
|
||||
```c
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
|
||||
# sensor intended for fusion (enabled via EKF2_SENS_EN AND CTRL param != disabled)
|
||||
bool[2] gps_intended
|
||||
bool of_intended
|
||||
bool ev_intended
|
||||
bool[4] agp_intended
|
||||
bool baro_intended
|
||||
bool rng_intended
|
||||
bool mag_intended
|
||||
bool aspd_intended
|
||||
bool rngbcn_intended
|
||||
|
||||
# whether the estimator is actively fusing data from each source
|
||||
bool[2] gps_active
|
||||
bool of_active
|
||||
bool ev_active
|
||||
bool[4] agp_active
|
||||
bool baro_active
|
||||
bool rng_active
|
||||
bool mag_active
|
||||
bool aspd_active
|
||||
bool rngbcn_active
|
||||
```
|
||||
|
||||
:::
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
pageClass: is-wide-page
|
||||
---
|
||||
|
||||
# RangingBeacon (UORB message)
|
||||
|
||||
Ranging beacon measurement data (e.g. LoRa, UWB).
|
||||
|
||||
**TOPICS:** ranging_beacon
|
||||
|
||||
## Fields
|
||||
|
||||
| 명칭 | 형식 | Unit [Frame] | Range/Enum | 설명 |
|
||||
| ------------------------------------- | --------- | ---------------------------------------------------------------- | ------------------------------------------ | ----------------------------------------------------------------------------------- |
|
||||
| timestamp | `uint64` | us | | time since system start |
|
||||
| timestamp_sample | `uint64` | us | | the timestamp of the raw data |
|
||||
| beacon_id | `uint8` | | | |
|
||||
| range | `float32` | m | | Range measurement |
|
||||
| lat | `float64` | deg | | Latitude |
|
||||
| lon | `float64` | deg | | Longitude |
|
||||
| alt | `float32` | m | | Beacon altitude (frame defined in alt_type) |
|
||||
| alt_type | `uint8` | | [ALT_TYPE](#ALT_TYPE) | Altitude frame for alt field |
|
||||
| hacc | `float32` | m | | Groundbeacon horizontal accuracy |
|
||||
| vacc | `float32` | m | | Groundbeacon vertical accuracy |
|
||||
| sequence_nr | `uint8` | | | |
|
||||
| status | `uint8` | | | |
|
||||
| carrier_freq | `uint16` | MHz | | Carrier frequency |
|
||||
| range_accuracy | `float32` | m | | Range accuracy estimate |
|
||||
|
||||
## Enums
|
||||
|
||||
### ALT_TYPE {#ALT_TYPE}
|
||||
|
||||
| 명칭 | 형식 | Value | 설명 |
|
||||
| ------------------------------------------------------------------------------------- | ------- | ----- | ------------------------------------------------------- |
|
||||
| <a id="#ALT_TYPE_WGS84"></a> ALT_TYPE_WGS84 | `uint8` | 0 | Altitude above WGS84 ellipsoid |
|
||||
| <a id="#ALT_TYPE_MSL"></a> ALT_TYPE_MSL | `uint8` | 1 | Altitude above Mean Sea Level (AMSL) |
|
||||
|
||||
## Source Message
|
||||
|
||||
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RangingBeacon.msg)
|
||||
|
||||
:::details
|
||||
Click here to see original file
|
||||
|
||||
```c
|
||||
# Ranging beacon measurement data (e.g. LoRa, UWB)
|
||||
|
||||
uint64 timestamp # [us] time since system start
|
||||
uint64 timestamp_sample # [us] the timestamp of the raw data
|
||||
uint8 beacon_id
|
||||
float32 range # [m] Range measurement
|
||||
|
||||
float64 lat # [deg] Latitude
|
||||
float64 lon # [deg] Longitude
|
||||
float32 alt # [m] Beacon altitude (frame defined in alt_type)
|
||||
uint8 alt_type # [@enum ALT_TYPE] Altitude frame for alt field
|
||||
uint8 ALT_TYPE_WGS84 = 0 # Altitude above WGS84 ellipsoid
|
||||
uint8 ALT_TYPE_MSL = 1 # Altitude above Mean Sea Level (AMSL)
|
||||
|
||||
float32 hacc # [m] Groundbeacon horizontal accuracy
|
||||
float32 vacc # [m] Groundbeacon vertical accuracy
|
||||
|
||||
uint8 sequence_nr
|
||||
uint8 status
|
||||
uint16 carrier_freq # [MHz] Carrier frequency
|
||||
float32 range_accuracy # [m] Range accuracy estimate
|
||||
|
||||
|
||||
# TOPICS ranging_beacon
|
||||
```
|
||||
|
||||
:::
|
||||
@@ -1458,6 +1458,20 @@ None
|
||||
| 6 | | | ? |
|
||||
| 7 | | | ? |
|
||||
|
||||
### VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE (43006)
|
||||
|
||||
Enable/disable estimator sensor fusion.
|
||||
|
||||
| Param | 단위 | Range/Enum | 설명 |
|
||||
| ----- | -- | ---------- | --------------------------------------------------------------------- |
|
||||
| 1 | | | Source (FUSION_SOURCE_\*) |
|
||||
| 2 | | | Sensor instance (0-based) |
|
||||
| 3 | | | Enable (1) or Disable (0) |
|
||||
| 4 | | | Estimator Instance (NaN: not used) |
|
||||
| 5 | | | 비어 있음 |
|
||||
| 6 | | | 비어 있음 |
|
||||
| 7 | | | 비어 있음 |
|
||||
|
||||
### VEHICLE_CMD_PX4_INTERNAL_START (65537)
|
||||
|
||||
Start of PX4 internal only vehicle commands (> UINT16_MAX).
|
||||
@@ -1544,6 +1558,15 @@ Change mode by specifying nav_state directly.
|
||||
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| <a id="#MESSAGE_VERSION"></a> MESSAGE_VERSION | `uint32` | 0 | |
|
||||
| <a id="#PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION"></a> PREFLIGHT_CALIBRATION_TEMPERATURE_CALIBRATION | `uint16` | 3 | Param value for VEHICLE_CMD_PREFLIGHT_CALIBRATION to start temperature calibration. |
|
||||
| <a id="#FUSION_SOURCE_GPS"></a> FUSION_SOURCE_GPS | `uint8` | 0 | GNSS (EKF2_GPS{i}\_CTRL, use instance param) |
|
||||
| <a id="#FUSION_SOURCE_OF"></a> FUSION_SOURCE_OF | `uint8` | 1 | Optical Flow (EKF2_OF_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_EV"></a> FUSION_SOURCE_EV | `uint8` | 2 | External Vision (EKF2_EV_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_AGP"></a> FUSION_SOURCE_AGP | `uint8` | 3 | Auxiliary Global Position (EKF2_AGP{i}\_CTRL, use instance param) |
|
||||
| <a id="#FUSION_SOURCE_BARO"></a> FUSION_SOURCE_BARO | `uint8` | 4 | Barometer (EKF2_BARO_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_RNG"></a> FUSION_SOURCE_RNG | `uint8` | 5 | Range Finder (EKF2_RNG_CTRL) |
|
||||
| <a id="#FUSION_SOURCE_MAG"></a> FUSION_SOURCE_MAG | `uint8` | 6 | Magnetometer (EKF2_MAG_TYPE) |
|
||||
| <a id="#FUSION_SOURCE_ASPD"></a> FUSION_SOURCE_ASPD | `uint8` | 7 | Airspeed (EKF2_ARSP_THR) |
|
||||
| <a id="#FUSION_SOURCE_RNGBCN"></a> FUSION_SOURCE_RNGBCN | `uint8` | 8 | Ranging Beacon |
|
||||
| <a id="#VEHICLE_MOUNT_MODE_RETRACT"></a> VEHICLE_MOUNT_MODE_RETRACT | `uint8` | 0 | Load and keep safe position (Roll,Pitch,Yaw) from permanent memory and stop stabilization. |
|
||||
| <a id="#VEHICLE_MOUNT_MODE_NEUTRAL"></a> VEHICLE_MOUNT_MODE_NEUTRAL | `uint8` | 1 | Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory. |
|
||||
| <a id="#VEHICLE_MOUNT_MODE_MAVLINK_TARGETING"></a> VEHICLE_MOUNT_MODE_MAVLINK_TARGETING | `uint8` | 2 | Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization. |
|
||||
@@ -1711,6 +1734,17 @@ uint16 VEHICLE_CMD_DO_WINCH = 42600 # Command to operate winch.
|
||||
|
||||
uint16 VEHICLE_CMD_EXTERNAL_POSITION_ESTIMATE = 43003 # External reset of estimator global position when dead reckoning.
|
||||
uint16 VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE = 43004
|
||||
uint16 VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE = 43006 # Enable/disable estimator sensor fusion. |Source (FUSION_SOURCE_*)|Sensor instance (0-based)|Enable (1) or Disable (0)|Estimator Instance (NaN: not used)|Empty|Empty|Empty|
|
||||
# Sensor fusion source types for VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE
|
||||
uint8 FUSION_SOURCE_GPS = 0 # GNSS (EKF2_GPS{i}_CTRL, use instance param)
|
||||
uint8 FUSION_SOURCE_OF = 1 # Optical Flow (EKF2_OF_CTRL)
|
||||
uint8 FUSION_SOURCE_EV = 2 # External Vision (EKF2_EV_CTRL)
|
||||
uint8 FUSION_SOURCE_AGP = 3 # Auxiliary Global Position (EKF2_AGP{i}_CTRL, use instance param)
|
||||
uint8 FUSION_SOURCE_BARO = 4 # Barometer (EKF2_BARO_CTRL)
|
||||
uint8 FUSION_SOURCE_RNG = 5 # Range Finder (EKF2_RNG_CTRL)
|
||||
uint8 FUSION_SOURCE_MAG = 6 # Magnetometer (EKF2_MAG_TYPE)
|
||||
uint8 FUSION_SOURCE_ASPD = 7 # Airspeed (EKF2_ARSP_THR)
|
||||
uint8 FUSION_SOURCE_RNGBCN = 8 # Ranging Beacon
|
||||
|
||||
# PX4 vehicle commands (beyond 16 bit MAVLink commands).
|
||||
uint32 VEHICLE_CMD_PX4_INTERNAL_START = 65537 # Start of PX4 internal only vehicle commands (> UINT16_MAX).
|
||||
|
||||
@@ -95,6 +95,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
|
||||
- [EstimatorBias](EstimatorBias.md)
|
||||
- [EstimatorBias3d](EstimatorBias3d.md)
|
||||
- [EstimatorEventFlags](EstimatorEventFlags.md)
|
||||
- [EstimatorFusionControl](EstimatorFusionControl.md)
|
||||
- [EstimatorGpsStatus](EstimatorGpsStatus.md)
|
||||
- [EstimatorInnovations](EstimatorInnovations.md)
|
||||
- [EstimatorSelectorStatus](EstimatorSelectorStatus.md)
|
||||
@@ -192,6 +193,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
|
||||
- [QshellReq](QshellReq.md)
|
||||
- [QshellRetval](QshellRetval.md)
|
||||
- [RadioStatus](RadioStatus.md)
|
||||
- [RangingBeacon](RangingBeacon.md) — Ranging beacon measurement data (e.g. LoRa, UWB).
|
||||
- [RateCtrlStatus](RateCtrlStatus.md)
|
||||
- [RcChannels](RcChannels.md)
|
||||
- [RcParameterMap](RcParameterMap.md)
|
||||
|
||||
@@ -23,6 +23,7 @@ For fixed-wing flight it is the airspeed that guarantees lift — not ground spe
|
||||
- [Holybro High Precision DroneCAN Airspeed Sensor - DLVR](https://holybro.com/collections/sensors/products/high-precision-dronecan-airspeed-sensor-dlvr)
|
||||
- [RaccoonLab Cyphal/CAN and DroneCAN Airspeed Sensor - MS4525DO](https://raccoonlab.co/tproduct/360882105-652259850171-cyphal-and-dronecan-airspeed-v2)
|
||||
- [Avionics Anonymous Air Data Computer with OAT probe](https://www.tindie.com/products/avionicsanonymous/uavcan-air-data-computer-airspeed-sensor/)
|
||||
- [UAV-DEV GmbH DroneCAN Airspeed and Barometer Sensor - AUAV](https://wiki.uav-dev.com/en/product/airspeed/auav)
|
||||
- Based on [Venturi effect](https://en.wikipedia.org/wiki/Venturi_effect)
|
||||
- [TFSLOT](airspeed_tfslot.md) Venturi effect airspeed sensor.
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -172,6 +172,7 @@
|
||||
- [CUAV V5 nano (FMUv5)](flight_controller/cuav_v5_nano.md)
|
||||
- [Швидке підключення CUAV V5 nano](assembly/quick_start_cuav_v5_nano.md)
|
||||
- [CUAV X25 EVO](flight_controller/cuav_x25-evo.md)
|
||||
- [CUAV X25 EVO Wiring Quick Start](assembly/quick_start_cuav_x25_evo.md)
|
||||
- [CUAV X25 SUPER](flight_controller/cuav_x25-super.md)
|
||||
- [CubePilot Cube Orange+ (CubePilot)](flight_controller/cubepilot_cube_orangeplus.md)
|
||||
- [CubePilot Cube Orange (CubePilot)](flight_controller/cubepilot_cube_orange.md)
|
||||
|
||||
@@ -27,6 +27,8 @@ PX4 supports Ethernet connectivity on [Pixhawk 5X-standard](https://github.com/p
|
||||
|
||||
- [ARK Electronics ARKV6X](../flight_controller/ark_v6x.md)
|
||||
- [CUAV Pixhawk V6X](../flight_controller/cuav_pixhawk_v6x.md)
|
||||
- [CUAV X25 EVO](../flight_controller/cuav_x25-evo.md)
|
||||
- [CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
- [Holybro Pixhawk 5X](../flight_controller/pixhawk5x.md)
|
||||
- [Holybro Pixhawk 6X](../flight_controller/pixhawk6x.md)
|
||||
- [RaccoonLab FMUv6X Autopilot](../flight_controller/raccoonlab_fmu6x.md)
|
||||
|
||||
@@ -410,6 +410,7 @@ They recommend sensors, power systems, and other components from the same manufa
|
||||
- [CUAV Pixhawk V6X Wiring QuickStart](../assembly/quick_start_cuav_pixhawk_v6x.md)
|
||||
- [CUAV V5+ Wiring Quickstart](../assembly/quick_start_cuav_v5_plus.md)
|
||||
- [CUAV V5 nano Wiring Quickstart](../assembly/quick_start_cuav_v5_nano.md)
|
||||
- [CUAV X25 EVO Wiring Quickstart](../assembly/quick_start_cuav_x25_evo.md)
|
||||
- [Holybro Pixhawk 6C Wiring Quickstart](../assembly/quick_start_pixhawk6c.md)
|
||||
- [Holybro Pixhawk 6X Wiring Quickstart](../assembly/quick_start_pixhawk6x.md)
|
||||
- [Holybro Pixhawk 5X Wiring Quickstart](../assembly/quick_start_pixhawk5x.md)
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
# CUAV X25 EVO Wiring Quick Start
|
||||
|
||||
:::warning
|
||||
PX4 не розробляє цей (або будь-який інший) автопілот.
|
||||
Contact the [manufacturer](https://store.cuav.net/) for hardware support or compliance issues.
|
||||
:::
|
||||
|
||||
This quick start guide shows how to power the [X25 EVO](../flight_controller/cuav_x25-evo.md) flight controller and connect its most important peripherals.
|
||||
|
||||
:::info
|
||||
The following flight controller models are applicable to this quick start guide.
|
||||
[CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
:::
|
||||
|
||||
## Огляд схеми підключення
|
||||
|
||||
На зображенні нижче показано, як під'єднати найважливіші датчики та периферійні пристрої (за винятком виходів мотора та сервоприводів).
|
||||
Ми розглянемо кожну з них докладно в наступних розділах.
|
||||
|
||||

|
||||
|
||||
| Інтерфейс | **Function** |
|
||||
| :----------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| POWER C1/C2 | Connect the PMU2 Lite to this port; this port is used for connecting the DroneCAN power module |
|
||||
| M1 ~ M16 | PWM signal output ports, usable for controlling motors or servos; support 3.3V/5V PWM configuration |
|
||||
| RC IN | Connect remote controller receivers with one-way protocols (e.g., SBUS/DSM/PPM). Note: ELRS/CRSF receivers should be connected to any serial port, not RC IN |
|
||||
| RSSI | For connecting signal strength feedback modules |
|
||||
| GPS&SAFETY | Connect Neo-series GPS or C-RTK-series RTK; this port includes interfaces for GPS, safety switch, and buzzer |
|
||||
| GPS2 | Usable for connecting additional GPS/RTK modules |
|
||||
| DEBUG (DSU) | For FMU chip debugging and reading debug device information; with ArduPilot firmware, it can be configured for other serial port functions |
|
||||
| ADC3V3 | For analog level signal detection; the maximum detectable level signal is 3.3V |
|
||||
| ADC6V6 | For analog level signal detection; the maximum detectable level signal is 6.6V (PX4 is not supported.) |
|
||||
| TF CARD | Insert an SD card here to enable log storage functionality |
|
||||
| ETH | Ethernet port, usable for connecting Ethernet devices such as companion computers |
|
||||
| I2C1/2/3 | Connect external I2C devices (e.g., external compasses) for communication between the controller and I2C devices |
|
||||
| TELEM1/TELEM2 | Connect telemetry modules (for data transmission) to enable MAVLINK data interaction |
|
||||
| CAN1/2 | For communication between the controller and DroneCAN devices (e.g., connecting NEO4 SE GPS) |
|
||||
| TYPE C | USB port of the controller, usable for connecting to the ground station, flashing firmware, and other operations |
|
||||
| SPI6 | SPI port for external expansion; generally not used |
|
||||
|
||||
## Передній бампер
|
||||
|
||||
:::info
|
||||
Якщо контролер не може бути змонтований у рекомендованому/стандартному положенні (наприклад, через обмеження місця), вам потрібно буде налаштувати програмне забезпечення автопілота з орієнтацією, яку ви фактично використовували: [Орієнтація контролера польоту](../config/flight_controller_orientation.md).
|
||||
:::
|
||||
|
||||

|
||||
|
||||
## GPS + компас + зумер + захисний вимикач + світлодіод
|
||||
|
||||
We recommend using a CAN GPS/RTK (such as [Neo 4SE](https://store.cuav.net/shop/cuav-neo-4-se-gps-module/)); simply connect it to the **CAN 1** or **CAN 2** port.
|
||||
|
||||
You can also use a standard GPS/RTK module(such as [NEO3 GPS](https://store.cuav.net/shop/neo-3/) (10-pin connector)) by connecting it to the **GPS&SAFETY** port.
|
||||
Most commonly used GPS modules today integrate GPS, compass, safety switch, buzzer, and LED status light.
|
||||
|
||||
Якщо вам потрібно використовувати допоміжний GPS, підключіться до порту **GPS2**.
|
||||
|
||||
The GPS/compass should be [mounted on the frame](../assembly/mount_gps_compass.md) as far away from other electronics as possible (separating the compass from other electronics will reduce interference), with the direction markings towards the front of the vehicle (the arrow on the NEO GPS should match the arrow on the flight controller).
|
||||
|
||||

|
||||
|
||||
:::info
|
||||
Вбудований безпечний вимикач в GPS-модулі увімкнений _за замовчуванням_ (коли включений, PX4 не дозволить вам готувати до польоту).
|
||||
To disable the safety, press and hold the safety switch for 1 second.
|
||||
Ви можете натиснути безпечний вимикач знову, щоб увімкнути безпеку та відключити транспортний засіб (це може бути корисно, якщо, з якихось причин, ви не можете вимкнути транспортний засіб за допомогою вашого пульта дистанційного керування або наземної станції).
|
||||
:::
|
||||
|
||||
## Радіоуправління
|
||||
|
||||
Для того щоб керувати транспортним засобом _вручну_, потрібна система радіоуправління (RC) (PX4 не потребує системи радіоуправління для автономних режимів польоту).
|
||||
|
||||
Вам потрібно [вибрати сумісний передавач/приймач](../getting_started/rc_transmitter_receiver.md) і _зв'язати_ їх таким чином, щоб вони взаємодіяли (ознайомтеся з інструкціями, що додаються до вашого конкретного передавача/приймача).
|
||||
|
||||
Connection methods vary by remote controller and receiver type:
|
||||
|
||||
### Android Remote Controllers
|
||||
|
||||
Take the H16 as an example:
|
||||
|
||||

|
||||
|
||||
Connect **TELEM1/TELEM2** to the UART0 port of the H16 remote controller, and link the H16’s SBUS pin to the **RC IN** port.
|
||||
|
||||
### SBUS/DSM/PPM Protocol Receivers
|
||||
|
||||

|
||||
|
||||
Use wires to connect the receiver to the **RC IN** port at the rear of the controller.
|
||||
|
||||
### ELRS/CRSF Receivers
|
||||
|
||||

|
||||
|
||||
Connect the [ELRS/CRSF](../telemetry/crsf_telemetry.md) receiver to any UART serial port of the X25 EVO (e.g., **TELEM2**).
|
||||
|
||||
## Power
|
||||
|
||||
The X25 EVO comes standard with the PMU2 Lite power module, which supports 20–70V input and can measure a maximum current of 220A.
|
||||
It can be directly connected to the **Power C1/C2** port of the X25 EVO and is plug-and-play (no configuration required).
|
||||
|
||||

|
||||
|
||||
## Телеметрійна (радіо) система
|
||||
|
||||
[Telemetry system](../telemetry/index.md) allows you to communicate with the unmanned system via ground station software, enabling you to monitor and control the UAV’s status during flight. Connect the on-board unit of the telemetry system to the **TELEM1** or **TELEM2** port.
|
||||
|
||||
Ви також можете придбати телеметричні радіо з [магазину CUAV](https://store.cuav.net/uav-telemetry-module/).
|
||||
|
||||

|
||||
|
||||
## SD-карта
|
||||
|
||||
Картки SD настійно рекомендується, оскільки вони потрібні для [запису та аналізу даних польоту](../getting_started/flight_reporting.md), для виконання завдань та використання апаратного засобу UAVCAN bus.
|
||||
An SD card is already installed on X25 EVO when it leaves the factory.
|
||||
|
||||
:::tip
|
||||
Для отримання додаткової інформації див. [Основні концепції > SD-карти (знімна пам'ять)](../getting_started/px4_basic_concepts.md#sd-cards-removable-memory).
|
||||
:::
|
||||
|
||||
## Мотори/Сервоприводи
|
||||
|
||||
Motors/servos are connected to the **M1~M16** ports in the order specified for your vehicle in the [Airframe Reference](../airframes/airframe_reference.md).
|
||||
|
||||

|
||||
|
||||
## Джерело живлення для сервоприводу
|
||||
|
||||
The X25 EVO does not supply power to servos. If you need to power servos:
|
||||
|
||||
1. Connect a BEC to the positive and negative terminals of any column among **M1 ~ M16** (the positive and negative terminals of **M1 ~ M16** are interconnected).
|
||||
2. Then connect the servos to the same column.
|
||||
|
||||

|
||||
|
||||
:::info
|
||||
Напруга шини живлення повинна бути відповідною для використаного сервоприводу!
|
||||
:::
|
||||
|
||||
## Інші периферійні пристрої
|
||||
|
||||
Підключення та конфігурація додаткових/менш поширених компонентів описано в темах для окремих [периферійних пристроїв](../peripherals/index.md).
|
||||
|
||||
## Налаштування
|
||||
|
||||
Загальну інформацію про конфігурацію описано в: [Конфігурація автопілота](../config/index.md).
|
||||
|
||||
QuadPlane-specific configuration is covered here: [QuadPlane VTOL Configuration](../config_vtol/vtol_quad_configuration.md)
|
||||
|
||||
## Подальша інформація
|
||||
|
||||
- [Документація CUAV](https://doc.cuav.net/) (CUAV)
|
||||
- [X25 EVO](../flight_controller/cuav_x25-evo.md) (PX4 Doc Overview page)
|
||||
- [X25 SUPER](../flight_controller/cuav_x25-super.md) (PX4 Doc Overview page)
|
||||
@@ -176,7 +176,7 @@ Select the **Advanced** checkbox in the top right corner of the view to display
|
||||
|
||||
#### Конфігурація масштабу закрилка та спойлера
|
||||
|
||||
"Керування флапами" та "керування спойлерами" - це аеродинамічні конфігурації, які можуть керуватися вручну пілотом (наприклад, за допомогою RC) або встановлюватися автоматично контролером.
|
||||
"Flap-control" and "Spoiler-control" are aerodynamic configurations that can either be commanded manually by the pilot (using RC or a Joystick, say) (see [Flaps and Spoiler Control with Manual Control](#flaps-and-spoiler-control-with-manual-control)), or are set automatically by the controller.
|
||||
Наприклад, пілот або система посадки можуть ввести "керування спойлерами", щоб зменшити швидкість повітря перед посадкою.
|
||||
|
||||
The configurations are an _abstract_ way for the controller to tell the allocator how much it should adjust the aerodynamic properties of the wings relative to the "full flaps" or "full spoiler" configuration (between `[0,1]`, where "1" indicates the full range).
|
||||
@@ -199,6 +199,20 @@ The `flap scale` and `spoiler scale` settings in the actuator UI inform the allo
|
||||
Це відхилення елеватора, яке додається для компенсації моментів по тангажу, створених дією поверхні флапів та спойлерів.
|
||||
У цьому випадку елеватор буде відхилений на 0,3 вгору при повному розгортанні флапів для компенсації моменту, спрямованого вниз, який викликано дією флапів.
|
||||
|
||||
#### Flaps and Spoiler Control with Manual Control
|
||||
|
||||
The preferred method to manually actuate spoilers and flaps is to map a manual control switch to an `AUX` output (see [Generic Actuator Control with RC](#generic-actuator-control-with-rc)), and then map that AUX output to the flap or spoiler function using [FW_FLAPS_MAN](../advanced_config/parameter_reference.md#FW_FLAPS_MAN) or [FW_SPOILERS_MAN](../advanced_config/parameter_reference.md#FW_SPOILERS_MAN).
|
||||
The source for the manual control can be RC or MAVLink.
|
||||
|
||||
:::warning
|
||||
The following method is not recommended, and will be removed in a future release.
|
||||
If using it you should migrate to using the AUX-based method.
|
||||
|
||||
It is also possible to define a flaps channel directly on the RC using [RC_MAP_FLAPS](../advanced_config/parameter_reference.md#RC_MAP_FLAPS).
|
||||
This channel can also be used to control the spoilers by setting [FW_SPOILERS_MAN](../advanced_config/parameter_reference.md#FW_SPOILERS_MAN) to `Flaps channel`.
|
||||
This method is not possible when the source for the manual control is MAVLink.
|
||||
:::
|
||||
|
||||
#### Масштабування крену, кута та повороту приводу
|
||||
|
||||
:::info
|
||||
|
||||
+15
-14
@@ -312,23 +312,24 @@ The failure detector is active in all vehicle types and modes, except for those
|
||||
|
||||
### Motor Failure Trigger
|
||||
|
||||
The failure detector can be configured to detect a motor failure while armed (and trigger an associated action) in the following conditions:
|
||||
The failure detector can be configured to detect a motor failure while armed (and trigger an associated action) if the ESC current falls outside expected bounds for more than [MOTFAIL_TIME](#MOTFAIL_TIME) seconds.
|
||||
Motor failures are non-latching: if the failure condition clears, the failure is cleared.
|
||||
|
||||
- A 300 ms timeout occurs in telemetry from an ESC that was previously available.
|
||||
- The input current in the telemetry of an ESC which was previously positive gets too low for more than [`FD_ACT_MOT_TOUT`](FD_ACT_MOT_TOUT) ms.
|
||||
The "too low" condition is defined by:
|
||||
The undercurrent and overcurrent conditions are defined by:
|
||||
|
||||
```text
|
||||
{esc current} < {parameter FD_ACT_MOT_C2T} * {motor command between 0 and 1}
|
||||
```
|
||||
```text
|
||||
undercurrent: {esc current} < {MOTFAIL_C2T} * {motor command [0,1]} - {MOTFAIL_LOW_OFF}
|
||||
overcurrent: {esc current} > {MOTFAIL_C2T} * {motor command [0,1]} + {MOTFAIL_HIGH_OFF}
|
||||
```
|
||||
|
||||
| Параметр | Опис |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="FD_ACT_EN"></a>[FD_ACT_EN](../advanced_config/parameter_reference.md#FD_ACT_EN) | Enable/disable the motor failure trigger completely. |
|
||||
| <a id="FD_ACT_MOT_THR"></a>[FD_ACT_MOT_THR](../advanced_config/parameter_reference.md#FD_ACT_MOT_THR) | Minimum normalized [0,1] motor command below which motor under current is ignored. |
|
||||
| <a id="FD_ACT_MOT_C2T"></a>[FD_ACT_MOT_C2T](../advanced_config/parameter_reference.md#FD_ACT_MOT_C2T) | Scale between normalized [0,1] motor command and expected minimally reported current when the rotor is healthy. |
|
||||
| <a id="FD_ACT_MOT_TOUT"></a>[FD_ACT_MOT_TOUT](../advanced_config/parameter_reference.md#FD_ACT_MOT_TOUT) | Time in milliseconds for which the under current detection condition needs to stay true. |
|
||||
| <a id="CA_FAILURE_MODE"></a>[CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE) | Configure to not only warn about a motor failure but remove the first motor that detects a failure from the allocation effectiveness which turns off the motor and tries to operate the vehicle without it until disarming the next time. |
|
||||
| Параметр | Опис |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="FD_ACT_EN"></a>[FD_ACT_EN](../advanced_config/parameter_reference.md#FD_ACT_EN) | Enable/disable the motor failure trigger completely. |
|
||||
| <a id="MOTFAIL_C2T"></a>[MOTFAIL_C2T](../advanced_config/parameter_reference.md#MOTFAIL_C2T) | Slope between normalized motor command [0–1] and expected steady-state current (FD_ACT_MOT_C2T at 100%) (A/%). |
|
||||
| <a id="MOTFAIL_LOW_OFF"></a>[MOTFAIL_LOW_OFF](../advanced_config/parameter_reference.md#MOTFAIL_LOW_OFF) | Undercurrent detection threshold offset (A). Subtracted from the expected current to form the lower bound. |
|
||||
| <a id="MOTFAIL_HIGH_OFF"></a>[MOTFAIL_HIGH_OFF](../advanced_config/parameter_reference.md#MOTFAIL_HIGH_OFF) | Overcurrent detection threshold offset (A). Added to the expected current to form the upper bound. |
|
||||
| <a id="MOTFAIL_TIME"></a>[MOTFAIL_TIME](../advanced_config/parameter_reference.md#MOTFAIL_TIME) | Hysteresis time (s) for which the current threshold must remain exceeded before a motor failure is triggered. |
|
||||
| <a id="CA_FAILURE_MODE"></a>[CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE) | Configure to not only warn about a motor failure but remove the first motor that detects a failure from the allocation effectiveness which turns off the motor and tries to operate the vehicle without it until disarming the next time. |
|
||||
|
||||
### Зовнішня автоматична система тригерування (ATS)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ This category includes boards that are not fully compliant with the pixhawk stan
|
||||
- [CUAV V5+](../flight_controller/cuav_v5_plus.md) (FMUv5)
|
||||
- [CUAV V5 nano](../flight_controller/cuav_v5_nano.md) (FMUv5)
|
||||
- [CUAV X25 EVO](../flight_controller/cuav_x25-evo.md)
|
||||
[CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
- [CUAV X25 SUPER](../flight_controller/cuav_x25-super.md)
|
||||
- [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)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user