Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c31bbfdc5 | |||
| d4b18f4a16 | |||
| 406f0bb470 | |||
| 6bca750ab3 | |||
| 050425af25 | |||
| 688e6aafae | |||
| 2d23fda77d | |||
| 4e436cc64e | |||
| 771d09b968 | |||
| b78b063fd8 | |||
| f13f9b2240 | |||
| fee575f944 | |||
| 87db286a88 | |||
| b851c3728c | |||
| 93408cc4e2 | |||
| 881d58b79f | |||
| 76a772354c | |||
| 3eaba5f9eb | |||
| 2d30a010f4 | |||
| fed1b338c0 | |||
| 6b8bf80423 | |||
| 4e17c5496c | |||
| 04512ee91f | |||
| 3c39095271 | |||
| 2fece23c64 | |||
| 918848095a | |||
| f0fdf0b53b | |||
| 6d12b04bb0 | |||
| f7bb5d13f7 | |||
| 5842c991ec | |||
| c3c863ad95 | |||
| e7250bc8d5 | |||
| a40377e544 | |||
| 6a105bcbdb | |||
| c59101e8ed | |||
| ee30b70a3c | |||
| 6ec6f1b297 | |||
| ef0f0884f0 | |||
| ea93019b62 | |||
| 9cf3e83197 | |||
| 9e6e2df15c | |||
| 1a4a44a223 |
@@ -3,6 +3,3 @@ contact_links:
|
||||
- name: Support Question
|
||||
url: https://docs.px4.io/main/en/contribute/support.html#forums-and-chat
|
||||
about: For questions about using PX4 or related components, please use the discuss forum and discord server
|
||||
- name: Documentation Issue
|
||||
url: https://github.com/PX4/PX4-user_guide/issues
|
||||
about: If you found an issue in documentation, please submit it directly to the docs repository issues
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
name: 📑 Documentation Bug report
|
||||
description: Create a report to help us improve the docs
|
||||
title: "[Docs] [Bug] "
|
||||
labels: ["Documentation 📑"]
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of the bug.
|
||||
placeholder: |
|
||||
# A PR to fix the bug is often better than adding this issue!
|
||||
#
|
||||
# If you can't create a PR please provide the following:
|
||||
# - What page and/or section has the problem
|
||||
# - What is the problem - missing information, incorrect information?
|
||||
# - Suggested fixes, links to corresponding code PRs
|
||||
# - Any additional context
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Page URL
|
||||
description: The URL of the problem page.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshot / Media
|
||||
description: Add screenshot / media if you have them
|
||||
validations:
|
||||
required: false
|
||||
@@ -16,11 +16,19 @@ on:
|
||||
- 'release/**'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
- 'Tools/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
- 'Tools/**'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
group_targets:
|
||||
@@ -30,7 +38,6 @@ jobs:
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
timestamp: ${{ steps.set-timestamp.outputs.timestamp }}
|
||||
tagname: ${{ steps.set-tag.outputs.tagname }}
|
||||
branchname: ${{ steps.set-branch.outputs.branchname }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -61,9 +68,9 @@ jobs:
|
||||
echo "$(./Tools/ci/generate_board_targets_json.py --group --verbose)"
|
||||
|
||||
setup:
|
||||
name: Build Group [${{ matrix.group }}]
|
||||
name: Build Group [${{ matrix.group }}][${{ matrix.arch == 'nuttx' && 'x86' || 'arm64' }}]
|
||||
# runs-on: ubuntu-latest
|
||||
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
runs-on: [runs-on,"runner=8cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false]
|
||||
needs: group_targets
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.group_targets.outputs.matrix) }}
|
||||
@@ -98,7 +105,7 @@ jobs:
|
||||
|
||||
- name: Building [${{ matrix.group }}]
|
||||
run: |
|
||||
./Tools/ci/build_all_runner.sh ${{matrix.targets}}
|
||||
./Tools/ci/build_all_runner.sh ${{matrix.targets}} ${{matrix.arch}}
|
||||
|
||||
- name: Arrange Build Artifacts
|
||||
run: |
|
||||
@@ -116,7 +123,7 @@ jobs:
|
||||
artifacts:
|
||||
name: Upload Artifacts to S3
|
||||
# runs-on: ubuntu-latest
|
||||
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
needs: [setup, group_targets]
|
||||
if: contains(fromJSON('["main", "stable", "beta"]'), needs.group_targets.outputs.branchname)
|
||||
steps:
|
||||
@@ -144,10 +151,12 @@ jobs:
|
||||
|
||||
release:
|
||||
name: Create Release and Upload Artifacts
|
||||
permissions:
|
||||
contents: write
|
||||
# runs-on: ubuntu-latest
|
||||
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
needs: [setup, group_targets]
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,14 +9,14 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-14
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
config: [
|
||||
@@ -32,8 +32,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: setup
|
||||
run: |
|
||||
./Tools/setup/macos.sh
|
||||
run: ./Tools/setup/macos.sh; ./Tools/setup/macos.sh
|
||||
|
||||
- name: Prepare ccache timestamp
|
||||
id: ccache_cache_timestamp
|
||||
@@ -41,14 +40,12 @@ jobs:
|
||||
run: |
|
||||
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
|
||||
message("::set-output name=timestamp::${current_date}")
|
||||
|
||||
- name: ccache cache files
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: macos_${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
|
||||
restore-keys: macos_${{matrix.config}}-ccache-
|
||||
|
||||
- name: setup ccache
|
||||
run: |
|
||||
mkdir -p ~/.ccache
|
||||
|
||||
@@ -12,11 +12,14 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
env:
|
||||
RUNS_IN_DOCKER: true
|
||||
|
||||
jobs:
|
||||
build_and_test:
|
||||
name: Build and Test
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
name: Container build
|
||||
|
||||
on:
|
||||
@@ -10,35 +9,139 @@ on:
|
||||
- 'release/**'
|
||||
tags:
|
||||
- 'v*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
- '*'
|
||||
paths:
|
||||
- '.github/workflows/dev_container.yml'
|
||||
- 'Tools/setup/ubuntu.sh'
|
||||
- 'Tools/setup/requirements.txt'
|
||||
- 'Tools/setup/Dockerfile'
|
||||
- 'Tools/setup/docker-entrypoint.sh'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
px4_version:
|
||||
description: 'PX4 version (e.g. v1.16.0)'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build and Push Container
|
||||
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
|
||||
setup:
|
||||
name: Set Tags and Variables
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
||||
outputs:
|
||||
px4_version: ${{ steps.px4_version.outputs.px4_version }}
|
||||
meta_tags: ${{ steps.meta.outputs.tags }}
|
||||
meta_labels: ${{ steps.meta.outputs.labels }}
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set PX4 Tag
|
||||
id: px4-tag
|
||||
# If manual dispatch, take the user‐provided input
|
||||
- name: Set PX4 Tag Version
|
||||
id: px4_version
|
||||
run: |
|
||||
echo "tag=$(git describe --tags --match 'v[0-9]*')" >> $GITHUB_OUTPUT
|
||||
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
||||
echo "px4_version=${{ github.event.inputs.px4_version }}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "px4_version=$(git describe --tags --match 'v[0-9]*')" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/PX4/px4-dev
|
||||
px4io/px4-dev
|
||||
tags: |
|
||||
type=raw,enable=true,value=${{ steps.px4_version.outputs.px4_version }},priority=1000
|
||||
|
||||
build:
|
||||
name: Build Container (${{ matrix.arch }})
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
needs: setup
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- platform: linux/arm64
|
||||
arch: arm64
|
||||
runner: arm64
|
||||
- platform: linux/amd64
|
||||
arch: amd64
|
||||
runner: x64
|
||||
runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
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
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: docker-container
|
||||
platforms: ${{ matrix.platform }}
|
||||
|
||||
- name: Build and Load Container Image
|
||||
uses: docker/build-push-action@v6
|
||||
id: docker
|
||||
with:
|
||||
context: Tools/setup
|
||||
tags: |
|
||||
ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-${{ matrix.arch }}
|
||||
px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-${{ matrix.arch }}
|
||||
labels: ${{ needs.setup.outputs.meta_labels }}
|
||||
platforms: ${{ matrix.platform }}
|
||||
load: false
|
||||
push: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
provenance: false
|
||||
cache-from: type=gha,version=1
|
||||
cache-to: type=gha,version=1,mode=max
|
||||
|
||||
deploy:
|
||||
name: Deploy To Registry
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
runs-on: [runs-on,"runner=8cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
||||
needs: [build, setup]
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-tags: true
|
||||
submodules: false
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
if: github.event_name != 'pull_request'
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
@@ -50,58 +153,31 @@ jobs:
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/PX4/px4-dev
|
||||
${{ (github.event_name != 'pull_request') && 'px4io/px4-dev' || '' }}
|
||||
tags: |
|
||||
type=raw,enable=true,value=${{ steps.px4-tag.outputs.tag }},priority=1000
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build and load container image
|
||||
uses: docker/build-push-action@v6
|
||||
id: docker
|
||||
with:
|
||||
context: Tools/setup
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
platforms: |
|
||||
linux/amd64
|
||||
load: true
|
||||
push: false
|
||||
cache-from: type=s3,blobs_prefix=cache/${{ github.repository }}/,manifests_prefix=cache/${{ github.repository }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
|
||||
cache-to: type=s3,blobs_prefix=cache/${{ github.repository }}/,manifests_prefix=cache/${{ github.repository }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
|
||||
|
||||
- name: Get Tag Name
|
||||
id: tag_name
|
||||
- name: Verify Images Exist Before Creating Manifest
|
||||
run: |
|
||||
echo "::set-output name=tag_name::$(echo '${{ fromJSON(steps.docker.outputs.metadata)['image.name'] }}' | sed 's/,.*$//')"
|
||||
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!"
|
||||
|
||||
- name: make quick_check
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ${{ steps.tag_name.outputs.tag_name }}
|
||||
options: -v ${{ github.workspace }}:/workspace
|
||||
run: |
|
||||
cd /workspace
|
||||
git config --global --add safe.directory /workspace
|
||||
make px4_sitl_default
|
||||
make px4_fmu-v6x_default
|
||||
- name: Create and Push Multi-Arch Manifest for Docker Hub
|
||||
run: |
|
||||
docker manifest create px4io/px4-dev:${{ needs.setup.outputs.px4_version }} \
|
||||
--amend px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64 \
|
||||
--amend px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64
|
||||
|
||||
- name: Push container image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: Tools/setup
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
platforms: |
|
||||
linux/amd64
|
||||
provenance: mode=max
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
cache-from: type=s3,blobs_prefix=cache/${{ github.repository }}/,manifests_prefix=cache/${{ github.repository }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
|
||||
cache-to: type=s3,blobs_prefix=cache/${{ github.repository }}/,manifests_prefix=cache/${{ github.repository }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
|
||||
docker manifest annotate px4io/px4-dev:${{ needs.setup.outputs.px4_version }} px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64 --arch arm64
|
||||
docker manifest annotate px4io/px4-dev:${{ needs.setup.outputs.px4_version }} px4io/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64 --arch amd64
|
||||
|
||||
docker manifest push px4io/px4-dev:${{ needs.setup.outputs.px4_version }}
|
||||
|
||||
- name: Create and Push Multi-Arch Manifest for GHCR
|
||||
run: |
|
||||
docker manifest create ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }} \
|
||||
--amend ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64 \
|
||||
--amend ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64
|
||||
|
||||
docker manifest annotate ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }} ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-arm64 --arch arm64
|
||||
docker manifest annotate ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }} ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}-amd64 --arch amd64
|
||||
|
||||
docker manifest push ghcr.io/px4/px4-dev:${{ needs.setup.outputs.px4_version }}
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
name: Docs - Deploy PX4 User Guide
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
- 'release/**'
|
||||
paths:
|
||||
- 'docs/en/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '*'
|
||||
paths:
|
||||
- 'docs/en/**'
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -68,7 +80,7 @@ jobs:
|
||||
- name: Deploy
|
||||
run: |
|
||||
git clone --single-branch --branch main --depth 1 https://${{ secrets.PX4BUILTBOT_PERSONAL_ACCESS_TOKEN }}@github.com/PX4/docs.px4.io.git
|
||||
# make it an orphan branch
|
||||
# make it an orphan branch
|
||||
cd docs.px4.io
|
||||
CURRENT_DATETIME=$(date +'%Y%m%d_%H_%M')
|
||||
git checkout --orphan "${CURRENT_DATETIME}_main"
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
name: Docs - Deploy PX4 User Guide to AWS
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
- "release/**"
|
||||
paths:
|
||||
- "docs/en/**"
|
||||
- "docs/zh/**"
|
||||
- "docs/uk/**"
|
||||
- "docs/ko/**"
|
||||
pull_request:
|
||||
paths:
|
||||
- "docs/en/**"
|
||||
- "docs/zh/**"
|
||||
- "docs/uk/**"
|
||||
- "docs/ko/**"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
id-token: write # for AWS OIDC
|
||||
|
||||
concurrency:
|
||||
group: docs-deploy
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
||||
outputs:
|
||||
branchname: ${{ steps.set-branch.outputs.branchname }}
|
||||
releaseversion: ${{ steps.set-version.outputs.releaseversion }}
|
||||
steps:
|
||||
- uses: runs-on/action@v1
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- id: set-branch
|
||||
run: echo "branchname=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
|
||||
|
||||
- id: set-version
|
||||
run: |
|
||||
branch="${{ steps.set-branch.outputs.branchname }}"
|
||||
if [[ "$branch" == "main" ]]; then
|
||||
version="main"
|
||||
else
|
||||
version="v${branch#release/}"
|
||||
fi
|
||||
echo "releaseversion=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: ./docs/yarn.lock
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install --frozen-lockfile --cwd ./docs
|
||||
|
||||
- name: Build with VitePress
|
||||
working-directory: ./docs
|
||||
env:
|
||||
BRANCH_NAME: ${{ steps.set-version.outputs.releaseversion }}
|
||||
run: |
|
||||
npm run docs:build_ubuntu
|
||||
touch .vitepress/dist/.nojekyll
|
||||
npm run docs:sitemap
|
||||
|
||||
- name: Upload artifact
|
||||
if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.merged) || github.event_name == 'workflow_dispatch' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: px4_docs_build
|
||||
path: docs/.vitepress/dist/
|
||||
retention-days: 1
|
||||
|
||||
deploy:
|
||||
if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.merged) || github.event_name == 'workflow_dispatch' }}
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Download Artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: px4_docs_build
|
||||
path: ~/_book
|
||||
|
||||
- name: Configure AWS from OIDC
|
||||
uses: aws-actions/configure-aws-credentials@v4
|
||||
with:
|
||||
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
|
||||
aws-region: us-west-2
|
||||
|
||||
- name: Sanity check AWS credentials
|
||||
run: aws sts get-caller-identity
|
||||
|
||||
- name: Upload HTML with short cache
|
||||
run: |
|
||||
aws s3 sync ~/_book/ s3://px4-docs/${{ needs.build.outputs.releaseversion }}/ \
|
||||
--delete \
|
||||
--exclude "*" --include "*.html" \
|
||||
--cache-control "public, max-age=60"
|
||||
|
||||
- name: Upload assets with long cache
|
||||
run: |
|
||||
aws s3 sync ~/_book/ s3://px4-docs/${{ needs.build.outputs.releaseversion }}/ \
|
||||
--delete \
|
||||
--exclude "*.html" \
|
||||
--cache-control "public, max-age=86400, immutable"
|
||||
@@ -3,7 +3,7 @@ name: EKF Change Indicator
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
@@ -43,7 +43,6 @@ jobs:
|
||||
run: |
|
||||
git clone https://github.com/emscripten-core/emsdk.git _emscripten_sdk
|
||||
cd _emscripten_sdk
|
||||
git checkout 4.0.15
|
||||
./emsdk install latest
|
||||
./emsdk activate latest
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -11,11 +11,13 @@ on:
|
||||
- 'main'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -31,12 +33,6 @@ jobs:
|
||||
- name: Git Ownership Workaround
|
||||
run: git config --system --add safe.directory '*'
|
||||
|
||||
- name: Update ROS Keys
|
||||
run: |
|
||||
sudo rm /etc/apt/sources.list.d/ros2.list && \
|
||||
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
|
||||
|
||||
- name: Install gazebo
|
||||
run: |
|
||||
apt update && apt install -y gazebo11 libgazebo11-dev gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer-plugins-base1.0-dev
|
||||
@@ -85,7 +81,7 @@ jobs:
|
||||
. /opt/ros/galactic/setup.bash
|
||||
mkdir -p /opt/px4_ws/src
|
||||
cd /opt/px4_ws/src
|
||||
git clone --recursive --branch release/1.16 https://github.com/Auterion/px4-ros2-interface-lib.git
|
||||
git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib.git
|
||||
cd ..
|
||||
# Copy messages to ROS workspace
|
||||
"${PX4_DIR}/Tools/copy_to_ros_ws.sh" "$(pwd)"
|
||||
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -14,7 +14,7 @@ on:
|
||||
- '.github/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
|
||||
@@ -301,11 +301,6 @@ CONFIG:
|
||||
buildType: MinSizeRel
|
||||
settings:
|
||||
CONFIG: holybro_durandal-v1_default
|
||||
holybro_kakuteh7-wing_default:
|
||||
short: holybro_kakuteh7-wing
|
||||
buildType: MinSizeRel
|
||||
settings:
|
||||
CONFIG: holybro_kakuteh7-wing_default
|
||||
matek_h743-slim_default:
|
||||
short: matek_h743-slim
|
||||
buildType: MinSizeRel
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC2154
|
||||
|
||||
echo "INFO [init] Gazebo simulator"
|
||||
|
||||
# Enforce minimum gz version as Harmonic (gz-sim8)
|
||||
MIN_GZ_VERSION="8.0.0"
|
||||
GZ_SIM_VERSION=$(gz sim --versions 2>/dev/null | head -n 1 | tr -d ' ')
|
||||
|
||||
if [ -z "$GZ_SIM_VERSION" ]; then
|
||||
echo "ERROR [init] Gazebo gz sim not found. Please install gz-harmonic"
|
||||
exit 1
|
||||
echo "ERROR [init] Gazebo gz sim not found. Please install gz-harmonic"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use sort compare, check that MIN_GZ_VERSION is ordered last
|
||||
@@ -17,6 +15,8 @@ if [ "$(printf '%s\n' "$GZ_SIM_VERSION" "$MIN_GZ_VERSION" | sort -V | head -n1)"
|
||||
gz_command="gz"
|
||||
gz_sub_command="sim"
|
||||
|
||||
echo "INFO [init] Gazebo simulator $GZ_SIM_VERSION"
|
||||
|
||||
# Specify render engine if `GZ_SIM_RENDER_ENGINE` is set
|
||||
# (for example, if you want to use Ogre 1.x instead of Ogre 2.x):
|
||||
if [ -n "${PX4_GZ_SIM_RENDER_ENGINE}" ]; then
|
||||
@@ -24,19 +24,15 @@ if [ "$(printf '%s\n' "$GZ_SIM_VERSION" "$MIN_GZ_VERSION" | sort -V | head -n1)"
|
||||
gz_sub_command="${gz_sub_command} --render-engine ${PX4_GZ_SIM_RENDER_ENGINE}"
|
||||
fi
|
||||
else
|
||||
echo "ERROR [init] Gazebo gz sim version is too old ($GZ_SIM_VERSION). Minimum required version is $MIN_GZ_VERSION"
|
||||
exit 1
|
||||
echo "ERROR [init] Gazebo version too hold ($GZ_SIM_VERSION). Minimum required version is $MIN_GZ_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Look for an already running world
|
||||
get_gz_world() {
|
||||
gz_world=$( ${gz_command} topic -l | grep -m 1 -e "^/world/.*/clock" | sed 's/\/world\///g; s/\/clock//g' )
|
||||
}
|
||||
|
||||
# If not standalone
|
||||
if [ -z "${PX4_GZ_STANDALONE}" ]; then
|
||||
|
||||
get_gz_world
|
||||
# Look for an already running world
|
||||
gz_world=$( ${gz_command} topic -l | grep -m 1 -e "^/world/.*/clock" | sed 's/\/world\///g; s/\/clock//g' )
|
||||
|
||||
# shellcheck disable=SC2153
|
||||
if [ -z "${gz_world}" ] && [ -n "${PX4_GZ_WORLD}" ]; then
|
||||
@@ -70,13 +66,6 @@ fi
|
||||
|
||||
# Wait for Gazebo world to be ready before proceeding
|
||||
check_scene_info() {
|
||||
|
||||
get_gz_world
|
||||
|
||||
if [ -n "${PX4_GZ_STANDALONE}" ] && [ -n "${gz_world}" ]; then
|
||||
PX4_GZ_WORLD=${gz_world}
|
||||
fi
|
||||
|
||||
SERVICE_INFO=$(${gz_command} service -i --service "/world/${PX4_GZ_WORLD}/scene/info" 2>&1)
|
||||
if echo "$SERVICE_INFO" | grep -q "Service providers"; then
|
||||
return 0
|
||||
@@ -100,6 +89,21 @@ while [ $ATTEMPTS -gt 0 ]; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# World is ready, check if custom location is provided
|
||||
if [ -n "${PX4_HOME_LAT}" ] || [ -n "${PX4_HOME_LON}" ] || [ -n "${PX4_HOME_ALT}" ]; then
|
||||
# must have all three
|
||||
if [ -z "${PX4_HOME_LAT}" ] || [ -z "${PX4_HOME_LON}" ] || [ -z "${PX4_HOME_ALT}" ]; then
|
||||
echo "ERROR [init] PX4_HOME_LAT, PX4_HOME_LON and PX4_HOME_ALT must all be set"
|
||||
exit 1
|
||||
fi
|
||||
echo "INFO [init] Setting world origin to lat: ${PX4_HOME_LAT}, lon: ${PX4_HOME_LON}, alt: ${PX4_HOME_ALT}"
|
||||
${gz_command} service -s "/world/${PX4_GZ_WORLD}/set_spherical_coordinates" \
|
||||
--reqtype gz.msgs.SphericalCoordinates \
|
||||
--reptype gz.msgs.Boolean \
|
||||
--timeout 1000 \
|
||||
--req "surface_model: EARTH_WGS84, latitude_deg: ${PX4_HOME_LAT}, longitude_deg: ${PX4_HOME_LON}, elevation: ${PX4_HOME_ALT}" > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
# Start gz_bridge - either spawn a model or connect to existing one
|
||||
if [ -n "${PX4_SIM_MODEL#*gz_}" ] && [ -z "${PX4_GZ_MODEL_NAME}" ]; then
|
||||
# Spawn a model
|
||||
|
||||
@@ -190,9 +190,6 @@ param set-default SYS_FAILURE_EN 1
|
||||
# does not go below 50% by default, but failure injection can trigger failsafes.
|
||||
param set-default COM_LOW_BAT_ACT 3
|
||||
|
||||
# set default IP to localhost
|
||||
param set-default UXRCE_DDS_AG_IP 2130706433 # 127.0.0.1
|
||||
|
||||
|
||||
# Adapt timeout parameters if simulation runs faster or slower than realtime.
|
||||
if [ -n "$PX4_SIM_SPEED_FACTOR" ]; then
|
||||
@@ -317,7 +314,7 @@ then
|
||||
uxrce_dds_port="$PX4_UXRCE_DDS_PORT"
|
||||
fi
|
||||
|
||||
uxrce_dds_client start -t udp -p $uxrce_dds_port $uxrce_dds_ns
|
||||
uxrce_dds_client start -t udp -h 127.0.0.1 -p $uxrce_dds_port $uxrce_dds_ns
|
||||
|
||||
if param greater -s MNT_MODE_IN -1
|
||||
then
|
||||
@@ -340,7 +337,11 @@ then
|
||||
gyro_calibration start
|
||||
fi
|
||||
|
||||
payload_deliverer start
|
||||
# Payload deliverer module if gripper is enabled
|
||||
if param compare -s PD_GRIPPER_EN 1
|
||||
then
|
||||
payload_deliverer start
|
||||
fi
|
||||
|
||||
if param compare -s ICE_EN 1
|
||||
then
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#
|
||||
# @board px4_fmu-v2 exclude
|
||||
# @board bitcraze_crazyflie exclude
|
||||
# @board px4_fmu-v6x exclude
|
||||
#
|
||||
|
||||
. ${R}etc/init.d/rc.mc_defaults
|
||||
|
||||
@@ -560,7 +560,11 @@ else
|
||||
px4flow start -X &
|
||||
fi
|
||||
|
||||
payload_deliverer start
|
||||
# Payload deliverer module if gripper is enabled
|
||||
if param compare -s PD_GRIPPER_EN 1
|
||||
then
|
||||
payload_deliverer start
|
||||
fi
|
||||
|
||||
if param compare -s ICE_EN 1
|
||||
then
|
||||
|
||||
@@ -87,19 +87,25 @@ def process_target(px4board_file, target_name):
|
||||
|
||||
if platform not in excluded_platforms:
|
||||
# get the container based on the platform and toolchain
|
||||
# TODO enable once newer container is validated
|
||||
# container = 'ghcr.io/px4/px4-dev:v1.16.0-alpha2-419-gd48631e2ce'
|
||||
if platform == 'posix':
|
||||
# TODO remove once newer container is validated
|
||||
container = 'px4io/px4-dev-base-focal:2021-09-08'
|
||||
group = 'base'
|
||||
if toolchain:
|
||||
if toolchain.startswith('aarch64'):
|
||||
# TODO remove once newer container is validated
|
||||
container = 'px4io/px4-dev-aarch64:2022-08-12'
|
||||
group = 'aarch64'
|
||||
elif toolchain == 'arm-linux-gnueabihf':
|
||||
# TODO remove once newer container is validated
|
||||
container = 'px4io/px4-dev-armhf:2023-06-26'
|
||||
group = 'armhf'
|
||||
else:
|
||||
if verbose: print(f'unmatched toolchain: {toolchain}')
|
||||
elif platform == 'nuttx':
|
||||
# TODO remove once newer container is validated
|
||||
container = 'px4io/px4-dev-nuttx-focal:2022-08-12'
|
||||
group = 'nuttx'
|
||||
else:
|
||||
@@ -124,7 +130,10 @@ if(verbose):
|
||||
# - Events
|
||||
metadata_targets = ['airframe_metadata', 'parameters_metadata', 'extract_events']
|
||||
grouped_targets['base'] = {}
|
||||
# TODO remove once newer container is validated
|
||||
grouped_targets['base']['container'] = 'px4io/px4-dev-base-focal:2021-09-08'
|
||||
# TODO enable once newer container is validated
|
||||
#grouped_targets['base']['container'] = 'ghcr.io/px4/px4-dev:v1.16.0-alpha2-419-gd48631e2ce'
|
||||
grouped_targets['base']['manufacturers'] = {}
|
||||
grouped_targets['base']['manufacturers']['px4'] = []
|
||||
grouped_targets['base']['manufacturers']['px4'] += metadata_targets
|
||||
|
||||
@@ -0,0 +1,280 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import re
|
||||
from kconfiglib import Kconfig
|
||||
|
||||
kconf = Kconfig()
|
||||
|
||||
# Supress warning output
|
||||
kconf.warn_assign_undef = False
|
||||
kconf.warn_assign_override = False
|
||||
kconf.warn_assign_redun = False
|
||||
|
||||
dconf = Kconfig()
|
||||
|
||||
# Supress warning output
|
||||
dconf.warn_assign_undef = False
|
||||
dconf.warn_assign_override = False
|
||||
dconf.warn_assign_redun = False
|
||||
|
||||
source_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')
|
||||
|
||||
parser = argparse.ArgumentParser(description='Generate build targets')
|
||||
|
||||
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
|
||||
help='Verbose Output')
|
||||
parser.add_argument('-p', '--pretty', dest='pretty', action='store_true',
|
||||
help='Pretty output instead of a single line')
|
||||
# parser.add_argument('-g', '--groups', dest='group', action='store_true',
|
||||
# help='Groups targets')
|
||||
# parser.add_argument('-m', '--manifest', dest='manifest', action='store_true',
|
||||
# help='Firmware manifest')
|
||||
parser.add_argument('-f', '--filter', dest='filter', help='comma separated list of board names to use instead of all')
|
||||
|
||||
args = parser.parse_args()
|
||||
verbose = args.verbose
|
||||
|
||||
board_filter = []
|
||||
if args.filter:
|
||||
for board in args.filter.split(','):
|
||||
board_filter.append(board)
|
||||
|
||||
manifest = []
|
||||
build_configs = []
|
||||
grouped_targets = {}
|
||||
excluded_boards = []
|
||||
excluded_manufacturers = ['atlflight']
|
||||
excluded_platforms = ['qurt']
|
||||
excluded_labels = [
|
||||
'stackcheck',
|
||||
'nolockstep', 'replay', 'test',
|
||||
'uavcanv1', # TODO: fix and enable
|
||||
]
|
||||
|
||||
github_action_config = { 'include': build_configs }
|
||||
extra_args = {}
|
||||
if args.pretty:
|
||||
extra_args['indent'] = 2
|
||||
|
||||
def chunks(arr, size):
|
||||
# splits array into parts
|
||||
for i in range(0, len(arr), size):
|
||||
yield arr[i:i + size]
|
||||
|
||||
def comma_targets(targets):
|
||||
# turns array of targets into a comma split string
|
||||
return ",".join(targets)
|
||||
|
||||
def process_variants(targets):
|
||||
# returns the
|
||||
return [{"name": v} for v in targets]
|
||||
|
||||
def process_target(px4board_file, target_name, defconfig_data, defconfig_file):
|
||||
# reads through the board file and grabs
|
||||
# useful information for building
|
||||
ret = None
|
||||
platform = None
|
||||
toolchain = None
|
||||
group = None
|
||||
hardware = {
|
||||
'architecture': '',
|
||||
'vendor_id': '',
|
||||
'product_id': '',
|
||||
'chip': '',
|
||||
'productstr': '',
|
||||
}
|
||||
manifest_item = {
|
||||
'name': target_name,
|
||||
'manufacturer': '',
|
||||
'hardware': {},
|
||||
'toolchain': '',
|
||||
'artifact': '',
|
||||
'sha256sum': ''
|
||||
}
|
||||
|
||||
board_data = process_boardfile(px4board_file)
|
||||
# manifest_item['boardfile'] = board_data['boardfile']
|
||||
# manifest_item['debug'] = os.path.abspath(defconfig_file)
|
||||
manifest_item['toolchain'] = board_data['toolchain']
|
||||
manifest_item['manufacturer'] = board_data['manufacturer']
|
||||
|
||||
if defconfig_data is not None:
|
||||
manifest_item['manufacturer'] = defconfig_data['manufacturer']
|
||||
hardware = defconfig_data['hardware']
|
||||
hardware['architecture'] = board_data['architecture']
|
||||
|
||||
manifest_item['hardware'] = hardware
|
||||
|
||||
return manifest_item
|
||||
|
||||
def process_boardfile(boardtarget_file):
|
||||
return_boardfile = {
|
||||
'toolchain': '',
|
||||
'boardfile': '',
|
||||
'manufacturer': '',
|
||||
'architecture': '',
|
||||
}
|
||||
if boardtarget_file.endswith("default.px4board") or \
|
||||
boardtarget_file.endswith("performance-test.px4board") or \
|
||||
boardtarget_file.endswith("bootloader.px4board"):
|
||||
kconf.load_config(boardtarget_file, replace=True)
|
||||
else: # Merge config with default.px4board
|
||||
default_kconfig = re.sub(r'[a-zA-Z\d_-]+\.px4board', 'default.px4board', boardtarget_file)
|
||||
kconf.load_config(default_kconfig, replace=True)
|
||||
kconf.load_config(boardtarget_file, replace=False)
|
||||
|
||||
return_boardfile['boardfile'] = os.path.abspath(boardtarget_file)
|
||||
|
||||
if "BOARD_TOOLCHAIN" in kconf.syms:
|
||||
return_boardfile['toolchain'] = kconf.syms["BOARD_TOOLCHAIN"].str_value
|
||||
|
||||
if "CONFIG_CDCACM_VENDORSTR" in kconf.syms:
|
||||
return_boardfile['manufacturer'] = kconf.syms["CONFIG_CDCACM_VENDORSTR"].str_value
|
||||
|
||||
if "BOARD_ARCHITECTURE" in kconf.syms:
|
||||
return_boardfile['architecture'] = kconf.syms["BOARD_ARCHITECTURE"].str_value
|
||||
|
||||
return return_boardfile
|
||||
|
||||
def load_defconfig(defconfig_file):
|
||||
hardware = {
|
||||
'architecture': '',
|
||||
'vendor_id': '',
|
||||
'product_id': '',
|
||||
'chip': '',
|
||||
'description': '',
|
||||
}
|
||||
manifest_item = {
|
||||
'name': '',
|
||||
'manufacturer': '',
|
||||
'hardware': {},
|
||||
'toolchain': '',
|
||||
'artifact': '',
|
||||
'sha256sum': '',
|
||||
'boardfile': '',
|
||||
'debug': ''
|
||||
}
|
||||
defconfig_data = process_defconfig(defconfig_file)
|
||||
manifest_item['manufacturer'] = defconfig_data['manufacturer']
|
||||
# hardware['architecture'] = defconfig_data['architecture']
|
||||
hardware['vendor_id'] = defconfig_data['vendor_id']
|
||||
hardware['product_id'] = defconfig_data['product_id']
|
||||
hardware['chip'] = defconfig_data['chip']
|
||||
hardware['description'] = defconfig_data['description']
|
||||
manifest_item['hardware'] = hardware
|
||||
|
||||
return manifest_item
|
||||
|
||||
def process_defconfig(defconfig_file):
|
||||
return_defconfig = {
|
||||
'manufacturer': '',
|
||||
'vendor_id': '',
|
||||
'product_id': '',
|
||||
'chip': '',
|
||||
'description': '',
|
||||
}
|
||||
defconfig = {}
|
||||
|
||||
defconfig_available = False
|
||||
abs_defconfig_path = os.path.abspath(defconfig_file)
|
||||
if(os.path.isfile(defconfig_file)):
|
||||
defconfig_available = True
|
||||
|
||||
if(defconfig_available):
|
||||
with open(defconfig_file, "r") as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if not line or line.startswith("#") or "=" not in line:
|
||||
continue
|
||||
key, value = line.split("=", 1)
|
||||
value = value.strip('"')
|
||||
defconfig[key] = value
|
||||
|
||||
if "CONFIG_CDCACM_VENDORSTR" in defconfig.keys():
|
||||
return_defconfig['manufacturer'] = defconfig.get("CONFIG_CDCACM_VENDORSTR")
|
||||
|
||||
if "CONFIG_CDCACM_VENDORID" in defconfig.keys():
|
||||
return_defconfig['vendor_id'] = defconfig.get("CONFIG_CDCACM_VENDORID")
|
||||
|
||||
if "CONFIG_CDCACM_PRODUCTID" in defconfig.keys():
|
||||
return_defconfig['product_id'] = defconfig.get("CONFIG_CDCACM_PRODUCTID")
|
||||
|
||||
if "CONFIG_ARCH_CHIP" in defconfig.keys():
|
||||
return_defconfig['chip'] = defconfig.get("CONFIG_ARCH_CHIP")
|
||||
|
||||
if "CONFIG_CDCACM_PRODUCTSTR" in defconfig.keys():
|
||||
return_defconfig['description'] = defconfig.get("CONFIG_CDCACM_PRODUCTSTR")
|
||||
|
||||
return return_defconfig
|
||||
|
||||
# Look for board targets in the ./boards directory
|
||||
if(verbose):
|
||||
print("=======================")
|
||||
print("= scanning for boards =")
|
||||
print("=======================")
|
||||
|
||||
targets_list = {}
|
||||
# list of build targets
|
||||
# [
|
||||
# {
|
||||
# "name": "px4_fmu-v6x",
|
||||
# "manufacturer": "CONFIG_CDCACM_VENDORSTR",
|
||||
# "hardware": {
|
||||
# "architecture": "CONFIG_BOARD_ARCHITECTURE",
|
||||
# "vendor_id": "CONFIG_CDCACM_VENDORID",
|
||||
# "product_id": "CONFIG_CDCACM_PRODUCTID",
|
||||
# "chip": "CONFIG_ARCH_CHIP",
|
||||
# "description": "CONFIG_CDCACM_PRODUCTSTR",
|
||||
# },
|
||||
# "toolchain": "",
|
||||
# "artifact": "",
|
||||
# "sha256sum": ""
|
||||
# }
|
||||
# ]
|
||||
|
||||
|
||||
|
||||
for manufacturer in os.scandir(os.path.join(source_dir, '../boards')):
|
||||
if not manufacturer.is_dir():
|
||||
continue
|
||||
if manufacturer.name in excluded_manufacturers:
|
||||
if verbose: print(f'excluding manufacturer {manufacturer.name}')
|
||||
continue
|
||||
|
||||
for board in os.scandir(manufacturer.path):
|
||||
if not board.is_dir():
|
||||
continue
|
||||
|
||||
defconfig_file = os.path.join(board.path, 'nuttx-config/nsh/defconfig')
|
||||
defconfig_data = load_defconfig(defconfig_file)
|
||||
|
||||
for files in os.scandir(board.path):
|
||||
|
||||
if files.is_file() and files.name.endswith('.px4board'):
|
||||
|
||||
board_name = manufacturer.name + '_' + board.name
|
||||
label = files.name[:-9]
|
||||
target_name = manufacturer.name + '_' + board.name + '_' + label
|
||||
|
||||
if board_filter and not board_name in board_filter:
|
||||
if verbose: print(f'excluding board {board_name} ({target_name})')
|
||||
continue
|
||||
|
||||
if board_name in excluded_boards:
|
||||
if verbose: print(f'excluding board {board_name} ({target_name})')
|
||||
continue
|
||||
|
||||
if label in excluded_labels:
|
||||
if verbose: print(f'excluding label {label} ({target_name})')
|
||||
continue
|
||||
|
||||
target = process_target(files.path, target_name, defconfig_data, defconfig_file)
|
||||
|
||||
if target is not None:
|
||||
build_configs.append(target)
|
||||
|
||||
print(json.dumps(build_configs, **extra_args))
|
||||
@@ -4,8 +4,8 @@ mkdir artifacts
|
||||
cp **/**/*.px4 artifacts/
|
||||
cp **/**/*.elf artifacts/
|
||||
for build_dir_path in build/*/ ; do
|
||||
build_dir_path=${build_dir_path::${#build_dir_path}-1}
|
||||
build_dir=${build_dir_path#*/}
|
||||
build_dir=${build_dir::${#build_dir}-1}
|
||||
mkdir artifacts/$build_dir
|
||||
find artifacts/ -maxdepth 1 -type f -name "*$build_dir*"
|
||||
# Airframe
|
||||
@@ -26,21 +26,23 @@ for build_dir_path in build/*/ ; do
|
||||
echo "----------"
|
||||
done
|
||||
|
||||
# general metadata
|
||||
mkdir artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/airframes.xml artifacts/_general/
|
||||
# Airframe
|
||||
cp artifacts/px4_sitl_default/airframes.xml artifacts/_general/
|
||||
# Parameters
|
||||
cp artifacts/px4_sitl_default/parameters.xml artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/parameters.json artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/parameters.json.xz artifacts/_general/
|
||||
# Actuators
|
||||
cp artifacts/px4_sitl_default/actuators.json artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/actuators.json.xz artifacts/_general/
|
||||
# Events
|
||||
cp artifacts/px4_sitl_default/events/all_events.json.xz artifacts/_general/
|
||||
# ROS 2 msgs
|
||||
cp artifacts/px4_sitl_default/events/all_events.json.xz artifacts/_general/
|
||||
# Module Docs
|
||||
ls -la artifacts/_general/
|
||||
if [ -d artifacts/px4_sitl_default ]; then
|
||||
# general metadata
|
||||
mkdir artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/airframes.xml artifacts/_general/
|
||||
# Airframe
|
||||
cp artifacts/px4_sitl_default/airframes.xml artifacts/_general/
|
||||
# Parameters
|
||||
cp artifacts/px4_sitl_default/parameters.xml artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/parameters.json artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/parameters.json.xz artifacts/_general/
|
||||
# Actuators
|
||||
cp artifacts/px4_sitl_default/actuators.json artifacts/_general/
|
||||
cp artifacts/px4_sitl_default/actuators.json.xz artifacts/_general/
|
||||
# Events
|
||||
cp artifacts/px4_sitl_default/events/all_events.json.xz artifacts/_general/
|
||||
# ROS 2 msgs
|
||||
cp artifacts/px4_sitl_default/events/all_events.json.xz artifacts/_general/
|
||||
# Module Docs
|
||||
ls -la artifacts/_general/
|
||||
fi
|
||||
|
||||
@@ -33,10 +33,10 @@ fi
|
||||
# docker hygiene
|
||||
|
||||
#Delete all stopped containers (including data-only containers)
|
||||
#docker rm $(docker ps -a -q)
|
||||
# docker container prune
|
||||
|
||||
#Delete all 'untagged/dangling' (<none>) images
|
||||
#docker rmi $(docker images -q -f dangling=true)
|
||||
# docker image prune
|
||||
|
||||
echo "PX4_DOCKER_REPO: $PX4_DOCKER_REPO";
|
||||
|
||||
|
||||
@@ -8,22 +8,25 @@ ENV LC_ALL=C.UTF-8
|
||||
ENV DISPLAY=:99
|
||||
ENV TERM=xterm
|
||||
ENV TZ=UTC
|
||||
ENV RUNS_IN_DOCKER=true
|
||||
|
||||
# SITL UDP PORTS
|
||||
EXPOSE 14556/udp
|
||||
EXPOSE 14557/udp
|
||||
|
||||
# Install Shell Script Entrypoint
|
||||
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
# Install PX4 Requirements
|
||||
COPY requirements.txt /tmp/requirements.txt
|
||||
COPY ubuntu.sh /tmp/ubuntu.sh
|
||||
RUN touch /.dockerenv
|
||||
|
||||
RUN bash /tmp/ubuntu.sh --no-sim-tools
|
||||
|
||||
# Make sure git is ok with your local copy
|
||||
RUN git config --global --add safe.directory '*'
|
||||
|
||||
# create user with id 1001 (jenkins docker workflow default)
|
||||
# Create user with id 1001 (jenkins docker workflow default)
|
||||
RUN useradd --shell /bin/bash -u 1001 -c "" -m user && usermod -a -G dialout user
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||
|
||||
@@ -1,19 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
NO_COLOR='\033[0m' # No Color
|
||||
SCRIPTID="${GREEN}[docker-entrypoint.sh]${NO_COLOR}"
|
||||
|
||||
echo -e "$SCRIPTID Starting"
|
||||
|
||||
# Start virtual X server in the background
|
||||
# - DISPLAY default is :99, set in dockerfile
|
||||
# - Users can override with `-e DISPLAY=` in `docker run` command to avoid
|
||||
# running Xvfb and attach their screen
|
||||
if [[ -x "$(command -v Xvfb)" && "$DISPLAY" == ":99" ]]; then
|
||||
echo "[docker-entrypoint.sh] Starting Xvfb"
|
||||
echo -e "$SCRIPTID Starting Xvfb"
|
||||
Xvfb :99 -screen 0 1600x1200x24+32 &
|
||||
fi
|
||||
|
||||
# Check if the ROS_DISTRO is passed and use it
|
||||
# to source the ROS environment
|
||||
if [ -n "${ROS_DISTRO}" ]; then
|
||||
echo "[docker-entrypoint.sh] ROS: ${ROS_DISTRO}"
|
||||
echo -e "$SCRIPTID ROS: ${ROS_DISTRO}"
|
||||
source "/opt/ros/$ROS_DISTRO/setup.bash"
|
||||
fi
|
||||
|
||||
echo -e "$SCRIPTID ($( uname -m ))"
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -42,8 +42,6 @@ else
|
||||
echo "Installing PX4 general dependencies (homebrew px4-dev)"
|
||||
brew tap PX4/px4
|
||||
brew install px4-dev
|
||||
# lock down gcc to v9 for v1.16 branch
|
||||
brew install gcc-arm-none-eabi
|
||||
brew install ncurses
|
||||
brew install python-tk
|
||||
fi
|
||||
|
||||
@@ -27,9 +27,12 @@ do
|
||||
fi
|
||||
done
|
||||
|
||||
echo "[ubuntu.sh] Starting..."
|
||||
echo "[ubuntu.sh] arch: $INSTALL_ARCH"
|
||||
|
||||
# detect if running in docker
|
||||
if [ -f /.dockerenv ]; then
|
||||
echo "Running within docker, installing initial dependencies";
|
||||
if [ "$RUNS_IN_DOCKER" = "true" ]; then
|
||||
echo "[ubuntu.sh] Running within docker, installing initial dependencies";
|
||||
apt-get --quiet -y update && DEBIAN_FRONTEND=noninteractive apt-get --quiet -y install \
|
||||
ca-certificates \
|
||||
gnupg \
|
||||
@@ -47,7 +50,7 @@ DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
# check requirements.txt exists (script not run in source tree)
|
||||
REQUIREMENTS_FILE="requirements.txt"
|
||||
if [[ ! -f "${DIR}/${REQUIREMENTS_FILE}" ]]; then
|
||||
echo "FAILED: ${REQUIREMENTS_FILE} needed in same directory as ubuntu.sh (${DIR})."
|
||||
echo "[ubuntu.sh] FAILED: ${REQUIREMENTS_FILE} needed in same directory as ubuntu.sh (${DIR})."
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -55,10 +58,8 @@ fi
|
||||
# check ubuntu version
|
||||
# otherwise warn and point to docker?
|
||||
UBUNTU_RELEASE="`lsb_release -rs`"
|
||||
echo "Ubuntu ${UBUNTU_RELEASE}"
|
||||
|
||||
echo
|
||||
echo "Installing PX4 general dependencies"
|
||||
echo "[ubuntu.sh] Ubuntu ${UBUNTU_RELEASE}"
|
||||
echo "[ubuntu.sh] Installing PX4 general dependencies"
|
||||
|
||||
sudo apt-get update -y --quiet
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
|
||||
@@ -91,7 +92,7 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends i
|
||||
|
||||
# Python3 dependencies
|
||||
echo
|
||||
echo "Installing PX4 Python3 dependencies"
|
||||
echo "[ubuntu.sh] Installing PX4 Python3 dependencies"
|
||||
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
|
||||
REQUIRED_VERSION="3.11"
|
||||
if [[ "$(printf '%s\n' "$REQUIRED_VERSION" "$PYTHON_VERSION" | sort -V | head -n1)" == "$REQUIRED_VERSION" ]]; then
|
||||
@@ -109,18 +110,18 @@ fi
|
||||
if [[ $INSTALL_NUTTX == "true" ]]; then
|
||||
|
||||
echo
|
||||
echo "Installing NuttX dependencies"
|
||||
|
||||
echo "[ubuntu.sh] NuttX Installing Dependencies ($INSTALL_ARCH)"
|
||||
sudo apt-get update -y --quiet
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
|
||||
automake \
|
||||
binutils-dev \
|
||||
bison \
|
||||
build-essential \
|
||||
curl \
|
||||
clang \
|
||||
clang-tidy \
|
||||
clang-format \
|
||||
flex \
|
||||
g++-multilib \
|
||||
gcc-arm-none-eabi \
|
||||
gcc-multilib \
|
||||
gdb-multiarch \
|
||||
genromfs \
|
||||
gettext \
|
||||
@@ -139,6 +140,8 @@ if [[ $INSTALL_NUTTX == "true" ]]; then
|
||||
libstdc++-arm-none-eabi-newlib \
|
||||
libtool \
|
||||
libunwind-dev \
|
||||
lldb \
|
||||
lld \
|
||||
pkg-config \
|
||||
screen \
|
||||
texinfo \
|
||||
@@ -147,6 +150,21 @@ if [[ $INSTALL_NUTTX == "true" ]]; then
|
||||
vim-common \
|
||||
;
|
||||
|
||||
if [[ "${INSTALL_ARCH}" == "x86_64" ]]; then
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
|
||||
g++-multilib \
|
||||
gcc-arm-none-eabi \
|
||||
gcc-multilib \
|
||||
;
|
||||
fi
|
||||
|
||||
if [[ "${INSTALL_ARCH}" == "aarch64" ]]; then
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
|
||||
g++-aarch64-linux-gnu \
|
||||
g++-arm-linux-gnueabihf \
|
||||
;
|
||||
fi
|
||||
|
||||
if [ -n "$USER" ]; then
|
||||
# add user to dialout group (serial port access)
|
||||
sudo usermod -aG dialout $USER
|
||||
@@ -157,7 +175,7 @@ fi
|
||||
if [[ $INSTALL_SIM == "true" ]]; then
|
||||
|
||||
echo
|
||||
echo "Installing PX4 simulation dependencies"
|
||||
echo "[ubuntu.sh] Installing PX4 simulation dependencies"
|
||||
|
||||
# General simulation dependencies
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
|
||||
@@ -182,8 +200,8 @@ if [[ $INSTALL_SIM == "true" ]]; then
|
||||
fi
|
||||
else
|
||||
# Expects Ubuntu 22.04 > by default
|
||||
echo "Gazebo (Harmonic) will be installed"
|
||||
echo "Earlier versions will be removed"
|
||||
echo "[ubuntu.sh] Gazebo (Harmonic) will be installed"
|
||||
echo "[ubuntu.sh] Earlier versions will be removed"
|
||||
# Add Gazebo binary repository
|
||||
sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
|
||||
|
||||
@@ -76,7 +76,6 @@ CONFIG_MODULES_MC_POS_CONTROL=y
|
||||
CONFIG_MODULES_MC_RATE_CONTROL=y
|
||||
CONFIG_MODULES_NAVIGATOR=y
|
||||
CONFIG_NUM_MISSION_ITMES_SUPPORTED=1000
|
||||
CONFIG_MODULES_PAYLOAD_DELIVERER=y
|
||||
CONFIG_MODULES_RC_UPDATE=y
|
||||
CONFIG_MODULES_ROVER_POS_CONTROL=y
|
||||
CONFIG_MODULES_SENSORS=y
|
||||
|
||||
@@ -6,8 +6,3 @@ CONFIG_DRIVERS_SW_CRYPTO=y
|
||||
# CONFIG_EKF2_AUX_GLOBAL_POSITION is not set
|
||||
CONFIG_PUBLIC_KEY0="../../../Tools/test_keys/key0.pub"
|
||||
CONFIG_PUBLIC_KEY1="../../../Tools/test_keys/rsa2048.pub"
|
||||
CONFIG_MODULES_FW_ATT_CONTROL=n
|
||||
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
|
||||
CONFIG_MODULES_FW_POS_CONTROL=n
|
||||
CONFIG_MODULES_FW_RATE_CONTROL=n
|
||||
CONFIG_MODULES_VTOL_ATT_CONTROL=n
|
||||
|
||||
@@ -127,9 +127,6 @@
|
||||
#define SPI6_nRESET_EXTERNAL1 /* PF10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTF|GPIO_PIN10)
|
||||
#define SPI6_RESET(on_true) px4_arch_gpiowrite(SPI6_nRESET_EXTERNAL1, !(on_true))
|
||||
|
||||
// ADIS16507 hardware reset
|
||||
#define GPIO_ADIS16507_RESET(reset) SPI6_RESET(reset)
|
||||
|
||||
/* I2C busses */
|
||||
|
||||
/* Devices on the onboard buses.
|
||||
|
||||
@@ -56,12 +56,9 @@ CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
CONFIG_MODULES_MC_POS_CONTROL=y
|
||||
CONFIG_MODULES_MC_RATE_CONTROL=y
|
||||
CONFIG_MODULES_NAVIGATOR=y
|
||||
CONFIG_MODULES_PAYLOAD_DELIVERER=y
|
||||
CONFIG_NUM_MISSION_ITMES_SUPPORTED=1000
|
||||
CONFIG_MODULES_RC_UPDATE=y
|
||||
CONFIG_MODULES_SENSORS=y
|
||||
CONFIG_MODULES_UXRCE_DDS_CLIENT=y
|
||||
CONFIG_MODULES_VTOL_ATT_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y
|
||||
CONFIG_SYSTEMCMDS_BSONDUMP=y
|
||||
CONFIG_SYSTEMCMDS_DMESG=y
|
||||
|
||||
@@ -5,8 +5,3 @@ CONFIG_DRIVERS_SW_CRYPTO=y
|
||||
# CONFIG_EKF2_AUX_GLOBAL_POSITION is not set
|
||||
CONFIG_PUBLIC_KEY0="../../../Tools/test_keys/key0.pub"
|
||||
CONFIG_PUBLIC_KEY1="../../../Tools/test_keys/rsa2048.pub"
|
||||
CONFIG_MODULES_FW_ATT_CONTROL=n
|
||||
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
|
||||
CONFIG_MODULES_FW_POS_CONTROL=n
|
||||
CONFIG_MODULES_FW_RATE_CONTROL=n
|
||||
CONFIG_MODULES_VTOL_ATT_CONTROL=n
|
||||
|
||||
@@ -34,25 +34,75 @@
|
||||
#pragma once
|
||||
|
||||
// DMAMUX1 Using at most 8 Channels on DMA1 -------- Assigned
|
||||
#define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 // 1 DMA1:37 IIM-42653
|
||||
#define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 // 2 DMA1:38 IIM-42653
|
||||
#define DMAMAP_USART1_RX DMAMAP_DMA12_USART1RX_0 // 3 DMA1:41 GPS1
|
||||
#define DMAMAP_USART1_TX DMAMAP_DMA12_USART1TX_0 // 4 DMA1:42 GPS1
|
||||
#define DMAMAP_USART6_RX DMAMAP_DMA12_USART6RX_0 // 5 DMA1:71 RC
|
||||
#define DMAMAP_USART6_TX DMAMAP_DMA12_USART6TX_0 // 6 DMA1:72 RC
|
||||
// Timer 4 (DMAMAP_DMA12_TIM4UP_0) // 7 DMA1:32 TIM4UP/TIM4CH1-4
|
||||
// Timer 5 (DMAMAP_DMA12_TIM5UP_0) // 8 DMA1:50 TIM5UP/TIM5CH1-4
|
||||
// V
|
||||
|
||||
// Timer 4 Channel 1 /* DMA1:29 TIM4CH1 */
|
||||
|
||||
#define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* 1 DMA1:37 IIM-42653 */
|
||||
#define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* 2 DMA1:38 IIM-42653 */
|
||||
|
||||
//#define DMAMAP_SPI2_RX DMAMAP_DMA12_SPI2RX_0 /* 3 DMA1:39 ICM-42688-P */
|
||||
//#define DMAMAP_SPI2_TX DMAMAP_DMA12_SPI2TX_0 /* 4 DMA1:40 ICM-42688-P */
|
||||
|
||||
#define DMAMAP_USART1_RX DMAMAP_DMA12_USART1RX_0 /* DMA1:41 GPS1 */
|
||||
#define DMAMAP_USART1_TX DMAMAP_DMA12_USART1TX_0 /* DMA1:42 GPS1 */
|
||||
|
||||
//#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_0 /* DMA1:45 DEBUG */
|
||||
//#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_0 /* DMA1:46 DEBUG */
|
||||
|
||||
// Timer 8 Channel 1 /* DMA1:47 TIM8CH1 */
|
||||
// Timer 8 Channel 2 /* DMA1:48 TIM8CH2 */
|
||||
// Timer 8 Channel 3 /* DMA1:49 TIM8CH3 */
|
||||
// Timer 8 Channel 4 /* DMA1:50 TIM8CH4 */
|
||||
|
||||
// Timer 5 Channel 1 /* DMA1:55 TIM5CH1 */
|
||||
// Timer 5 Channel 2 /* DMA1:56 TIM5CH2 */
|
||||
// Timer 5 Channel 3 /* DMA1:57 TIM5CH3 */
|
||||
// Timer 5 Channel 4 /* DMA1:58 TIM5CH4 */
|
||||
|
||||
// #define DMAMAP_UART4_RX DMAMAP_DMA12_UART4RX_0 /* DMA1:63 UART4 */
|
||||
// #define DMAMAP_UART4_TX DMAMAP_DMA12_UART4TX_0 /* DMA1:64 UART4 */
|
||||
|
||||
#define DMAMAP_USART6_RX DMAMAP_DMA12_USART6RX_0 /* 5 DMA1:71 RC */
|
||||
// #define DMAMAP_USART6_TX DMAMAP_DMA12_USART6TX_0 /* 6 DMA1:72 RC */
|
||||
|
||||
// Assigned in timer_config.cpp
|
||||
|
||||
// Timer 4 /* 7 DMA1:32 TIM4UP */
|
||||
// Timer 5 /* 8 DMA1:50 TIM5UP */
|
||||
|
||||
// DMAMUX2 Using at most 8 Channels on DMA2 -------- Assigned
|
||||
#define DMAMAP_USART2_RX DMAMAP_DMA12_USART2RX_1 // 1 DMA2:43 VTX
|
||||
#define DMAMAP_UART5_RX DMAMAP_DMA12_UART5RX_1 // 2 DMA2:65 VTX
|
||||
#define DMAMAP_UART5_TX DMAMAP_DMA12_UART5TX_1 // 3 DMA2:66 VTX
|
||||
#define DMAMAP_UART7_RX DMAMAP_DMA12_UART7RX_1 // 4 DMA2:79 TELEM1
|
||||
#define DMAMAP_UART7_TX DMAMAP_DMA12_UART7TX_1 // 5 DMA2:80 TELEM1
|
||||
#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_1 // 6 DMA2:45 DEBUG
|
||||
#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_1 // 7 DMA2:46 DEBUG
|
||||
// available
|
||||
// V
|
||||
|
||||
// Timer 4 Channel 1 /* DMA2:29 TIM4CH1 */
|
||||
|
||||
#define DMAMAP_USART2_RX DMAMAP_DMA12_USART2RX_1 /* 3 DMA2:43 TELEM3 */
|
||||
#define DMAMAP_USART2_TX DMAMAP_DMA12_USART2TX_1 /* 4 DMA2:44 TELEM3 */
|
||||
|
||||
#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_1 /* 3 DMA2:45 DEBUG */
|
||||
#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_1 /* 4 DMA2:46 DEBUG */
|
||||
|
||||
// Timer 8 Channel 1 /* DMA2:47 TIM8CH1 */
|
||||
// Timer 8 Channel 2 /* DMA2:48 TIM8CH2 */
|
||||
// Timer 8 Channel 3 /* DMA2:49 TIM8CH3 */
|
||||
// Timer 8 Channel 4 /* DMA2:50 TIM8CH4 */
|
||||
|
||||
// Timer 5 Channel 1 /* DMA2:55 TIM5CH1 */
|
||||
// Timer 5 Channel 2 /* DMA2:56 TIM5CH2 */
|
||||
// Timer 5 Channel 3 /* DMA2:57 TIM5CH3 */
|
||||
// Timer 5 Channel 4 /* DMA2:58 TIM5CH4 */
|
||||
|
||||
//#define DMAMAP_SPI3_RX DMAMAP_DMA12_SPI3RX_1 /* 1 DMA2:61 BMI088 */
|
||||
//#define DMAMAP_SPI3_TX DMAMAP_DMA12_SPI3TX_1 /* 2 DMA2:62 BMI088 */
|
||||
|
||||
#define DMAMAP_UART5_RX DMAMAP_DMA12_UART5RX_1 /* 5 DMA2:65 TELEM2 */
|
||||
#define DMAMAP_UART5_TX DMAMAP_DMA12_UART5TX_1 /* 6 DMA2:66 TELEM2 */
|
||||
|
||||
#define DMAMAP_UART7_RX DMAMAP_DMA12_UART7RX_1 /* 7 DMA1:79 TELEM1 */
|
||||
#define DMAMAP_UART7_TX DMAMAP_DMA12_UART7TX_1 /* 8 DMA1:80 TELEM1 */
|
||||
|
||||
// DMAMUX2 Using at most 8 Channels on BDMA -------- Assigned
|
||||
#define DMAMAP_SPI6_RX DMAMAP_BDMA_SPI6_RX // 1 BDMA:11 SPI J11
|
||||
#define DMAMAP_SPI6_TX DMAMAP_BDMA_SPI6_TX // 2 BDMA:12 SPI J11
|
||||
// V
|
||||
|
||||
#define DMAMAP_SPI6_RX DMAMAP_BDMA_SPI6_RX /* 1 BDMA:11 SPI J11 */
|
||||
#define DMAMAP_SPI6_TX DMAMAP_BDMA_SPI6_TX /* 2 BDMA:12 SPI J11 */
|
||||
|
||||
@@ -260,6 +260,8 @@ CONFIG_USART1_TXDMA=y
|
||||
CONFIG_USART2_BAUD=57600
|
||||
CONFIG_USART2_RXBUFSIZE=600
|
||||
CONFIG_USART2_RXDMA=y
|
||||
CONFIG_USART2_TXBUFSIZE=1500
|
||||
CONFIG_USART2_TXDMA=y
|
||||
CONFIG_USART3_BAUD=57600
|
||||
CONFIG_USART3_RXBUFSIZE=180
|
||||
CONFIG_USART3_RXDMA=y
|
||||
@@ -270,7 +272,6 @@ CONFIG_USART6_BAUD=57600
|
||||
CONFIG_USART6_RXBUFSIZE=600
|
||||
CONFIG_USART6_RXDMA=y
|
||||
CONFIG_USART6_TXBUFSIZE=1500
|
||||
CONFIG_USART6_TXDMA=y
|
||||
CONFIG_USBDEV=y
|
||||
CONFIG_USBDEV_BUSPOWERED=y
|
||||
CONFIG_USBDEV_MAXPOWER=500
|
||||
|
||||
@@ -20,7 +20,6 @@ CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_IMU_BOSCH_BMI088=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_IIM42652=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_IIM42653=y
|
||||
CONFIG_COMMON_INS=y
|
||||
CONFIG_COMMON_LIGHT=y
|
||||
CONFIG_COMMON_MAGNETOMETER=y
|
||||
|
||||
@@ -12,17 +12,10 @@ else
|
||||
fi
|
||||
|
||||
iim42652 -s -R 22 start
|
||||
|
||||
bmi088 -A -R 29 -s start
|
||||
if ! bmi088 -G -R 29 -s start
|
||||
then
|
||||
iim42653 -s -b 2 -R 22 start
|
||||
fi
|
||||
bmi088 -G -R 29 -s start
|
||||
|
||||
if ! ist8310 -I -R 18 start
|
||||
then
|
||||
iis2mdc -I -R 37 start
|
||||
fi
|
||||
ist8310 -I -R 18 start
|
||||
|
||||
bmp581 -s start
|
||||
icp201xx -I start
|
||||
|
||||
@@ -42,7 +42,6 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
|
||||
initSPIBus(SPI::Bus::SPI2, {
|
||||
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortG, GPIO::Pin2}, SPI::DRDY{GPIO::PortG, GPIO::Pin3}),
|
||||
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_IIM42653, SPI::CS{GPIO::PortD, GPIO::Pin12}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
|
||||
}, {GPIO::PortI, GPIO::Pin11}),
|
||||
// initSPIBus(SPI::Bus::SPI3,{
|
||||
// // no devices
|
||||
|
||||
@@ -17,7 +17,6 @@ CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y
|
||||
CONFIG_COMMON_DISTANCE_SENSOR=y
|
||||
CONFIG_DRIVERS_DSHOT=y
|
||||
CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_OSD_MSP_OSD=y
|
||||
CONFIG_DRIVERS_IMU_BOSCH_BMI088=y
|
||||
CONFIG_DRIVERS_IRLOCK=y
|
||||
CONFIG_COMMON_LIGHT=y
|
||||
|
||||
@@ -5,8 +5,6 @@ CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS1"
|
||||
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS2"
|
||||
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3"
|
||||
CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5"
|
||||
CONFIG_BOARD_SERIAL_RC="/dev/ttyS4"
|
||||
CONFIG_BOARD_CONSTRAINED_FLASH=y
|
||||
CONFIG_DRIVERS_ADC_BOARD_ADC=y
|
||||
CONFIG_DRIVERS_BAROMETER_BMP280=y
|
||||
CONFIG_DRIVERS_BAROMETER_GOERTEK_SPA06=y
|
||||
@@ -15,11 +13,13 @@ CONFIG_DRIVERS_CDCACM_AUTOSTART=y
|
||||
CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y
|
||||
CONFIG_COMMON_DISTANCE_SENSOR=y
|
||||
CONFIG_DRIVERS_DSHOT=y
|
||||
CONFIG_DRIVERS_GNSS_SEPTENTRIO=y
|
||||
CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
|
||||
CONFIG_DRIVERS_OSD_ATXXXX=y
|
||||
CONFIG_COMMON_LIGHT=y
|
||||
CONFIG_COMMON_MAGNETOMETER=y
|
||||
CONFIG_COMMON_OPTICAL_FLOW=y
|
||||
CONFIG_DRIVERS_PWM_OUT=y
|
||||
CONFIG_DRIVERS_RC_INPUT=y
|
||||
CONFIG_COMMON_TELEMETRY=y
|
||||
@@ -57,16 +57,18 @@ CONFIG_MODULES_MC_RATE_CONTROL=y
|
||||
CONFIG_MODULES_NAVIGATOR=y
|
||||
CONFIG_NUM_MISSION_ITMES_SUPPORTED=1000
|
||||
CONFIG_MODULES_RC_UPDATE=y
|
||||
CONFIG_MODULES_ROVER_POS_CONTROL=y
|
||||
CONFIG_MODULES_SENSORS=y
|
||||
CONFIG_MODULES_SIMULATION_SIMULATOR_SIH=y
|
||||
CONFIG_MODULES_VTOL_ATT_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_BSONDUMP=y
|
||||
CONFIG_SYSTEMCMDS_DMESG=y
|
||||
CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y
|
||||
CONFIG_SYSTEMCMDS_LED_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_MFT=y
|
||||
CONFIG_SYSTEMCMDS_NSHTERM=y
|
||||
CONFIG_SYSTEMCMDS_PARAM=y
|
||||
CONFIG_SYSTEMCMDS_REBOOT=y
|
||||
CONFIG_SYSTEMCMDS_SD_BENCH=y
|
||||
CONFIG_SYSTEMCMDS_SYSTEM_TIME=y
|
||||
CONFIG_SYSTEMCMDS_TOP=y
|
||||
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"summary": "KAKUTEH7-WING",
|
||||
"version": "0.1",
|
||||
"image_size": 0,
|
||||
"image_maxsize": 1703936,
|
||||
"image_maxsize": 1835008,
|
||||
"git_identity": "",
|
||||
"board_revision": 0
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
MEMORY
|
||||
{
|
||||
ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K
|
||||
FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1664K /* params in last two sectors */
|
||||
FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1792K /* params in last sector */
|
||||
|
||||
DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
|
||||
DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
|
||||
#define BOARD_NUMBER_BRICKS 2
|
||||
|
||||
// TODO: fix
|
||||
#define GPIO_nVDD_BRICK1_VALID (1) /* Brick 1 Is Chosen */
|
||||
#define GPIO_nVDD_BRICK2_VALID (0) /* Brick 2 Is Chosen */
|
||||
|
||||
@@ -128,20 +129,17 @@
|
||||
*/
|
||||
#define UAVCAN_NUM_IFACES_RUNTIME 1
|
||||
|
||||
#define GPIO_VDD_3V3_SENSORS_EN /* PB2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN2)
|
||||
|
||||
#define GPIO_VTX_9V_EN /* PE3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN3)
|
||||
|
||||
#define GPIO_CAM_SWITCH /* PC13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN13)
|
||||
#define GPIO_VDD_5V_PERIPH_nEN /* PE2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN2)
|
||||
#define GPIO_VDD_5V_PERIPH_nOC /* PE3 */ (GPIO_INPUT |GPIO_FLOAT|GPIO_PORTE|GPIO_PIN3)
|
||||
#define GPIO_VDD_5V_HIPOWER_nEN /* PC10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN10)
|
||||
#define GPIO_VDD_5V_HIPOWER_nOC /* PC11 */ (GPIO_INPUT |GPIO_FLOAT|GPIO_PORTC|GPIO_PIN11)
|
||||
#define GPIO_VDD_3V3_SENSORS_EN /* PB2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN2)
|
||||
|
||||
/* Define True logic Power Control in arch agnostic form */
|
||||
|
||||
#define VDD_3V3_SENSORS_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SENSORS_EN, (on_true))
|
||||
|
||||
#define VTX_9V_EN(on_true) px4_arch_gpiowrite(GPIO_VTX_9V_EN, (on_true))
|
||||
|
||||
#define CAM_SWITCH_CAM1 px4_arch_gpiowrite(GPIO_CAM_SWITCH, false) // low is CAM1
|
||||
#define CAM_SWITCH_CAM2 px4_arch_gpiowrite(GPIO_CAM_SWITCH, true) // high is CAM2
|
||||
#define VDD_5V_PERIPH_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_5V_PERIPH_nEN, !(on_true))
|
||||
#define VDD_5V_HIPOWER_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_5V_HIPOWER_nEN, !(on_true))
|
||||
#define VDD_3V3_SENSORS_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SENSORS4_EN, (on_true))
|
||||
|
||||
/* Tone alarm output */
|
||||
|
||||
@@ -198,10 +196,11 @@
|
||||
|
||||
#define BOARD_ADC_SERVO_VALID (1)
|
||||
|
||||
#define BOARD_ADC_BRICK1_VALID (1)
|
||||
#define BOARD_ADC_BRICK2_VALID (1)
|
||||
#define BOARD_ADC_BRICK1_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK1_VALID))
|
||||
#define BOARD_ADC_BRICK2_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK2_VALID))
|
||||
|
||||
#define BOARD_ADC_SERVO_VALID (1)
|
||||
#define BOARD_ADC_PERIPH_5V_OC (!px4_arch_gpioread(GPIO_VDD_5V_PERIPH_nOC))
|
||||
#define BOARD_ADC_HIPOWER_5V_OC (!px4_arch_gpioread(GPIO_VDD_5V_HIPOWER_nOC))
|
||||
|
||||
|
||||
/* This board provides a DMA pool and APIs */
|
||||
@@ -218,8 +217,6 @@
|
||||
GPIO_VDD_3V3_SENSORS_EN, \
|
||||
GPIO_TONE_ALARM_IDLE, \
|
||||
GPIO_PPM_IN, \
|
||||
GPIO_VTX_9V_EN, \
|
||||
GPIO_CAM_SWITCH, \
|
||||
}
|
||||
|
||||
#define BOARD_ENABLE_CONSOLE_BUFFER
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
#define BOARD_TYPE 1105
|
||||
#define BOARD_FLASH_SECTORS (14)
|
||||
#define BOARD_FLASH_SIZE (16 * 128 * 1024)
|
||||
#define APP_RESERVATION_SIZE (2 * 128 * 1024)
|
||||
#define APP_RESERVATION_SIZE (1 * 128 * 1024)
|
||||
|
||||
#define OSC_FREQ 16
|
||||
|
||||
|
||||
@@ -108,21 +108,21 @@ __END_DECLS
|
||||
************************************************************************************/
|
||||
__EXPORT void board_peripheral_reset(int ms)
|
||||
{
|
||||
/* off */
|
||||
VTX_9V_EN(false);
|
||||
VDD_3V3_SENSORS_EN(false);
|
||||
/* set the peripheral rails off */
|
||||
|
||||
VDD_5V_PERIPH_EN(false);
|
||||
board_control_spi_sensors_power(false, 0xffff);
|
||||
|
||||
/* wait for the peripheral rail to reach GND */
|
||||
usleep(ms * 1000);
|
||||
syslog(LOG_DEBUG, "reset done, %d ms\n", ms);
|
||||
|
||||
/* re-enable power */
|
||||
board_control_spi_sensors_power(true, 0xffff);
|
||||
VDD_3V3_SENSORS_EN(true);
|
||||
VTX_9V_EN(true);
|
||||
|
||||
CAM_SWITCH_CAM1;
|
||||
/* switch the peripheral rail back on */
|
||||
board_control_spi_sensors_power(true, 0xffff);
|
||||
VDD_5V_PERIPH_EN(true);
|
||||
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
@@ -210,6 +210,10 @@ __EXPORT int board_app_initialize(uintptr_t arg)
|
||||
{
|
||||
#if !defined(BOOTLOADER)
|
||||
|
||||
/* Power on Interfaces */
|
||||
VDD_5V_PERIPH_EN(true);
|
||||
VDD_5V_HIPOWER_EN(true);
|
||||
|
||||
/* Need hrt running before using the ADC */
|
||||
|
||||
px4_platform_init();
|
||||
@@ -250,7 +254,6 @@ __EXPORT int board_app_initialize(uintptr_t arg)
|
||||
|
||||
#if defined(FLASH_BASED_PARAMS)
|
||||
static sector_descriptor_t params_sector_map[] = {
|
||||
{14, 128 * 1024, 0x081C0000},
|
||||
{15, 128 * 1024, 0x081E0000},
|
||||
{0, 0, 0},
|
||||
};
|
||||
|
||||
@@ -59,19 +59,12 @@ fi
|
||||
|
||||
param select /data/px4/param/parameters
|
||||
|
||||
# Change defaults before loading in updated parameters from the file
|
||||
# Load in all of the parameters that have been saved in the file
|
||||
param load
|
||||
|
||||
# This was the default pre-v1.16.0 and for folks relying on that
|
||||
# we set it up here
|
||||
param set-default EKF2_EV_CTRL 15
|
||||
# Shouldn't need to do it separately with qshell but set-default
|
||||
# implementation needs to be updated to set it on DSP as well. Until
|
||||
# then need to do it as a separate step.
|
||||
qshell param set-default EKF2_EV_CTRL 15
|
||||
|
||||
# Load in all of the parameters that have been saved in the file
|
||||
# after updating any default values
|
||||
param load
|
||||
|
||||
# IMU (accelerometer / gyroscope)
|
||||
if [ "$PLATFORM" == "M0104" ]; then
|
||||
|
||||
@@ -32,8 +32,6 @@ CONFIG_DRIVERS_IMU_INVENSENSE_IIM42652=y
|
||||
CONFIG_COMMON_INS=y
|
||||
CONFIG_COMMON_LIGHT=y
|
||||
CONFIG_COMMON_MAGNETOMETER=y
|
||||
CONFIG_DRIVERS_MAGNETOMETER_BOSCH_BMM350=y
|
||||
CONFIG_DRIVERS_MAGNETOMETER_LIS2MDL=y
|
||||
CONFIG_DRIVERS_OSD_MSP_OSD=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA226=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA228=y
|
||||
|
||||
@@ -85,43 +85,19 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwtypecmp V6XRT000 V6XRT001
|
||||
then
|
||||
# Internal SPI bus ICM42686p (hard-mounted)
|
||||
icm42688p -6 -R 12 -b 1 -s start
|
||||
# Internal SPI bus ICM42686p (hard-mounted)
|
||||
icm42688p -6 -R 12 -b 1 -s start
|
||||
|
||||
# Internal on IMU SPI BMI088
|
||||
bmi088 -A -R 4 -s start
|
||||
bmi088 -G -R 4 -s start
|
||||
# Internal on IMU SPI BMI088
|
||||
bmi088 -A -R 4 -s start
|
||||
bmi088 -G -R 4 -s start
|
||||
|
||||
# Internal on IMU SPI bus ICM42688p
|
||||
icm42688p -R 6 -b 2 -s start
|
||||
fi
|
||||
# Internal on IMU SPI bus ICM42688p
|
||||
icm42688p -R 6 -b 2 -s start
|
||||
|
||||
if ver hwtypecmp V6XRT002
|
||||
then
|
||||
# Internal SPI bus icm45686 (hard-mounted)
|
||||
icm45686 -R 12 -b 1 -s start
|
||||
# Internal magnetometer on I2c
|
||||
bmm150 -I start
|
||||
|
||||
# Internal on IMU SPI BMI088
|
||||
bmi088 -A -R 4 -s start
|
||||
bmi088 -G -R 4 -s start
|
||||
|
||||
# Internal on IMU SPI bus icm45686
|
||||
icm45686 -R 6 -b 2 -s start
|
||||
fi
|
||||
|
||||
if ver hwtypecmp V6XRT000
|
||||
then
|
||||
# Internal magnetometer on I2c
|
||||
bmm150 -I start
|
||||
fi
|
||||
|
||||
if ver hwtypecmp V6XRT001 V6XRT002
|
||||
then
|
||||
# Internal magnetometer on I2c
|
||||
bmm350 -I start
|
||||
fi
|
||||
|
||||
# External compass on GPS1/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer)
|
||||
ist8310 -X -b 1 -R 10 start
|
||||
|
||||
@@ -297,10 +297,9 @@
|
||||
#define GPIO_HW_VER_SENSE /* GPIO_AD_23 GPIO9 Pin 22 */ ADC_GPIO(5, 22)
|
||||
#define HW_INFO_INIT_PREFIX "V6XRT"
|
||||
|
||||
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 3 // Rev 0, 1 & 2
|
||||
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 2 // Rev 0 & 1
|
||||
#define V6XRT_0 HW_FMUM_ID(0x0) // First Release
|
||||
#define V6XRT_1 HW_FMUM_ID(0x1) // Next Release
|
||||
#define V6XRT_2 HW_FMUM_ID(0x2) // Next Release
|
||||
|
||||
#define BOARD_I2C_LATEINIT 1 /* See Note about SE550 Eanable */
|
||||
|
||||
|
||||
@@ -81,26 +81,6 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
|
||||
initSPIConfigExternal(SPI::CS{GPIO::Port6, GPIO::Pin8}, SPI::DRDY{GPIO::Port1, GPIO::Pin7}), /* GPIO_LPSR_08 GPIO6_IO08 GPIO_EMC_B1_07 GPIO1_IO07*/
|
||||
}),
|
||||
}),
|
||||
|
||||
initSPIFmumID(V6XRT_2, {
|
||||
initSPIBus(SPI::Bus::LPSPI1, {
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM45686, SPI::CS{GPIO::Port2, GPIO::Pin11}, SPI::DRDY{GPIO::Port3, GPIO::Pin19}), /* GPIO_EMC_B2_01 GPIO2_IO11, GPIO_AD_20, GPIO3_IO19 */
|
||||
}, {GPIO::Port2, GPIO::Pin1}), // Power GPIO_EMC_B1_33 GPIO2_IO01
|
||||
|
||||
initSPIBus(SPI::Bus::LPSPI2, {
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM45686, SPI::CS{GPIO::Port3, GPIO::Pin24}, SPI::DRDY{GPIO::Port2, GPIO::Pin7}), /* GPIO_AD_25 GPIO3_IO24, GPIO_EMC_B1_39 GPIO2_IO07 */
|
||||
}, {GPIO::Port1, GPIO::Pin22}), // Power GPIO_EMC_B1_22 GPIO1_IO22
|
||||
|
||||
initSPIBus(SPI::Bus::LPSPI3, {
|
||||
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::Port2, GPIO::Pin18}, SPI::DRDY{GPIO::Port2, GPIO::Pin28}), /* GPIO_EMC_B2_08 GPIO2_IO18, GPIO_EMC_B2_18 GPIO2_IO28 */
|
||||
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::Port2, GPIO::Pin15}), /* GPIO_EMC_B2_05 GPIO2_IO15 */
|
||||
}, {GPIO::Port1, GPIO::Pin14}), // Power GPIO_EMC_B1_14 GPIO1_IO14
|
||||
|
||||
initSPIBusExternal(SPI::Bus::LPSPI6, {
|
||||
initSPIConfigExternal(SPI::CS{GPIO::Port6, GPIO::Pin9}, SPI::DRDY{GPIO::Port1, GPIO::Pin5}), /* GPIO_LPSR_09 GPIO6_IO09 GPIO_EMC_B1_05 GPIO1_IO05*/
|
||||
initSPIConfigExternal(SPI::CS{GPIO::Port6, GPIO::Pin8}, SPI::DRDY{GPIO::Port1, GPIO::Pin7}), /* GPIO_LPSR_08 GPIO6_IO08 GPIO_EMC_B1_07 GPIO1_IO07*/
|
||||
}),
|
||||
}),
|
||||
};
|
||||
|
||||
static constexpr bool unused = validateSPIConfig(px4_spi_buses_all_hw);
|
||||
|
||||
@@ -8,7 +8,7 @@ import tabsPlugin from "@red-asuka/vitepress-plugin-tabs";
|
||||
|
||||
// https://vitepress.dev/reference/site-config
|
||||
export default defineConfig({
|
||||
title: "PX4 Guide (v1.16)",
|
||||
title: "PX4 Guide (main)",
|
||||
description: "PX4 User and Developer Guide",
|
||||
base: process.env.BRANCH_NAME
|
||||
? "/" + process.env.BRANCH_NAME + "/"
|
||||
@@ -31,7 +31,6 @@ export default defineConfig({
|
||||
tabsPlugin(md); //https://github.com/Red-Asuka/vitepress-plugin-tabs
|
||||
},
|
||||
},
|
||||
cleanUrls: true,
|
||||
|
||||
vite: {
|
||||
plugins: [
|
||||
@@ -198,14 +197,11 @@ export default defineConfig({
|
||||
text: "Version",
|
||||
items: [
|
||||
{ text: "main", link: "https://docs.px4.io/main/en/" },
|
||||
{
|
||||
text: "v1.16 (stable)",
|
||||
link: "https://docs.px4.io/v1.16/en/",
|
||||
},
|
||||
{ text: "v1.15", link: "https://docs.px4.io/v1.15/en/" },
|
||||
{ text: "v1.15 (stable)", link: "https://docs.px4.io/v1.15/en/" },
|
||||
{ text: "v1.14", link: "https://docs.px4.io/v1.14/en/" },
|
||||
{ text: "v1.13", link: "https://docs.px4.io/v1.13/en/" },
|
||||
{ text: "v1.12", link: "https://docs.px4.io/v1.12/en/" },
|
||||
{ text: "v1.11", link: "https://docs.px4.io/v1.11/en/" },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
param set-default ASPD_DO_CHECKS 19
|
||||
param set-default ASPD_FALLBACK_GW 1
|
||||
param set-default ASPD_FALLBACK 1
|
||||
param set-default BAT1_N_CELLS 4
|
||||
param set-default BAT1_V_CHARGED 4.2000
|
||||
param set-default BAT1_V_EMPTY 2.9000
|
||||
@@ -61,4 +61,4 @@ param set-default PWM_AUX_TIM3 100
|
||||
param set-default SDLOG_PROFILE 17
|
||||
param set-default SENS_EN_MS4525DO 1
|
||||
param set-default TRIM_PITCH 0.1000
|
||||
# Make sure to add all params from the current airframe (ID=2100) as well
|
||||
# Make sure to add all params from the current airframe (ID=2100) as well
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
param set-default ASPD_DO_CHECKS 19
|
||||
param set-default ASPD_FALLBACK_GW 1
|
||||
param set-default ASPD_FALLBACK 1
|
||||
param set-default BAT1_N_CELLS 4
|
||||
param set-default BAT1_V_CHARGED 4.2000
|
||||
param set-default BAT1_V_EMPTY 2.5000
|
||||
@@ -80,4 +80,4 @@ param set-default SENS_EN_MS4525DO 1
|
||||
param set-default SER_TEL1_BAUD 115200
|
||||
param set-default TRIM_PITCH -0.4000
|
||||
param set-default UAVCAN_ENABLE 0
|
||||
# Make sure to add all params from the current airframe (ID=2100) as well
|
||||
# Make sure to add all params from the current airframe (ID=2100) as well
|
||||
|
||||
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 463 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 117 KiB |
@@ -7,7 +7,7 @@
|
||||
"files": [
|
||||
{
|
||||
"source": "docs/en/**/*.md",
|
||||
"ignore": ["/docs/en/_sidebar.md"],
|
||||
"ignore": ["/docs/en/_sidebar.md","docs/en/advanced_config/parameter_reference.md"],
|
||||
"translation": "docs/%two_letters_code%/**/%original_file_name%"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
- [Introduction](index.md)
|
||||
|
||||
- [Basic Concepts](getting_started/px4_basic_concepts.md)
|
||||
|
||||
- [Multicopters](frames_multicopter/index.md)
|
||||
|
||||
- [Features](features_mc/index.md)
|
||||
- [Flight Modes](flight_modes_mc/index.md)
|
||||
- [Position Mode (MC)](flight_modes_mc/position.md)
|
||||
@@ -54,6 +56,7 @@
|
||||
- [DJI F450 (CUAV v5 nano)](frames_multicopter/dji_f450_cuav_5nano.md)
|
||||
|
||||
- [Planes (Fixed-Wing)](frames_plane/index.md)
|
||||
|
||||
- [Assembly](assembly/assembly_fw.md)
|
||||
- [Config/Tuning](config_fw/index.md)
|
||||
- [Auto-tune](config/autotune_fw.md)
|
||||
@@ -81,6 +84,7 @@
|
||||
- [Wing Wing Z84 (Pixracer)](frames_plane/wing_wing_z84.md)
|
||||
|
||||
- [VTOL](frames_vtol/index.md)
|
||||
|
||||
- [Assembly](assembly/assembly_vtol.md)
|
||||
- [VTOL Config/Tuning](config_vtol/index.md)
|
||||
- [Auto-tune](config/autotune_vtol.md)
|
||||
@@ -105,6 +109,7 @@
|
||||
- [Complete Vehicles](complete_vehicles_vtol/index.md)
|
||||
|
||||
- [Operations](config/operations.md)
|
||||
|
||||
- [Safety](config/safety_intro.md)
|
||||
- [Safety Configuration (Failsafes)](config/safety.md)
|
||||
- [Failsafe Simulation](config/safety_simulation.md)
|
||||
@@ -125,6 +130,7 @@
|
||||
- [QGroundControl Flight-Readiness Status](flying/pre_flight_checks.md)
|
||||
|
||||
- [Hardware Selection & Setup](hardware/drone_parts.md)
|
||||
|
||||
- [Flight Controllers (Autopilots)](flight_controller/index.md)
|
||||
- [Flight Controller Selection](getting_started/flight_controller_selection.md)
|
||||
- [Pixhawk Series](flight_controller/pixhawk_series.md)
|
||||
@@ -327,7 +333,6 @@
|
||||
- [FrSky Telemetry](peripherals/frsky_telemetry.md)
|
||||
- [TBS Crossfire (CRSF) Telemetry](telemetry/crsf_telemetry.md)
|
||||
- [Satellite Comms (Iridium/RockBlock)](advanced_features/satcom_roadblock.md)
|
||||
|
||||
- [Power Systems](power_systems/index.md)
|
||||
- [Battery Estimation Tuning](config/battery.md)
|
||||
- [Battery Chemistry Overview](power_systems/battery_chemistry.md)
|
||||
@@ -394,6 +399,7 @@
|
||||
- [Full Parameter Reference](advanced_config/parameter_reference.md)
|
||||
|
||||
- [Other Vehicles](airframes/index.md)
|
||||
|
||||
- [Airships (experimental)](frames_airship/index.md)
|
||||
- [Autogyros (experimental)](frames_autogyro/index.md)
|
||||
- [ThunderFly Auto-G2 (Holybro pix32)](frames_autogyro/thunderfly_auto_g2.md)
|
||||
@@ -800,8 +806,10 @@
|
||||
- [Test MC_05 - Indoor Flight (Manual Modes)](test_cards/mc_05_indoor_flight_manual_modes.md)
|
||||
- [Unit Tests](test_and_ci/unit_tests.md)
|
||||
- [Continuous Integration](test_and_ci/continous_integration.md)
|
||||
- [MAVSDK Integration Testing](test_and_ci/integration_testing_mavsdk.md)
|
||||
- [ROS Integration Testing](test_and_ci/integration_testing.md)
|
||||
- [Integration Testing](test_and_ci/integration_testing.md)
|
||||
- [MAVSDK Integration Testing](test_and_ci/integration_testing_mavsdk.md)
|
||||
- [PX4 ROS2 Interface Library Integration Testing](test_and_ci/integration_testing_px4_ros2_interface.md)
|
||||
- [ROS 1 Integration Testing](test_and_ci/integration_testing_ros1_mavros.md)
|
||||
- [Docker Containers](test_and_ci/docker.md)
|
||||
- [Maintenance](test_and_ci/maintenance.md)
|
||||
- [Drone Apps & APIs](robotics/index.md)
|
||||
@@ -835,9 +843,8 @@
|
||||
- [Terminology/Notation](contribute/notation.md)
|
||||
- [Licenses](contribute/licenses.md)
|
||||
- [Releases](releases/index.md)
|
||||
- [main (alpha)](https://docs.px4.io/main/en/releases/main.html)
|
||||
- [1.16 (stable)](releases/1.15.md)
|
||||
- [1.15](releases/1.15.md)
|
||||
- [main (alpha)](releases/main.md)
|
||||
- [1.15 (stable)](releases/1.15.md)
|
||||
- [1.14](releases/1.14.md)
|
||||
- [1.13](releases/1.13.md)
|
||||
- [1.12](releases/1.12.md)
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<!-- GENERATED CONTENT: DO NOT EDIT -->
|
||||
- [Introduction](/index.md)
|
||||
|
||||
- [Basic Concepts](/getting_started/px4_basic_concepts.md)
|
||||
|
||||
- [Multicopters](/frames_multicopter/index.md)
|
||||
|
||||
- [Features](/features_mc/index.md)
|
||||
- [Flight Modes](/flight_modes_mc/index.md)
|
||||
- [Position Mode (MC)](/flight_modes_mc/position.md)
|
||||
@@ -55,6 +57,7 @@
|
||||
- [DJI F450 (CUAV v5 nano)](/frames_multicopter/dji_f450_cuav_5nano.md)
|
||||
|
||||
- [Planes (Fixed-Wing)](/frames_plane/index.md)
|
||||
|
||||
- [Assembly](/assembly/assembly_fw.md)
|
||||
- [Config/Tuning](/config_fw/index.md)
|
||||
- [Auto-tune](/config/autotune_fw.md)
|
||||
@@ -82,6 +85,7 @@
|
||||
- [Wing Wing Z84 (Pixracer)](/frames_plane/wing_wing_z84.md)
|
||||
|
||||
- [VTOL](/frames_vtol/index.md)
|
||||
|
||||
- [Assembly](/assembly/assembly_vtol.md)
|
||||
- [VTOL Config/Tuning](/config_vtol/index.md)
|
||||
- [Auto-tune](/config/autotune_vtol.md)
|
||||
@@ -106,6 +110,7 @@
|
||||
- [Complete Vehicles](/complete_vehicles_vtol/index.md)
|
||||
|
||||
- [Operations](/config/operations.md)
|
||||
|
||||
- [Safety](/config/safety_intro.md)
|
||||
- [Safety Configuration (Failsafes)](/config/safety.md)
|
||||
- [Failsafe Simulation](/config/safety_simulation.md)
|
||||
@@ -126,6 +131,7 @@
|
||||
- [QGroundControl Flight-Readiness Status](/flying/pre_flight_checks.md)
|
||||
|
||||
- [Hardware Selection & Setup](/hardware/drone_parts.md)
|
||||
|
||||
- [Flight Controllers (Autopilots)](/flight_controller/index.md)
|
||||
- [Flight Controller Selection](/getting_started/flight_controller_selection.md)
|
||||
- [Pixhawk Series](/flight_controller/pixhawk_series.md)
|
||||
@@ -160,7 +166,7 @@
|
||||
- [AirMind MindPX](/flight_controller/mindpx.md)
|
||||
- [AirMind MindRacer](/flight_controller/mindracer.md)
|
||||
- [ARK Electronics ARKV6X](/flight_controller/ark_v6x.md)
|
||||
- [ARK FPV Flight Controller](/flight_controller/ark_fpv.md)
|
||||
- [ARK FPV Flight Controller](/flight_controller/ark_fpv.md)
|
||||
- [ARK Pi6X Flow Flight Controller](/flight_controller/ark_pi6x.md)
|
||||
- [CUAV X7](/flight_controller/cuav_x7.md)
|
||||
- [CUAV Nora](/flight_controller/cuav_nora.md)
|
||||
@@ -176,7 +182,7 @@
|
||||
- [Holybro Kakute H7v2](/flight_controller/kakuteh7v2.md)
|
||||
- [Holybro Kakute H7mini](/flight_controller/kakuteh7mini.md)
|
||||
- [Holybro Kakute H7](/flight_controller/kakuteh7.md)
|
||||
- [Holybro Kakute H7 Wing](/flight_controller/kakuteh7-wing.md)
|
||||
- [Holybro Kakute H7 Wing](flight_controller/kakuteh7-wing.md)
|
||||
- [Holybro Durandal](/flight_controller/durandal.md)
|
||||
- [Wiring Quickstart](/assembly/quick_start_durandal.md)
|
||||
- [Holybro Pix32 v5](/flight_controller/holybro_pix32_v5.md)
|
||||
@@ -249,7 +255,7 @@
|
||||
- [GNSS (GPS)](/gps_compass/index.md)
|
||||
- [ARK GPS (CAN)](/dronecan/ark_gps.md)
|
||||
- [ARK SAM GPS](/gps_compass/ark_sam_gps.md)
|
||||
- [ARK TESEO GPS](/dronecan/ark_teseo_gps.md)
|
||||
- [ARK TESEO GPS](/dronecan/ark_teseo_gps.md)
|
||||
- [CUAV NEO 3 GPS](/gps_compass/gps_cuav_neo_3.md)
|
||||
- [CUAV NEO 3 Pro GPS (CAN)](/gps_compass/gps_cuav_neo_3pro.md)
|
||||
- [CUAV NEO 3X GPS (CAN)](/gps_compass/gps_cuav_neo_3x.md)
|
||||
@@ -322,13 +328,10 @@
|
||||
- [ARK Electron Microhard Serial Telemetry Radio](/telemetry/ark_microhard_serial.md)
|
||||
- [Holybro Microhard P900 Telemetry Radio](/telemetry/holybro_microhard_p900_radio.md)
|
||||
- [CUAV P8 Telemetry Radio](/telemetry/cuav_p8_radio.md)
|
||||
- [J.Fi Wireless Telemetry Module](/telemetry/jfi_telemetry.md)
|
||||
- [HolyBro XBP9X - Discontinued](/telemetry/holybro_xbp9x_radio.md)
|
||||
|
||||
- [FrSky Telemetry](/peripherals/frsky_telemetry.md)
|
||||
- [TBS Crossfire (CRSF) Telemetry](/telemetry/crsf_telemetry.md)
|
||||
- [Satellite Comms (Iridium/RockBlock)](/advanced_features/satcom_roadblock.md)
|
||||
|
||||
- [Power Systems](/power_systems/index.md)
|
||||
- [Battery Estimation Tuning](/config/battery.md)
|
||||
- [Battery Chemistry Overview](/power_systems/battery_chemistry.md)
|
||||
@@ -395,6 +398,7 @@
|
||||
- [Full Parameter Reference](/advanced_config/parameter_reference.md)
|
||||
|
||||
- [Other Vehicles](/airframes/index.md)
|
||||
|
||||
- [Airships (experimental)](/frames_airship/index.md)
|
||||
- [Autogyros (experimental)](/frames_autogyro/index.md)
|
||||
- [ThunderFly Auto-G2 (Holybro pix32)](/frames_autogyro/thunderfly_auto_g2.md)
|
||||
@@ -709,10 +713,6 @@
|
||||
- [YawEstimatorStatus](/msg_docs/YawEstimatorStatus.md)
|
||||
- [VehicleStatusV0](/msg_docs/VehicleStatusV0.md)
|
||||
- [MAVLink Messaging](/middleware/mavlink.md)
|
||||
- [Adding Messages](/mavlink/adding_messages.md)
|
||||
- [Streaming Messages](/mavlink/streaming_messages.md)
|
||||
- [Receiving Messages](/mavlink/receiving_messages.md)
|
||||
- [Custom MAVLink Messages](/mavlink/custom_messages.md)
|
||||
- [Standard Modes Protocol](/mavlink/standard_modes.md)
|
||||
- [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](/middleware/uxrce_dds.md)
|
||||
- [Modules & Commands](/modules/modules_main.md)
|
||||
@@ -836,9 +836,8 @@
|
||||
- [Terminology/Notation](/contribute/notation.md)
|
||||
- [Licenses](/contribute/licenses.md)
|
||||
- [Releases](/releases/index.md)
|
||||
- [main (alpha)](/https://docs.px4.io/main/en/releases/main.html)
|
||||
- [1.16 (stable)](/releases/1.15.md)
|
||||
- [1.15](/releases/1.15.md)
|
||||
- [main (alpha)](/releases/main.md)
|
||||
- [1.15 (stable)](/releases/1.15.md)
|
||||
- [1.14](/releases/1.14.md)
|
||||
- [1.13](/releases/1.13.md)
|
||||
- [1.12](/releases/1.12.md)
|
||||
- [1.12](/releases/1.12.md)
|
||||
@@ -3,9 +3,10 @@
|
||||
This section contains topics about the core actuators used for flight control (ESC/motors, and servos), and how they are assigned to the flight controller outputs, configured, and calibrated.
|
||||
|
||||
- [Actuator Allocation](../config/actuators.md) — Configure flight controller outputs for specific functions and ESC/servo types.
|
||||
|
||||
- [ESCs & Motors](../peripherals/esc_motors.md) — ESCs such as [DShot](../peripherals/dshot.md) (recommended) and DroneCAN.
|
||||
- [ESC Calibration](../advanced_config/esc_calibration.md) — Calibration for PWM ESC (not required for DShot/CAN ESC/servos).
|
||||
|
||||
## See Also
|
||||
|
||||
- [Peripherals](../peripherals/index.md) - includes non-core actuators such as grippers, parachutes, etc.
|
||||
- [Peripherals](../peripherals/index.md) - includes non-core actuators such as grippers, parachutes, etc.
|
||||
@@ -498,8 +498,8 @@ A valid ULog parser must fulfill the following requirements:
|
||||
- [MAVGAnalysis](https://github.com/ecmnet/MAVGCL): Java, ULog streaming via MAVLink and parser for plotting and analysis.
|
||||
- [PlotJuggler](https://github.com/facontidavide/PlotJuggler): C++/Qt application to plot logs and time series. Supports ULog since version 2.1.3.
|
||||
- [ulogreader](https://github.com/maxsun/ulogreader): Javascript, ULog reader and parser outputs log in JSON object format.
|
||||
- [Foxglove Studio](https://github.com/foxglove/studio): an integrated visualization and diagnosis tool for robotics
|
||||
(Typescript ULog parser: https://github.com/foxglove/ulog).
|
||||
- [Foxglove](https://foxglove.dev): an integrated visualization and diagnosis tool for robotics data that supports ULog files.
|
||||
- [TypeScript ULog parser](https://github.com/foxglove/ulog): TypeScript, ULog reader that outputs JS objects.
|
||||
|
||||
## File Format Version History
|
||||
|
||||
|
||||
@@ -9,6 +9,14 @@ Developed by world-class developers from industry and academia, and supported by
|
||||
|
||||
:::tip
|
||||
This guide contains everything you need to assemble, configure, and safely fly a PX4-based vehicle. Interested in contributing? Check out the [Development](development/development.md) section.
|
||||
|
||||
:::
|
||||
|
||||
:::warning
|
||||
This guide is for the _development_ version of PX4 (`main` branch).
|
||||
Use the **Version** selector to find the current _stable_ version.
|
||||
|
||||
Documented changes since the stable release are captured in the evolving [release note](releases/main.md).
|
||||
:::
|
||||
|
||||
## How Do I Get Started?
|
||||
@@ -89,7 +97,7 @@ You can access these from the Languages menu (top right):
|
||||
|
||||

|
||||
|
||||
<!--@include: _contributors.md -->
|
||||
<!--@include: _contributors.md-->
|
||||
|
||||
## License
|
||||
|
||||
@@ -108,6 +116,7 @@ Select the links below to display the calendar in your timezone (and to add it t
|
||||
|
||||
:::tip
|
||||
The calendar default timezone is Central European Time (CET).
|
||||
|
||||
:::
|
||||
|
||||
<iframe src="https://calendar.google.com/calendar/embed?title=Dronecode%20Calendar&mode=WEEK&height=600&wkst=1&bgcolor=%23FFFFFF&src=linuxfoundation.org_g21tvam24m7pm7jhev01bvlqh8%40group.calendar.google.com&color=%23691426&ctz=Europe%2FZurich" style="border-width:0" width="800" height="600" frameborder="0" scrolling="no"></iframe>
|
||||
|
||||
@@ -38,7 +38,7 @@ MAVLink applications, such as ground stations, can also control the gripper usin
|
||||
|
||||
PX4 gripper support is tied to the package delivery feature, which must be enabled and configured in order to be able to use a gripper.
|
||||
|
||||
1. Ensure your board has the Payload Deliverer module enabled: CONFIG_MODULES_PAYLOAD_DELIVERER.
|
||||
1. Set [PD_GRIPPER_EN](../advanced_config/parameter_reference.md#PD_GRIPPER_EN) parameter to 1 (reboot required after change).
|
||||
1. Set [PD_GRIPPER_TYPE](../advanced_config/parameter_reference.md#PD_GRIPPER_TYPE) to match your gripper.
|
||||
For example, set to `Servo` for a [Servo Gripper](gripper_servo.md).
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PX4-Autopilot v1.15 Release Notes
|
||||
|
||||
<Badge type="tip" text="Stable"/>
|
||||
|
||||
The v1.15 release brings lots of new upgrades and fixes, thanks in part to the tremendous community response to the 1.14 release.
|
||||
In particular, PX4 v1.15 brings significant improvements for developers and integrators using PX4 as a target through [ROS 2](../ros2/index.md) and the [uXRCE-DDS middleware](../middleware/uxrce_dds.md).
|
||||
In addition to networking and middleware updates, the new [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) allows flight modes written as ROS 2 applications to be peers of PX4 flight modes.
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
# PX4-Autopilot v1.16.0 Release Notes
|
||||
|
||||
<Badge type="info" text="Stable" />
|
||||
|
||||
PX4 v1.16 builds on the momentum of v1.15 with significant new features and expanded hardware support thanks to our community contributions.
|
||||
This release introduces bidirectional DShot support sponsored by ARK, a full rover rework with dedicated firmware builds and modular control modes for Ackermann, differential and mecanum rovers, and a switch to Gazebo Harmonic LTS for more reliable simulation.
|
||||
Developers will benefit from the new ROS 2 Message Translation Node for dynamic message versioning and integrated log encryption that embeds decryption keys directly in logs.
|
||||
We also added fresh sensor drivers and board support across our partner ecosystem alongside dozens of improvements in control, estimation and safety.
|
||||
PX4 v1.16 raises the bar for performance and usability. Upgrade today and let us know your feedback on GitHub.
|
||||
|
||||
## Read Before Upgrading
|
||||
|
||||
Please continue reading for [upgrade instructions](#upgrade-guide).
|
||||
|
||||
## Major Changes
|
||||
|
||||
- [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry) - [Sponsored by ARK] ([PX4-Autopilot#23863](https://github.com/PX4/PX4-Autopilot/pull/23863))
|
||||
- **[Rover](../frames_rover/index.md) support rework**
|
||||
- New dedicated firmware build for rovers (airframe IDs 50000–52000)
|
||||
- Separate modules for Ackermann, differential and mecanum rovers, each with manual, acro, stabilized, position and auto modes
|
||||
- Shared pure-pursuit guidance library for all rover modules
|
||||
- Legacy rover position control module deprecated in favor of the new modules
|
||||
- Gazebo Harmonic LTS release replaces Gazebo Garden as the version supported by PX4.
|
||||
- [ROS 2 Message Translation Node](../ros2/px4_ros2_msg_translation_node.md) to translate PX4 messages from one definition version to another dynamically. ([PX4-Autopilot#24113](https://github.com/PX4/PX4-Autopilot/pull/24113))
|
||||
- [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file.
|
||||
|
||||
## Upgrade Guide
|
||||
|
||||
- VOXL 2 boards now explicitly set EKF2_EV_CTRL=15 (it had fallen back to 0 globally), so event-based optical flow keeps running ([PX4-Autopilot#24648](https://github.com/PX4/PX4-Autopilot/pull/24648))
|
||||
- Ethernet static IP changed from 192.168.0.3 to 10.41.10.2 to avoid common network conflicts ([PX4-Autopilot#22517](https://github.com/PX4/PX4-Autopilot/pull/22517))
|
||||
- SF45 lidar no longer auto-starts on TELEM2—add serial_port: TELEM2 (or your preferred port) in its module config if you still want it there ([PX4-Autopilot#24602](https://github.com/PX4/PX4-Autopilot/pull/24602))
|
||||
|
||||
## Other changes
|
||||
|
||||
### Hardware Support
|
||||
|
||||
- **[New Hardware]** Boards: ARK FPV FC ([PX4-Autopilot#23830](https://github.com/PX4/PX4-Autopilot/pull/23830))
|
||||
- **[New Hardware]** board: add cuav 7-nano ([PX4-Autopilot#23414](https://github.com/PX4/PX4-Autopilot/pull/23414))
|
||||
- **[New Hardware]** add new board corvon743v1 ([PX4-Autopilot#24769](https://github.com/PX4/PX4-Autopilot/pull/24769))
|
||||
- **[New Hardware]** boards: bluerobotics: navigator: Add initial support ([PX4-Autopilot#24018](https://github.com/PX4/PX4-Autopilot/pull/24018))
|
||||
- **[New Hardware]** boards: add new board micoair743-v2 ([PX4-Autopilot#24147](https://github.com/PX4/PX4-Autopilot/pull/24147))
|
||||
- **[New Hardware]** boards: add new board micoair h743 ([PX4-Autopilot#23218](https://github.com/PX4/PX4-Autopilot/pull/23218))
|
||||
- **[New Hardware]** boards: Add FMUv6s target ([PX4-Autopilot#24512](https://github.com/PX4/PX4-Autopilot/pull/24512))
|
||||
- **[New Hardware]** manifest: Add Skynode S baseboard ([PX4-Autopilot#23927](https://github.com/PX4/PX4-Autopilot/pull/23927))
|
||||
- **[New Hardware]** Add Tropic VMU board support (Baseboard for Teensy 4.1) ([PX4-Autopilot#23257](https://github.com/PX4/PX4-Autopilot/pull/23257))
|
||||
- **[New Hardware]** boards: add new board X-MAV AP-H743v2 ([PX4-Autopilot#23697](https://github.com/PX4/PX4-Autopilot/pull/23697))
|
||||
- **[New Hardware]** 3DR boards: Support for 3DR Control Zero H7 OEM Rev G ([PX4-Autopilot#23551](https://github.com/PX4/PX4-Autopilot/pull/23551))
|
||||
- **[New Hardware]** new board support ZeroOne x6 ([PX4-Autopilot#23623](https://github.com/PX4/PX4-Autopilot/pull/23623))
|
||||
|
||||
### Common
|
||||
|
||||
- [Optical flow scaling factor - SENS_FLOW_SCALE](../sensor/optical_flow.md#scale-factor). ([PX4-Autopilot#23936](https://github.com/PX4/PX4-Autopilot/pull/23936)).
|
||||
- Reintroduce optional parameter versioning mechanism for airframe maintainers ([PX4-Autopilot#22813](https://github.com/PX4/PX4-Autopilot/pull/22813))
|
||||
|
||||
- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)).
|
||||
- [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage.
|
||||
- Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number).
|
||||
- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed.
|
||||
The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)).
|
||||
- [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file.
|
||||
This makes log decryption much easier, as there is no need to download or identify a separate key file.
|
||||
([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)).
|
||||
- The generic mission command timeout [MIS_COMMAND_TOUT](../advanced_config/parameter_reference.md#MIS_COMMAND_TOUT) parameter replaces the delivery-specific `MIS_PD_TO` parameter.
|
||||
Mission commands that may take some time to complete, such as those for controlling gimbals, winches, and grippers, will progress to the next item when either feedback is received or the timeout expires.
|
||||
This is often used to provide a minimum delay for hardware that does not provide completion feedback, so that it can reach the commanded state before the mission progresses.
|
||||
([PX4-Autopilot#23960](https://github.com/PX4/PX4-Autopilot/pull/23960)).
|
||||
- **[uORB]** Introduce a [version field](../middleware/uorb.md#message-versioning) for a subset of uORB messages ([PX4-Autopilot#23850](https://github.com/PX4/PX4-Autopilot/pull/23850))
|
||||
- [Compass calibration](../config/compass.md) disables internal compasses if an external compass is available.
|
||||
This typically reduces false warnings due to magnetometer inconsistencies.
|
||||
([PX4-Autopilot#24316](https://github.com/PX4/PX4-Autopilot/pull/24316)).
|
||||
|
||||
### Control
|
||||
|
||||
- [Sponsored by ARK] [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry) ([PX4-Autopilot#23863](https://github.com/PX4/PX4-Autopilot/pull/23863))
|
||||
- Make control allocation and actuator effectiveness a non-module-specific library ([PX4-Autopilot#24196](https://github.com/PX4/PX4-Autopilot/pull/24196))
|
||||
- Spacecraft Build and Bare Control Allocator ([PX4-Autopilot#24221](https://github.com/PX4/PX4-Autopilot/pull/24221))
|
||||
|
||||
- Configurable multicopter orbit-mode yaw via `MC_ORBIT_YAW_MOD` ([PX4-Autopilot#23358](https://github.com/PX4/PX4-Autopilot/pull/23358))
|
||||
- Collision prevention now works in manual (acceleration-based) flight mode (`MPC_POS_MODE`) ([PX4-Autopilot#23507](https://github.com/PX4/PX4-Autopilot/pull/23507))
|
||||
|
||||
### Estimation
|
||||
|
||||
- EKF2: ellipsoidal earth navigation ([PX4-Autopilot#23854](https://github.com/PX4/PX4-Autopilot/pull/23854))
|
||||
- EKF2: Terrain state ([PX4-Autopilot#23263](https://github.com/PX4/PX4-Autopilot/pull/23263))
|
||||
- ekf2: add mag type init ([PX4-Autopilot#23185](https://github.com/PX4/PX4-Autopilot/pull/23185))
|
||||
- ekf2: Optical flow enabled by default ([PX4-Autopilot#23436](https://github.com/PX4/PX4-Autopilot/pull/23436))
|
||||
|
||||
- Position-loss failsafe delay removed; triggers 1 s after loss (see Common)
|
||||
|
||||
### Sensors
|
||||
|
||||
- Implemented AUAV absolute/differential pressure sensor support ([PX4-Autopilot#23656](https://github.com/PX4/PX4-Autopilot/pull/23656))
|
||||
- Implemented temperature sensor support for INA228 / INA238 ([PX4-Autopilot#23639](https://github.com/PX4/PX4-Autopilot/pull/23639))
|
||||
- Add Ublox ZED-F9P-15B ([PX4-Autopilot#22744](https://github.com/PX4/PX4-Autopilot/pull/22744))
|
||||
- Mag cal: automatically disable internal mags if external ones are available ([PX4-Autopilot#24316](https://github.com/PX4/PX4-Autopilot/pull/24316))
|
||||
- BMP581: Add Bosch BMP581 barometer ([PX4-Autopilot#23064](https://github.com/PX4/PX4-Autopilot/pull/23064))
|
||||
- Murata SCH16T IMU driver ([PX4-Autopilot#22914](https://github.com/PX4/PX4-Autopilot/pull/22914))
|
||||
- ST IIS2MDC Magnetometer driver ([PX4-Autopilot#23023](https://github.com/PX4/PX4-Autopilot/pull/23023))
|
||||
- Include distance sensor in dds topics ([PX4-Autopilot#24121](https://github.com/PX4/PX4-Autopilot/pull/24121))
|
||||
- drivers: magnetometer: mmc5983ma: Add SPI support ([PX4-Autopilot#23925](https://github.com/PX4/PX4-Autopilot/pull/23925))
|
||||
- drivers/magnetometer/ak09916: Add support to AK09915 ([PX4-Autopilot#23909](https://github.com/PX4/PX4-Autopilot/pull/23909))
|
||||
- Add Bosch BMM350 magnetometer ([PX4-Autopilot#23362](https://github.com/PX4/PX4-Autopilot/pull/23362))
|
||||
|
||||
- Compass calibration now disables internal compass when external unit present, reducing false warnings ([PX4-Autopilot#24316](https://github.com/PX4/PX4-Autopilot/pull/24316))
|
||||
|
||||
### Simulation
|
||||
|
||||
- **SIH**:
|
||||
- The SIH on SITL [custom takeoff location](../sim_sih/index.md#set-custom-takeoff-location) in now set using the normal unscaled GPS position values, where previously the value needed to be multiplied by 1E7.
|
||||
([PX4-Autopilot#23363](https://github.com/PX4/PX4-Autopilot/pull/23363)).
|
||||
- SIH now supports the standard VTOL airframe
|
||||
([PX4-Autopilot#24175](https://github.com/PX4/PX4-Autopilot/pull/24175)).
|
||||
- **Gazebo**:
|
||||
- Gazebo Harmonic LTS release replaces Gazebo Garden as the version supported by PX4.
|
||||
The default installer scripts (used for CI) and documentation have been updated.
|
||||
This is required because Garden end-of-life is Nov 2024.
|
||||
([PX4-Autopilot#23603](https://github.com/PX4/PX4-Autopilot/pull/23603))
|
||||
- New vehicle model `x500_lidar_2d` — [x500 Quadrotor with 2D Lidar](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar). ([PX4-Autopilot#22418](https://github.com/PX4/PX4-Autopilot/pull/22418), [PX4-gazebo-models#41](https://github.com/PX4/PX4-gazebo-models/pull/41)).
|
||||
- New vehicle model `x500_lidar_front` — [X500 Quadrotor with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing). ([PX4-Autopilot#23879](https://github.com/PX4/PX4-Autopilot/pull/23879), [PX4-gazebo-models#62](https://github.com/PX4/PX4-gazebo-models/pull/62/files)).
|
||||
- New vehicle model `x500_lidar_down` — [X500 Quadrotor with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing). ([PX4-Autopilot#23879](https://github.com/PX4/PX4-Autopilot/pull/23879), [PX4-gazebo-models#62](https://github.com/PX4/PX4-gazebo-models/pull/62/files)).
|
||||
- New vehicle model `r1_rover` — [Aion Robotics R1 Rover](../sim_gazebo_gz/vehicles.md#differential-rover) ([PX4-Autopilot#22402](https://github.com/PX4/PX4-Autopilot/pull/22402) and [PX4-gazebo-models#21](https://github.com/PX4/PX4-gazebo-models/pull/21)).
|
||||
- New vehicle model `rover_ackermann` — [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) ([PX4-Autopilot#23383](https://github.com/PX4/PX4-Autopilot/pull/23383) and [PX4-gazebo-models#46](https://github.com/PX4/PX4-gazebo-models/pull/46)).
|
||||
- New vehicle model `x500_gimbal` — [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) ([PX4-Autopilot#23382](https://github.com/PX4/PX4-Autopilot/pull/23382) and [PX4-gazebo-models#47](https://github.com/PX4/PX4-gazebo-models/pull/47) and [PX4-gazebo-models#70](https://github.com/PX4/PX4-gazebo-models/pull/70)).
|
||||
- New vehicle model `quadtailsitter` — [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) ([PX4-Autopilot#23943](https://github.com/PX4/PX4-Autopilot/pull/23943) and [PX4-gazebo-models#65](https://github.com/PX4/PX4-gazebo-models/pull/65)).
|
||||
- New vehicle model `tiltrotor` — [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) ([PX4-Autopilot#24028](https://github.com/PX4/PX4-Autopilot/pull/24028) and [PX4-gazebo-models#66](https://github.com/PX4/PX4-gazebo-models/pull/66)).
|
||||
- [Faster than Real-time Simulation](../simulation/index.md#simulation_speed) ([PX4-Autopilot#24421](https://github.com/PX4/PX4-Autopilot/pull/24421), [PX4-Autopilot#23783](https://github.com/PX4/PX4-Autopilot/pull/23783))
|
||||
- [PX4-Autopilot#24471](https://github.com/PX4/PX4-Autopilot/pull/24471): Gazebo: Moving platform
|
||||
|
||||
### uXRCE-DDS / ROS2
|
||||
|
||||
- [PX4-Autopilot#24113](https://github.com/PX4/PX4-Autopilot/pull/24113): <Badge type="warning" text="Experimental"/> [ROS 2 Message Translation Node](../ros2/px4_ros2_msg_translation_node.md) to translate PX4 messages from one definition version to another dynamically
|
||||
- dds_topics: add vtol_vehicle_status ([PX4-Autopilot#24582](https://github.com/PX4/PX4-Autopilot/pull/24582))
|
||||
- dds_topics: add home_position ([PX4-Autopilot#24583](https://github.com/PX4/PX4-Autopilot/pull/24583))
|
||||
|
||||
### MAVLink
|
||||
|
||||
- mavlink_ftp: handle relative paths correctly. ([PX4-Autopilot#22980](https://github.com/PX4/PX4-Autopilot/pull/22980))
|
||||
- Parameter to always start mavlink stream via USB. ([PX4-Autopilot#22234](https://github.com/PX4/PX4-Autopilot/pull/22234))
|
||||
- Refactor: MAVLink message handling in one function, reference instead of pointer to main instance ([PX4-Autopilo#23219](https://github.com/PX4/PX4-Autopilot/pull/22234))
|
||||
- mavlink log handler rewrite for improved effeciency ([PX4-Autopilo#23219](https://github.com/PX4/PX4-Autopilot/pull/22234))
|
||||
|
||||
### Multi-Rotor
|
||||
|
||||
- [Multirotor] add yaw torque low pass filter ([PX4-Autopilot#24173](https://github.com/PX4/PX4-Autopilot/pull/24173))
|
||||
- Add gz model for quadtailsitter ([PX4-Autopilot#23943](https://github.com/PX4/PX4-Autopilot/pull/23943))
|
||||
|
||||
- Allow system-default [multicopter orbit mode](../flight_modes_mc/orbit.md) yaw behaviour to be configured, using the parameter [MC_ORBIT_YAW_MOD](../advanced_config/parameter_reference.md#MC_ORBIT_YAW_MOD) ([PX4-Autopilot#23358](https://github.com/PX4/PX4-Autopilot/pull/23358))
|
||||
- Adapted the [Collision Prevention](../computer_vision/collision_prevention.md) implementation to work in the default manual flight mode (Acceleration Based) [MPC_POS_MODE](../advanced_config/parameter_reference.md#MPC_POS_MODE). ([PX4-Autopilot#23507](https://github.com/PX4/PX4-Autopilot/pull/23507))
|
||||
|
||||
### VTOL
|
||||
|
||||
- vtol_type: Added position feedback to VTOL backward transition. ([PX4-Autopilo#23731](https://github.com/PX4/PX4-Autopilot/pull/23731))
|
||||
- dds_topics: add vtol_vehicle_status. ([PX4-Autopilo#24582](https://github.com/PX4/PX4-Autopilot/pull/24582))
|
||||
- vtol: reduce schedule frequency, which causes DSHOT150 problems. ([PX4-Autopilo#24727](https://github.com/PX4/PX4-Autopilot/pull/24727))
|
||||
|
||||
### Fixed-wing
|
||||
|
||||
- Fixedwing: fix wheel controller ([PX4-Autopilot#24167](https://github.com/PX4/PX4-Autopilot/pull/24167))
|
||||
- FixedWing: allow position control without valid global position ([PX4-Autopilot#23520](https://github.com/PX4/PX4-Autopilot/pull/23520))
|
||||
- Improvement: Fixed-wing auto takeoff: enable setting takeoff flaps for hand/catapult launch. [PX4-Autopilot#23460](https://github.com/PX4/PX4-Autopilot/pull/23460)
|
||||
|
||||
### Rover
|
||||
|
||||
This release contains a major rework for the rover support in PX4:
|
||||
|
||||
- Complete restructure of the [rover related documentation](../frames_rover/index.md).
|
||||
- New firmware build specifically for [rovers](../config_rover/index.md#flashing-the-rover-build).
|
||||
- New module dedicated to [Ackermann rovers](../frames_rover/index.md#ackermann):
|
||||
- The module currently supports [manual mode](../flight_modes_rover/manual.md#manual-mode), [acro mode](../flight_modes_rover/manual.md#acro-mode), [stabilized mode](../flight_modes_rover/manual.md#stabilized-mode), [position mode](../flight_modes_rover/manual.md#position-mode) and [auto modes](../flight_modes_rover/auto.md).
|
||||
- New module dedicated to [differential rovers](../frames_rover/index.md#differential):
|
||||
- The module currently supports [manual mode](../flight_modes_rover/manual.md#manual-mode), [acro mode](../flight_modes_rover/manual.md#acro-mode), [stabilized mode](../flight_modes_rover/manual.md#stabilized-mode), [position mode](../flight_modes_rover/manual.md#position-mode) and [auto modes](../flight_modes_rover/auto.md).
|
||||
- New module dedicated to [mecanum rovers](../frames_rover/index.md#mecanum):
|
||||
- The module currently supports [manual mode](../flight_modes_rover/manual.md#manual-mode), [acro mode](../flight_modes_rover/manual.md#acro-mode), [stabilized mode](../flight_modes_rover/manual.md#stabilized-mode), [position mode](../flight_modes_rover/manual.md#position-mode) and [auto modes](../flight_modes_rover/auto.md).
|
||||
- Added rover-specific firmware build (`50000–52000`) for Ackermann, differential and mecanum rovers
|
||||
- Restructure of the [rover airframe](../airframes/airframe_reference.md#rover) numbering convention ([PX4-Autopilot#23506](https://github.com/PX4/PX4-Autopilot/pull/23506)).
|
||||
This also introduces several [new rover airframes](../airframes/airframe_reference.md#rover):
|
||||
- Generic Differential Rover `50000`.
|
||||
- Generic Ackermann Rover `51000`.
|
||||
- Axial SCX10 2 Trail Honcho `51001`.
|
||||
- Generic Mecanum Rover `52000`.
|
||||
- Library for the [pure pursuit guidance algorithm](../config_rover/position_tuning.md#pure-pursuit-guidance-logic-info-only) that is shared by all the rover modules.
|
||||
- [Simulation](../frames_rover/index.md#simulation) for differential-steering and Ackermann rovers in gazebo (for release notes see `r1_rover` and `rover_ackermann` in [simulation](#simulation)).
|
||||
- Deprecation of the `rover position control` module: Note that the legacy rover module still exists but has been superseded by the new dedicated modules.
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- standard_modes: add vehicle-type specific standard modes. ([PX4-Autopilot#24011](https://github.com/PX4/PX4-Autopilot/pull/24011))
|
||||
- ci: build all upload to releases. ([PX4-Autopilot#24020](https://github.com/PX4/PX4-Autopilot/pull/24020))
|
||||
- ci: px4-dev container. ([PX4-Autopilot#24002](https://github.com/PX4/PX4-Autopilot/pull/24002))
|
||||
- ci: workflow for ubuntu 24.04. ([PX4-Autopilot#23937](https://github.com/PX4/PX4-Autopilot/pull/23937))
|
||||
- ci: add test for Ubuntu 22.04. ([PX4-Autopilot#23869](https://github.com/PX4/PX4-Autopilot/pull/23869))
|
||||
- ci: try runs-on Dronecode Infra (AWS). ([PX4-Autopilot#23574](https://github.com/PX4/PX4-Autopilot/pull/23574))
|
||||
- ci: replace build workflows. ([PX4-Autopilot#23550](https://github.com/PX4/PX4-Autopilot/pull/23550))
|
||||
@@ -2,8 +2,7 @@
|
||||
|
||||
A list of PX4 release notes, they contain a list of the changes that went into each release, explaining the included features, bug fixes, deprecations and updates in detail.
|
||||
|
||||
- [main](https://docs.px4.io/main/en/releases/main.html) (changes since v1.16)
|
||||
- [v1.16](../releases/1.16.md)
|
||||
- [main](../releases/main.md) (changes since v1.15)
|
||||
- [v1.15](../releases/1.15.md)
|
||||
- [v1.14](../releases/1.14.md)
|
||||
- [v1.13](../releases/1.13.md)
|
||||
|
||||
@@ -1,4 +1,144 @@
|
||||
# PX4-Autopilot Main Release Notes
|
||||
|
||||
This page is on a release branch.
|
||||
<a href="https://docs.px4.io/main/en/releases/main.html">See the latest version here.</a>
|
||||
<Badge type="danger" text="Alpha" />
|
||||
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
const { site } = useData();
|
||||
</script>
|
||||
|
||||
<div v-if="site.title !== 'PX4 Guide (main)'">
|
||||
<div class="custom-block danger">
|
||||
<p class="custom-block-title">This page is on a release bramch, and hence probably out of date. <a href="https://docs.px4.io/main/en/releases/main.html">See the latest version</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
This contains changes to PX4 `main` branch since the last major release ([PX v1.15](../releases/1.15.md)).
|
||||
|
||||
::: warning
|
||||
The PX4 v1.15 release is in beta testing, pending release.
|
||||
Update these notes with features that are going to be in `main` but not the PX4 v1.15 release.
|
||||
:::
|
||||
|
||||
## Read Before Upgrading
|
||||
|
||||
TBD …
|
||||
|
||||
Please continue reading for [upgrade instructions](#upgrade-guide).
|
||||
|
||||
## Major Changes
|
||||
|
||||
- TBD
|
||||
|
||||
## Upgrade Guide
|
||||
|
||||
## Other changes
|
||||
|
||||
### Hardware Support
|
||||
|
||||
- TBD
|
||||
|
||||
### Common
|
||||
|
||||
- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)).
|
||||
- [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage.
|
||||
- Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number).
|
||||
- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed.
|
||||
The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)).
|
||||
- [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file.
|
||||
This makes log decryption much easier, as there is no need to download or identify a separate key file.
|
||||
([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)).
|
||||
- The generic mission command timeout [MIS_COMMAND_TOUT](../advanced_config/parameter_reference.md#MIS_COMMAND_TOUT) parameter replaces the delivery-specific `MIS_PD_TO` parameter.
|
||||
Mission commands that may take some time to complete, such as those for controlling gimbals, winches, and grippers, will progress to the next item when either feedback is received or the timeout expires.
|
||||
This is often used to provide a minimum delay for hardware that does not provide completion feedback, so that it can reach the commanded state before the mission progresses.
|
||||
([PX4-Autopilot#23960](https://github.com/PX4/PX4-Autopilot/pull/23960)).
|
||||
- **[uORB]** Introduce a [version field](../middleware/uorb.md#message-versioning) for a subset of uORB messages ([PX4-Autopilot#23850](https://github.com/PX4/PX4-Autopilot/pull/23850))
|
||||
- [Compass calibration](../config/compass.md) disables internal compasses if an external compass is available.
|
||||
This typically reduces false warnings due to magnetometer inconsistencies.
|
||||
([PX4-Autopilot#24316](https://github.com/PX4/PX4-Autopilot/pull/24316)).
|
||||
|
||||
### Control
|
||||
|
||||
- TBD
|
||||
|
||||
### Estimation
|
||||
|
||||
- TBD
|
||||
|
||||
### Sensors
|
||||
|
||||
- TBD
|
||||
|
||||
### Simulation
|
||||
|
||||
- [SIH]:
|
||||
- The SIH on SITL [custom takeoff location](../sim_sih/index.md#set-custom-takeoff-location) in now set using the normal unscaled GPS position values, where previously the value needed to be multiplied by 1E7.
|
||||
([PX4-Autopilot#23363](https://github.com/PX4/PX4-Autopilot/pull/23363)).
|
||||
- SIH now supports the standard VTOL airframe
|
||||
([PX4-Autopilot#24175](https://github.com/PX4/PX4-Autopilot/pull/24175)).
|
||||
- [Gazebo]:
|
||||
- Gazebo Harmonic LTS release replaces Gazebo Garden as the version supported by PX4.
|
||||
The default installer scripts (used for CI) and documentation have been updated.
|
||||
This is required because Garden end-of-life is Nov 2024.
|
||||
([PX4-Autopilot#23603](https://github.com/PX4/PX4-Autopilot/pull/23603))
|
||||
- New vehicle model `x500_lidar_2d` — [x500 Quadrotor with 2D Lidar](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar). ([PX4-Autopilot#22418](https://github.com/PX4/PX4-Autopilot/pull/22418), [PX4-gazebo-models#41](https://github.com/PX4/PX4-gazebo-models/pull/41)).
|
||||
- New vehicle model `x500_lidar_front` — [X500 Quadrotor with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing). ([PX4-Autopilot#23879](https://github.com/PX4/PX4-Autopilot/pull/23879), [PX4-gazebo-models#62](https://github.com/PX4/PX4-gazebo-models/pull/62/files)).
|
||||
- New vehicle model `x500_lidar_down` — [X500 Quadrotor with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing). ([PX4-Autopilot#23879](https://github.com/PX4/PX4-Autopilot/pull/23879), [PX4-gazebo-models#62](https://github.com/PX4/PX4-gazebo-models/pull/62/files)).
|
||||
- New vehicle model `r1_rover` — [Aion Robotics R1 Rover](../sim_gazebo_gz/vehicles.md#differential-rover) ([PX4-Autopilot#22402](https://github.com/PX4/PX4-Autopilot/pull/22402) and [PX4-gazebo-models#21](https://github.com/PX4/PX4-gazebo-models/pull/21)).
|
||||
- New vehicle model `rover_ackermann` — [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) ([PX4-Autopilot#23383](https://github.com/PX4/PX4-Autopilot/pull/23383) and [PX4-gazebo-models#46](https://github.com/PX4/PX4-gazebo-models/pull/46)).
|
||||
- New vehicle model `x500_gimbal` — [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) ([PX4-Autopilot#23382](https://github.com/PX4/PX4-Autopilot/pull/23382) and [PX4-gazebo-models#47](https://github.com/PX4/PX4-gazebo-models/pull/47) and [PX4-gazebo-models#70](https://github.com/PX4/PX4-gazebo-models/pull/70)).
|
||||
- New vehicle model `quadtailsitter` — [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) ([PX4-Autopilot#23943](https://github.com/PX4/PX4-Autopilot/pull/23943) and [PX4-gazebo-models#65](https://github.com/PX4/PX4-gazebo-models/pull/65)).
|
||||
- New vehicle model `tiltrotor` — [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) ([PX4-Autopilot#24028](https://github.com/PX4/PX4-Autopilot/pull/24028) and [PX4-gazebo-models#66](https://github.com/PX4/PX4-gazebo-models/pull/66)).
|
||||
- [Faster than Real-time Simulation](../simulation/index.md#simulation_speed) ([PX4-Autopilot#24421](https://github.com/PX4/PX4-Autopilot/pull/24421), [PX4-Autopilot#23783](https://github.com/PX4/PX4-Autopilot/pull/23783))
|
||||
- [Moving platform simulation](../sim_gazebo_gz/worlds#moving-platform) ([PX4-Autopilot#24471](https://github.com/PX4/PX4-Autopilot/pull/24471))
|
||||
|
||||
### Ethernet
|
||||
|
||||
- TBD
|
||||
|
||||
### uXRCE-DDS / ROS2
|
||||
|
||||
- **[Feature]** <Badge type="warning" text="Experimental"/> [ROS 2 Message Translation Node](../ros2/px4_ros2_msg_translation_node.md) to translate PX4 messages from one definition version to another dynamically ([PX4-Autopilot#24113](https://github.com/PX4/PX4-Autopilot/pull/24113))
|
||||
|
||||
### MAVLink
|
||||
|
||||
- TBD
|
||||
|
||||
### Multi-Rotor
|
||||
|
||||
- Allow system-default [multicopter orbit mode](../flight_modes_mc/orbit.md) yaw behaviour to be configured, using the parameter [MC_ORBIT_YAW_MOD](../advanced_config/parameter_reference.md#MC_ORBIT_YAW_MOD) ([PX4-Autopilot#23358](https://github.com/PX4/PX4-Autopilot/pull/23358))
|
||||
- Adapted the [Collision Prevention](../computer_vision/collision_prevention.md) implementation to work in the default manual flight mode (Acceleration Based) [MPC_POS_MODE](../advanced_config/parameter_reference.md#MPC_POS_MODE). ([PX4-Autopilot#23507](https://github.com/PX4/PX4-Autopilot/pull/23507)
|
||||
|
||||
### VTOL
|
||||
|
||||
- TBD
|
||||
|
||||
### Fixed-wing
|
||||
|
||||
- Improvement: Fixed-wing auto takeoff: enable setting takeoff flaps for hand/catapult launch. [PX4-Autopilot#23460](https://github.com/PX4/PX4-Autopilot/pull/23460)
|
||||
|
||||
### Rover
|
||||
|
||||
This release contains a major rework for the rover support in PX4:
|
||||
|
||||
- Complete restructure of the [rover related documentation](../frames_rover/index.md).
|
||||
- New firmware build specifically for [rovers](../frames_rover/index.md#flashing-the-rover-build).
|
||||
- New module dedicated to [Ackermann rovers](../frames_rover/ackermann.md):
|
||||
- The module currently supports [manual mode](../flight_modes_rover/ackermann.md#manual-mode), [acro mode](../flight_modes_rover/ackermann.md#acro-mode), [position mode](../flight_modes_rover/ackermann.md#position-mode) and [auto modes](../flight_modes_rover/ackermann.md#auto-modes).
|
||||
- New module dedicated to [differential rovers](../frames_rover/differential.md):
|
||||
- The module currently supports [manual mode](../flight_modes_rover/differential.md#manual-mode), [acro mode](../flight_modes_rover/differential.md#acro-mode), [stabilized mode](../flight_modes_rover/differential.md#stabilized-mode), [position mode](../flight_modes_rover/differential.md#position-mode) and [auto modes](../flight_modes_rover/differential.md#auto-modes).
|
||||
- New module dedicated to [mecanum rovers](../frames_rover/mecanum.md):
|
||||
- The module currently supports [manual mode](../flight_modes_rover/mecanum.md#manual-mode), [acro mode](../flight_modes_rover/mecanum.md#acro-mode), [stabilized mode](../flight_modes_rover/mecanum.md#stabilized-mode), [position mode](../flight_modes_rover/mecanum.md#position-mode) and [auto modes](../flight_modes_rover/mecanum.md#auto-modes).
|
||||
- Restructure of the [rover airframe](../airframes/airframe_reference.md#rover) numbering convention ([PX4-Autopilot#23506](https://github.com/PX4/PX4-Autopilot/pull/23506)).
|
||||
This also introduces several [new rover airframes](../airframes/airframe_reference.md#rover):
|
||||
- Generic Differential Rover `50000`.
|
||||
- Generic Ackermann Rover `51000`.
|
||||
- Axial SCX10 2 Trail Honcho `51001`.
|
||||
- Generic Mecanum Rover `52000`.
|
||||
- Library for the [pure pursuit guidance algorithm](../config_rover/differential.md#pure-pursuit-guidance-logic) that is shared by all the rover modules.
|
||||
- [Simulation](../frames_rover/index.md#simulation) for differential-steering and Ackermann rovers in gazebo (for release notes see `r1_rover` and `rover_ackermann` in [simulation](#simulation)).
|
||||
- Deprecation of the [rover position control](../frames_rover/rover_position_control.md) module: Note that the legacy rover module still exists but has been superseded by the new dedicated modules.
|
||||
|
||||
### ROS 2
|
||||
|
||||
- TBD
|
||||
|
||||
@@ -52,20 +52,4 @@ To get started using the library within an existing ROS 2 workspace:
|
||||
When opening a pull request to PX4, CI runs the library integration tests.
|
||||
These test that mode registration, failsafes, and mode replacement, work as expected.
|
||||
|
||||
The tests can also be run locally from PX4:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py
|
||||
```
|
||||
|
||||
And to run only a single case:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py --verbose --case <case>
|
||||
```
|
||||
|
||||
You can list the available test cases with:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py --list-cases
|
||||
```
|
||||
For more information see [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md).
|
||||
@@ -131,6 +131,20 @@ The simulation can be run in headless mode by prefixing the command with the `HE
|
||||
HEADLESS=1 make px4_sitl gz_x500
|
||||
```
|
||||
|
||||
### Set Custom Takeoff Location
|
||||
The takeoff location in Gazebo Classic can be set using environment variables.
|
||||
|
||||
The variables to set are: PX4_HOME_LAT, PX4_HOME_LON, and PX4_HOME_ALT.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
export PX4_HOME_LAT=51.1788
|
||||
export PX4_HOME_LON=-1.8263
|
||||
export PX4_HOME_ALT=101
|
||||
make px4_sitl gz_x500
|
||||
```
|
||||
|
||||
### Specify World
|
||||
|
||||
The simulation can be run inside a particular world by concatenating the desired world to the name of the desired vehicle.
|
||||
@@ -148,15 +162,16 @@ PX4_GZ_WORLD=windy make px4_sitl gz_x500
|
||||
|
||||
The [supported worlds](../sim_gazebo_gz/worlds.md) are listed below.
|
||||
|
||||
| World | Command | Description |
|
||||
| ---------- | -------------------------- | ----------------------------------------------------------- |
|
||||
| `default` | `make px4_sitl *` | Empty world (a grey plane) |
|
||||
| `aruco` | `make px4_sitl *_aruco` | Empty world with aruco marker for testing precision landing |
|
||||
| `baylands` | `make px4_sitl *_baylands` | Baylands world surrounded by water |
|
||||
| `lawn` | `make px4_sitl *_lawn` | Lawn world for testing rovers |
|
||||
| `rover` | `make px4_sitl *_rover` | Rover world (optimised/preferred) |
|
||||
| `walls` | `make px4_sitl *_walls` | Wall world for testing collision prevention |
|
||||
| `windy` | `make px4_sitl *_windy` | Empty world with wind enabled |
|
||||
| World | Command | Description |
|
||||
| ----------------- | ---------------------------------- | ----------------------------------------------------------- |
|
||||
| `default` | `make px4_sitl *` | Empty world (a grey plane) |
|
||||
| `aruco` | `make px4_sitl *_aruco` | Empty world with aruco marker for testing precision landing |
|
||||
| `baylands` | `make px4_sitl *_baylands` | Baylands world surrounded by water |
|
||||
| `lawn` | `make px4_sitl *_lawn` | Lawn world for testing rovers |
|
||||
| `rover` | `make px4_sitl *_rover` | Rover world (optimised/preferred) |
|
||||
| `walls` | `make px4_sitl *_walls` | Wall world for testing collision prevention |
|
||||
| `windy` | `make px4_sitl *_windy` | Empty world with wind enabled |
|
||||
| `moving_platform` | `make px4_sitl *_moving_platform` | World with moving takeoff / landing platform |
|
||||
|
||||
:::warning
|
||||
Note that if no world is specified, PX4 will use the `default` world.
|
||||
@@ -262,6 +277,9 @@ where `ARGS` is a list of environment variables including:
|
||||
|
||||
- This variable is ignored if an existing simulation is already running.
|
||||
- This value should be [specified for the selected airframe](#adding-new-worlds-and-models) but may be overridden using this argument.
|
||||
- If the [moving platform world](../sim_gazebo_gz/worlds.md#moving-platform) is selected using `PX4_GZ_WORLD=moving_platform` (or any world using the moving platform plugin), the platform can be configured using environment variables:
|
||||
- `PX4_GZ_PLATFORM_VEL`: Platform speed (m/s).
|
||||
- `PX4_GZ_PLATFORM_HEADING_DEG`: Platform heading and direction of velocity (degrees). 0 = east, positive direction is counterclockwise.
|
||||
|
||||
- `PX4_SIMULATOR=GZ`:
|
||||
Sets the simulator, which for Gazebo must be `gz`.
|
||||
|
||||
@@ -73,6 +73,30 @@ World with walls that is designed for testing [collision prevention](../computer
|
||||
|
||||
[PX4-gazebo-models/main/worlds/windy.sdf](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/windy.sdf)
|
||||
|
||||
## Moving Platform
|
||||
|
||||
<Badge type="tip" text="main (planned for: PX4 v1.16+)" />
|
||||
|
||||
[Empty world](#default) with the addition of a flat moving platform, to simulate drone operations from moving vehicles like ships or trucks. The platform is controlled by a plugin which is included in the world. The platform is at a height of 2m, so place the vehicle on it with:
|
||||
|
||||
```
|
||||
PX4_GZ_MODEL_POSE=0,0,2.2 PX4_GZ_WORLD=moving_platform make px4_sitl gz_standard_vtol
|
||||
```
|
||||
|
||||
The plugin can be configured with the following environment variables:
|
||||
|
||||
- `PX4_GZ_PLATFORM_VEL`: Platform speed (m/s).
|
||||
- `PX4_GZ_PLATFORM_HEADING_DEG`: Platform heading and direction of velocity (degrees). 0 = east, positive direction is counterclockwise.
|
||||
|
||||
[PX4-gazebo-models/main/worlds/moving_platform.sdf](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/moving_platform.sdf)
|
||||
|
||||

|
||||
|
||||
::: tip
|
||||
The moving platform plugin can also be used within other worlds.
|
||||
For more information, see the plugin [README](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_plugins/moving_platform_controller/README.md).
|
||||
:::
|
||||
|
||||
## Model Specific Worlds {#model_specific_worlds}
|
||||
|
||||
Some [vehicle models](../sim_gazebo_gz/vehicles.md) rely on the physics / plugins of a specific world.
|
||||
|
||||
@@ -153,9 +153,8 @@ make px4_sitl none_iris
|
||||
|
||||
The simulation can be further configured via environment variables:
|
||||
|
||||
- `PX4_ESTIMATOR`: This variable configures which estimator to use.
|
||||
Possible options are: `ekf2` (default), `lpe` (deprecated).
|
||||
It can be set via `export PX4_ESTIMATOR=lpe` before running the simulation.
|
||||
- Any of the [PX4 parameters](../advanced_config/parameter_reference.md) can be overridden via `export PX4_PARAM_{name}={value}`.
|
||||
For example changing the estimator: `export PX4_PARAM_EKF2_EN=0; export PX4_PARAM_ATT_EN=1`.
|
||||
|
||||
The syntax described here is simplified, and there are many other options that you can configure via _make_ - for example, to set that you wish to connect to an IDE or debugger.
|
||||
For more information see: [Building the Code > PX4 Make Build Targets](../dev_setup/building_px4.md#px4-make-build-targets).
|
||||
|
||||
@@ -21,7 +21,7 @@ Operating in the 2.4GHz frequency band, it allows unrestricted global use withou
|
||||
- **Frequency Band:** 2.4GHz
|
||||
- **Speed:** Up to 11 Mbps (adjustable)
|
||||
- **Range:** Up to 500 meters (varies upon environments)
|
||||
- **Payload Capacity:** Up to 1400 bytes
|
||||
- **Payload Capacity:** Up to 1024 bytes
|
||||
|
||||
### Network Schemes
|
||||
|
||||
@@ -124,7 +124,7 @@ However if you change the baud rate from 57600 you will need to create and use a
|
||||
- **Smart device:** Connect to Wi-Fi network named `J.Fi-xxxxxx` (x: alphanumeric characters)
|
||||
- **Browser:** Go to `192.168.4.1` to open the **configuration page**.
|
||||
- **Configuration page:** Adjust settings as needed, then click **Save**
|
||||
- _LED 1_ blinks once upon saving
|
||||
- _LED 2_ blinks once upon saving
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -8,7 +8,9 @@ Test topics include:
|
||||
- [Test Flights](../test_and_ci/test_flights.md) - How to make test flights (e.g. to [test PRs](../contribute/code.md#pull-requests))
|
||||
- [Unit Tests](../test_and_ci/unit_tests.md)
|
||||
- [Continuous Integration (CI)](../test_and_ci/continous_integration.md)
|
||||
- [ROS Integration Testing](../test_and_ci/integration_testing.md)
|
||||
- [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md)
|
||||
- [Integration Testing](../test_and_ci/integration_testing.md)
|
||||
- [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md)
|
||||
- [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md)
|
||||
- [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated)
|
||||
- [Docker](../test_and_ci/docker.md)
|
||||
- [Maintenance](../test_and_ci/maintenance.md)
|
||||
|
||||
@@ -1,152 +1,13 @@
|
||||
# Integration Testing using ROS
|
||||
# Integration Testing
|
||||
|
||||
This topic explains how to run (and extend) PX4's ROS-based integration tests.
|
||||
Integration tests are used to verify how well larger parts of a system work together.
|
||||
In PX4 this generally means testing whole features of a vehicle, usually running in simulation.
|
||||
The tests are run in [Continuous Integration (CI)](../test_and_ci/continous_integration.md) on every pull request.
|
||||
|
||||
::: info
|
||||
[MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) is preferred when writing new tests.
|
||||
Use the ROS-based integration test framework for use cases that _require_ ROS (e.g. object avoidance).
|
||||
- [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) - MAVSDK-based test framework for PX4.
|
||||
_This is the recommended framework for writing new Integration tests_
|
||||
- [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md) - Integration Tests for the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md).
|
||||
|
||||
All PX4 integraton tests are executed automatically by our [Continuous Integration](../test_and_ci/continous_integration.md) system.
|
||||
:::
|
||||
The following framework should only be used for tests that require ROS 1:
|
||||
|
||||
## Prerequisites:
|
||||
|
||||
- [jMAVSim Simulator](../sim_jmavsim/index.md)
|
||||
- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md)
|
||||
- [ROS and MAVROS](../simulation/ros_interface.md)
|
||||
|
||||
## Execute Tests
|
||||
|
||||
To run the MAVROS tests:
|
||||
|
||||
```sh
|
||||
source <catkin_ws>/devel/setup.bash
|
||||
cd <PX4-Autopilot_clone>
|
||||
make px4_sitl_default sitl_gazebo
|
||||
make <test_target>
|
||||
```
|
||||
|
||||
`test_target` is a makefile targets from the set: _tests_mission_, _tests_mission_coverage_, _tests_offboard_ and _tests_avoidance_.
|
||||
|
||||
Test can also be executed directly by running the test scripts, located under `test/`:
|
||||
|
||||
```sh
|
||||
source <catkin_ws>/devel/setup.bash
|
||||
cd <PX4-Autopilot_clone>
|
||||
make px4_sitl_default sitl_gazebo
|
||||
./test/<test_bash_script> <test_launch_file>
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
```sh
|
||||
./test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
|
||||
```
|
||||
|
||||
Tests can also be run with a GUI to see what's happening (by default the tests run "headless"):
|
||||
|
||||
```sh
|
||||
./test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test gui:=true headless:=false
|
||||
```
|
||||
|
||||
The **.test** files launch the corresponding Python tests defined in `integrationtests/python_src/px4_it/mavros/`
|
||||
|
||||
## Write a New MAVROS Test (Python)
|
||||
|
||||
This section explains how to write a new python test using ROS 1/MAVROS, test it, and add it to the PX4 test suite.
|
||||
|
||||
We recommend you review the existing tests as examples/inspiration ([integrationtests/python_src/px4_it/mavros/](https://github.com/PX4/PX4-Autopilot/tree/main/integrationtests/python_src/px4_it/mavros)).
|
||||
The official ROS documentation also contains information on how to use [unittest](http://wiki.ros.org/unittest) (on which this test suite is based).
|
||||
|
||||
To write a new test:
|
||||
|
||||
1. Create a new test script by copying the empty test skeleton below:
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python
|
||||
# [... LICENSE ...]
|
||||
|
||||
#
|
||||
# @author Example Author <author@example.com>
|
||||
#
|
||||
PKG = 'px4'
|
||||
|
||||
import unittest
|
||||
import rospy
|
||||
import rosbag
|
||||
|
||||
from sensor_msgs.msg import NavSatFix
|
||||
|
||||
class MavrosNewTest(unittest.TestCase):
|
||||
"""
|
||||
Test description
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
rospy.init_node('test_node', anonymous=True)
|
||||
rospy.wait_for_service('mavros/cmd/arming', 30)
|
||||
|
||||
rospy.Subscriber("mavros/global_position/global", NavSatFix, self.global_position_callback)
|
||||
self.rate = rospy.Rate(10) # 10hz
|
||||
self.has_global_pos = False
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
#
|
||||
# General callback functions used in tests
|
||||
#
|
||||
def global_position_callback(self, data):
|
||||
self.has_global_pos = True
|
||||
|
||||
def test_method(self):
|
||||
"""Test method description"""
|
||||
|
||||
# FIXME: hack to wait for simulation to be ready
|
||||
while not self.has_global_pos:
|
||||
self.rate.sleep()
|
||||
|
||||
# TODO: execute test
|
||||
|
||||
if __name__ == '__main__':
|
||||
import rostest
|
||||
rostest.rosrun(PKG, 'mavros_new_test', MavrosNewTest)
|
||||
```
|
||||
|
||||
1. Run the new test only
|
||||
|
||||
- Start the simulator:
|
||||
|
||||
```sh
|
||||
cd <PX4-Autopilot_clone>
|
||||
source Tools/simulation/gazebo/setup_gazebo.bash
|
||||
roslaunch launch/mavros_posix_sitl.launch
|
||||
```
|
||||
|
||||
- Run test (in a new shell):
|
||||
|
||||
```sh
|
||||
cd <PX4-Autopilot_clone>
|
||||
source Tools/simulation/gazebo/setup_gazebo.bash
|
||||
rosrun px4 mavros_new_test.py
|
||||
```
|
||||
|
||||
1. Add new test node to a launch file
|
||||
|
||||
- In `test/` create a new `<test_name>.test` ROS launch file.
|
||||
- Call the test file using one of the base scripts _rostest_px4_run.sh_ or _rostest_avoidance_run.sh_
|
||||
|
||||
1. (Optional) Create a new target in the Makefile
|
||||
|
||||
- Open the Makefile
|
||||
- Search the _Testing_ section
|
||||
- Add a new target name and call the test
|
||||
|
||||
For example:
|
||||
|
||||
```sh
|
||||
tests_<new_test_target_name>: rostest
|
||||
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_<new_test>.test
|
||||
```
|
||||
|
||||
Run the tests as described above.
|
||||
- [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated)
|
||||
|
||||
@@ -7,6 +7,10 @@ In future we plan to generalise them for any platform/hardware.
|
||||
|
||||
The instructions below explain how to setup and run the tests locally.
|
||||
|
||||
:::note
|
||||
This is the recommended integration test framework for PX4.
|
||||
:::
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### Setup Developer Environment
|
||||
@@ -47,21 +51,21 @@ To run all SITL tests as defined in [sitl.json](https://github.com/PX4/PX4-Autop
|
||||
test/mavsdk_tests/mavsdk_test_runner.py test/mavsdk_tests/configs/sitl.json --speed-factor 10
|
||||
```
|
||||
|
||||
This will list all of the tests and then run them sequentially.
|
||||
This will list all the tests and then run them sequentially.
|
||||
|
||||
To see all possible command line arguments use the `-h` argument:
|
||||
|
||||
```sh
|
||||
test/mavsdk_tests/mavsdk_test_runner.py -h
|
||||
|
||||
usage: mavsdk_test_runner.py [-h] [--log-dir LOG_DIR] [--speed-factor SPEED_FACTOR] [--iterations ITERATIONS] [--abort-early] [--gui] [--model MODEL]
|
||||
[--case CASE] [--debugger DEBUGGER] [--verbose]
|
||||
config_file
|
||||
usage: mavsdk_test_runner.py [-h] [--log-dir LOG_DIR] [--speed-factor SPEED_FACTOR] [--iterations ITERATIONS] [--abort-early]
|
||||
[--gui] [--model MODEL] [--case CASE] [--debugger DEBUGGER] [--upload] [--force-color]
|
||||
[--verbose] [--build-dir BUILD_DIR]
|
||||
|
||||
positional arguments:
|
||||
config_file JSON config file to use
|
||||
|
||||
optional arguments:
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--log-dir LOG_DIR Directory for log files
|
||||
--speed-factor SPEED_FACTOR
|
||||
@@ -71,9 +75,13 @@ optional arguments:
|
||||
--abort-early abort on first unsuccessful test
|
||||
--gui display the visualization for a simulation
|
||||
--model MODEL only run tests for one model
|
||||
--case CASE only run tests for one case
|
||||
--case CASE only run tests for one case (or multiple cases with wildcard '*')
|
||||
--debugger DEBUGGER choice from valgrind, callgrind, gdb, lldb
|
||||
--upload Upload logs to logs.px4.io
|
||||
--force-color Force colorized output
|
||||
--verbose enable more verbose output
|
||||
--build-dir BUILD_DIR
|
||||
relative path where the built files are stored
|
||||
```
|
||||
|
||||
## Run a Single Test
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# Integration Testing for the PX4 ROS 2 Interface Library
|
||||
|
||||
This topic outlines the integration tests for the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md).
|
||||
|
||||
These test that mode registration, failsafes, and mode replacement, work as expected.
|
||||
|
||||
## CI Testing
|
||||
|
||||
When opening a pull request to PX4, CI runs the library integration tests.
|
||||
|
||||
## Running Tests Locally
|
||||
|
||||
The tests can also be run locally from PX4:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py
|
||||
```
|
||||
|
||||
And to run only a single case:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py --verbose --case <case>
|
||||
```
|
||||
|
||||
You can list the available test cases with:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py --list-cases
|
||||
```
|
||||
@@ -0,0 +1,154 @@
|
||||
# Integration Testing using ROS 1
|
||||
|
||||
This topic explains how to run (and extend) PX4's ROS (1) and MAVROS -based integration tests.
|
||||
|
||||
:::warning This test framework is deprecated.
|
||||
It should be used only for new test cases that _require_ ROS 1.
|
||||
|
||||
[MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) is preferred when writing new tests.
|
||||
:::
|
||||
|
||||
:::note
|
||||
All PX4 integration tests are executed automatically by our [Continuous Integration](../test_and_ci/continous_integration.md) system.
|
||||
:::
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md)
|
||||
- [ROS and MAVROS](../simulation/ros_interface.md)
|
||||
|
||||
## Execute Tests
|
||||
|
||||
To run the MAVROS tests:
|
||||
|
||||
```sh
|
||||
source <catkin_ws>/devel/setup.bash
|
||||
cd <PX4-Autopilot_clone>
|
||||
make px4_sitl_default sitl_gazebo
|
||||
make <test_target>
|
||||
```
|
||||
|
||||
`test_target` is a makefile targets from the set: _tests_mission_, _tests_mission_coverage_, _tests_offboard_ and _tests_avoidance_.
|
||||
|
||||
Test can also be executed directly by running the test scripts, located under `test/`:
|
||||
|
||||
```sh
|
||||
source <catkin_ws>/devel/setup.bash
|
||||
cd <PX4-Autopilot_clone>
|
||||
make px4_sitl_default sitl_gazebo
|
||||
./test/<test_bash_script> <test_launch_file>
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
```sh
|
||||
./test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
|
||||
```
|
||||
|
||||
Tests can also be run with a GUI to see what's happening (by default the tests run "headless"):
|
||||
|
||||
```sh
|
||||
./test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test gui:=true headless:=false
|
||||
```
|
||||
|
||||
The **.test** files launch the corresponding Python tests defined in `integrationtests/python_src/px4_it/mavros/`
|
||||
|
||||
## Write a New MAVROS Test (Python)
|
||||
|
||||
This section explains how to write a new python test using ROS 1/MAVROS, test it, and add it to the PX4 test suite.
|
||||
|
||||
We recommend you review the existing tests as examples/inspiration ([integrationtests/python_src/px4_it/mavros/](https://github.com/PX4/PX4-Autopilot/tree/main/integrationtests/python_src/px4_it/mavros)).
|
||||
The official ROS documentation also contains information on how to use [unittest](http://wiki.ros.org/unittest) (on which this test suite is based).
|
||||
|
||||
To write a new test:
|
||||
|
||||
1. Create a new test script by copying the empty test skeleton below:
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python
|
||||
# [... LICENSE ...]
|
||||
|
||||
#
|
||||
# @author Example Author <author@example.com>
|
||||
#
|
||||
PKG = 'px4'
|
||||
|
||||
import unittest
|
||||
import rospy
|
||||
import rosbag
|
||||
|
||||
from sensor_msgs.msg import NavSatFix
|
||||
|
||||
class MavrosNewTest(unittest.TestCase):
|
||||
"""
|
||||
Test description
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
rospy.init_node('test_node', anonymous=True)
|
||||
rospy.wait_for_service('mavros/cmd/arming', 30)
|
||||
|
||||
rospy.Subscriber("mavros/global_position/global", NavSatFix, self.global_position_callback)
|
||||
self.rate = rospy.Rate(10) # 10hz
|
||||
self.has_global_pos = False
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
#
|
||||
# General callback functions used in tests
|
||||
#
|
||||
def global_position_callback(self, data):
|
||||
self.has_global_pos = True
|
||||
|
||||
def test_method(self):
|
||||
"""Test method description"""
|
||||
|
||||
# FIXME: hack to wait for simulation to be ready
|
||||
while not self.has_global_pos:
|
||||
self.rate.sleep()
|
||||
|
||||
# TODO: execute test
|
||||
|
||||
if __name__ == '__main__':
|
||||
import rostest
|
||||
rostest.rosrun(PKG, 'mavros_new_test', MavrosNewTest)
|
||||
```
|
||||
|
||||
1. Run the new test only
|
||||
|
||||
- Start the simulator:
|
||||
|
||||
```sh
|
||||
cd <PX4-Autopilot_clone>
|
||||
source Tools/simulation/gazebo/setup_gazebo.bash
|
||||
roslaunch launch/mavros_posix_sitl.launch
|
||||
```
|
||||
|
||||
- Run test (in a new shell):
|
||||
|
||||
```sh
|
||||
cd <PX4-Autopilot_clone>
|
||||
source Tools/simulation/gazebo/setup_gazebo.bash
|
||||
rosrun px4 mavros_new_test.py
|
||||
```
|
||||
|
||||
1. Add new test node to a launch file
|
||||
|
||||
- In `test/` create a new `<test_name>.test` ROS launch file.
|
||||
- Call the test file using one of the base scripts _rostest_px4_run.sh_ or _rostest_avoidance_run.sh_
|
||||
|
||||
1. (Optional) Create a new target in the Makefile
|
||||
|
||||
- Open the Makefile
|
||||
- Search the _Testing_ section
|
||||
- Add a new target name and call the test
|
||||
|
||||
For example:
|
||||
|
||||
```sh
|
||||
tests_<new_test_target_name>: rostest
|
||||
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_<new_test>.test
|
||||
```
|
||||
|
||||
Run the tests as described above.
|
||||
@@ -253,7 +253,6 @@
|
||||
- [Avionics Anonymous Laser Altimeter UAVCAN Interface (CAN)](/dronecan/avanon_laser_interface.md)
|
||||
- [GNSS (GPS)](/gps_compass/index.md)
|
||||
- [ARK GPS (CAN)](/dronecan/ark_gps.md)
|
||||
- [ARK SAM GPS](/gps_compass/ark_sam_gps.md)
|
||||
- [ARK TESEO GPS](/dronecan/ark_teseo_gps.md)
|
||||
- [CUAV NEO 3 GPS](/gps_compass/gps_cuav_neo_3.md)
|
||||
- [CUAV NEO 3 Pro GPS (CAN)](/gps_compass/gps_cuav_neo_3pro.md)
|
||||
@@ -315,7 +314,6 @@
|
||||
- [Joysticks](/config/joystick.md)
|
||||
- [Data Links](/data_links/index.md)
|
||||
- [MAVLink 텔레메트리(OSD/GCS) ](/peripherals/mavlink_peripherals.md)
|
||||
|
||||
- [텔레메트리 무선통신](/telemetry/index.md)
|
||||
- [SiK 무선통신](/telemetry/sik_radio.md)
|
||||
- [RFD900 (SiK) 텔레메트리](/telemetry/rfd900_telemetry.md)
|
||||
@@ -328,13 +326,9 @@
|
||||
- [ARK Electron Microhard Serial Telemetry Radio](/telemetry/ark_microhard_serial.md)
|
||||
- [Holybro Microhard P900 Telemetry Radio](/telemetry/holybro_microhard_p900_radio.md)
|
||||
- [CUAV P8 Telemetry Radio](/telemetry/cuav_p8_radio.md)
|
||||
- [J.Fi Wireless Telemetry Module](/telemetry/jfi_telemetry.md)
|
||||
- [HolyBro XBP9X - Discontinued](/telemetry/holybro_xbp9x_radio.md)
|
||||
|
||||
- [FrSky 텔레메트리](/peripherals/frsky_telemetry.md)
|
||||
|
||||
- [TBS Crossfire (CRSF) Telemetry](/telemetry/crsf_telemetry.md)
|
||||
|
||||
- [Satellite Comms (Iridium/RockBlock)](/advanced_features/satcom_roadblock.md)
|
||||
- [Power Systems](/power_systems/index.md)
|
||||
- [Battery Estimation Tuning](/config/battery.md)
|
||||
@@ -643,7 +637,6 @@
|
||||
- [PowerButtonState](/msg_docs/PowerButtonState.md)
|
||||
- [PowerMonitor](/msg_docs/PowerMonitor.md)
|
||||
- [PpsCapture](/msg_docs/PpsCapture.md)
|
||||
- [PurePursuitStatus](/msg_docs/PurePursuitStatus.md)
|
||||
- [PwmInput](/msg_docs/PwmInput.md)
|
||||
- [Px4ioStatus](/msg_docs/Px4ioStatus.md)
|
||||
- [QshellReq](/msg_docs/QshellReq.md)
|
||||
@@ -717,10 +710,6 @@
|
||||
- [YawEstimatorStatus](/msg_docs/YawEstimatorStatus.md)
|
||||
- [VehicleStatusV0](/msg_docs/VehicleStatusV0.md)
|
||||
- [MAVLink Messaging](/middleware/mavlink.md)
|
||||
- [Adding Messages](/mavlink/adding_messages.md)
|
||||
- [Streaming Messages](/mavlink/streaming_messages.md)
|
||||
- [Receiving Messages](/mavlink/receiving_messages.md)
|
||||
- [Custom MAVLink Messages](/mavlink/custom_messages.md)
|
||||
- [Standard Modes Protocol](/mavlink/standard_modes.md)
|
||||
- [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](/middleware/uxrce_dds.md)
|
||||
- [모듈과 명령어](/modules/modules_main.md)
|
||||
@@ -851,4 +840,4 @@
|
||||
- [1.15 (stable)](/releases/1.15.md)
|
||||
- [1.14](/releases/1.14.md)
|
||||
- [1.13](/releases/1.13.md)
|
||||
- [1.12](/releases/1.12.md)
|
||||
- [1.12](/releases/1.12.md)
|
||||
@@ -138,3 +138,5 @@ The PX4 flight stack is hosted under the governance of the [Dronecode Project](h
|
||||
<a href="https://www.dronecode.org/" style="padding:20px" ><img src="https://mavlink.io/assets/site/logo_dronecode.png" alt="Dronecode Logo" width="110px"/></a> <a href="https://www.linuxfoundation.org/projects" style="padding:20px;"><img src="https://mavlink.io/assets/site/logo_linux_foundation.png" alt="Linux Foundation Logo" width="80px" /></a>
|
||||
|
||||
<div style="padding:10px"> </div>
|
||||
|
||||
Doc build time: {{ $buildTime }}
|
||||
|
||||
@@ -79,6 +79,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
|
||||
- New vehicle model `quadtailsitter` — [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) ([PX4-Autopilot#23943](https://github.com/PX4/PX4-Autopilot/pull/23943) and [PX4-gazebo-models#65](https://github.com/PX4/PX4-gazebo-models/pull/65)).
|
||||
- New vehicle model `tiltrotor` — [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) ([PX4-Autopilot#24028](https://github.com/PX4/PX4-Autopilot/pull/24028) and [PX4-gazebo-models#66](https://github.com/PX4/PX4-gazebo-models/pull/66)).
|
||||
- [Faster than Real-time Simulation](../simulation/index.md#simulation_speed) ([PX4-Autopilot#24421](https://github.com/PX4/PX4-Autopilot/pull/24421), [PX4-Autopilot#23783](https://github.com/PX4/PX4-Autopilot/pull/23783))
|
||||
- [Moving platform simulation](../sim_gazebo_gz/worlds#moving-platform) ([PX4-Autopilot#24471](https://github.com/PX4/PX4-Autopilot/pull/24471))
|
||||
|
||||
### Ethernet
|
||||
|
||||
|
||||
@@ -148,15 +148,16 @@ PX4_GZ_WORLD=windy make px4_sitl gz_x500
|
||||
|
||||
The [supported worlds](../sim_gazebo_gz/worlds.md) are listed below.
|
||||
|
||||
| 전역 | 통신 | 설명 |
|
||||
| ---------- | -------------------------- | ----------------------------------------------------------- |
|
||||
| `default` | `make px4_sitl *` | Empty world (a grey plane) |
|
||||
| `aruco` | `make px4_sitl *_aruco` | Empty world with aruco marker for testing precision landing |
|
||||
| `baylands` | `make px4_sitl *_baylands` | Baylands world surrounded by water |
|
||||
| `lawn` | `make px4_sitl *_lawn` | Lawn world for testing rovers |
|
||||
| `rover` | `make px4_sitl *_rover` | Rover world (optimised/preferred) |
|
||||
| `walls` | `make px4_sitl *_walls` | Wall world for testing collision prevention |
|
||||
| `windy` | `make px4_sitl *_windy` | Empty world with wind enabled |
|
||||
| 전역 | 통신 | 설명 |
|
||||
| ----------------- | --------------------------------- | ----------------------------------------------------------- |
|
||||
| `default` | `make px4_sitl *` | Empty world (a grey plane) |
|
||||
| `aruco` | `make px4_sitl *_aruco` | Empty world with aruco marker for testing precision landing |
|
||||
| `baylands` | `make px4_sitl *_baylands` | Baylands world surrounded by water |
|
||||
| `lawn` | `make px4_sitl *_lawn` | Lawn world for testing rovers |
|
||||
| `rover` | `make px4_sitl *_rover` | Rover world (optimised/preferred) |
|
||||
| `walls` | `make px4_sitl *_walls` | Wall world for testing collision prevention |
|
||||
| `windy` | `make px4_sitl *_windy` | Empty world with wind enabled |
|
||||
| `moving_platform` | `make px4_sitl *_moving_platform` | World with moving takeoff / landing platform |
|
||||
|
||||
:::warning
|
||||
Note that if no world is specified, PX4 will use the `default` world.
|
||||
@@ -263,6 +264,9 @@ where `ARGS` is a list of environment variables including:
|
||||
|
||||
- This variable is ignored if an existing simulation is already running.
|
||||
- This value should be [specified for the selected airframe](#adding-new-worlds-and-models) but may be overridden using this argument.
|
||||
- If the [moving platform world](../sim_gazebo_gz/worlds.md#moving-platform) is selected using `PX4_GZ_WORLD=moving_platform` (or any world using the moving platform plugin), the platform can be configured using environment variables:
|
||||
- `PX4_GZ_PLATFORM_VEL`: Platform speed (m/s).
|
||||
- `PX4_GZ_PLATFORM_HEADING_DEG`: Platform heading and direction of velocity (degrees). 0 = east, positive direction is counterclockwise.
|
||||
|
||||
- `PX4_SIMULATOR=GZ`:
|
||||
Sets the simulator, which for Gazebo must be `gz`.
|
||||
|
||||
@@ -73,6 +73,30 @@ World with walls that is designed for testing [collision prevention](../computer
|
||||
|
||||
[PX4-gazebo-models/main/worlds/windy.sdf](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/windy.sdf)
|
||||
|
||||
## Moving Platform
|
||||
|
||||
<Badge type="tip" text="main (planned for: PX4 v1.16+)" />
|
||||
|
||||
[Empty world](#default) with the addition of a flat moving platform, to simulate drone operations from moving vehicles like ships or trucks. The platform is controlled by a plugin which is included in the world. The platform is at a height of 2m, so place the vehicle on it with:
|
||||
|
||||
```
|
||||
PX4_GZ_MODEL_POSE=0,0,2.2 PX4_GZ_WORLD=moving_platform make px4_sitl gz_standard_vtol
|
||||
```
|
||||
|
||||
The plugin can be configured with the following environment variables:
|
||||
|
||||
- `PX4_GZ_PLATFORM_VEL`: Platform speed (m/s).
|
||||
- `PX4_GZ_PLATFORM_HEADING_DEG`: Platform heading and direction of velocity (degrees). 0 = east, positive direction is counterclockwise.
|
||||
|
||||
[PX4-gazebo-models/main/worlds/moving_platform.sdf](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/moving_platform.sdf)
|
||||
|
||||

|
||||
|
||||
:::tip
|
||||
The moving platform plugin can also be used within other worlds.
|
||||
For more information, see the plugin [README](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_plugins/moving_platform_controller/README.md).
|
||||
:::
|
||||
|
||||
## Model Specific Worlds {#model_specific_worlds}
|
||||
|
||||
Some [vehicle models](../sim_gazebo_gz/vehicles.md) rely on the physics / plugins of a specific world.
|
||||
|
||||
@@ -716,6 +716,10 @@
|
||||
- [YawEstimatorStatus](msg_docs/YawEstimatorStatus.md)
|
||||
- [VehicleStatusV0](msg_docs/VehicleStatusV0.md)
|
||||
- [Повідомлення MAVLink](middleware/mavlink.md)
|
||||
- [Adding Messages](mavlink/adding_messages.md)
|
||||
- [Streaming Messages](mavlink/streaming_messages.md)
|
||||
- [Receiving Messages](mavlink/receiving_messages.md)
|
||||
- [Custom MAVLink Messages](mavlink/custom_messages.md)
|
||||
- [Standard Modes Protocol](mavlink/standard_modes.md)
|
||||
- [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](middleware/uxrce_dds.md)
|
||||
- [Модулі & Команди](modules/modules_main.md)
|
||||
|
||||
@@ -253,7 +253,6 @@
|
||||
- [Avionics Anonymous Laser Altimeter UAVCAN Interface (CAN)](/dronecan/avanon_laser_interface.md)
|
||||
- [GNSS (GPS)](/gps_compass/index.md)
|
||||
- [ARK GPS (CAN)](/dronecan/ark_gps.md)
|
||||
- [ARK SAM GPS](/gps_compass/ark_sam_gps.md)
|
||||
- [ARK TESEO GPS](/dronecan/ark_teseo_gps.md)
|
||||
- [CUAV NEO 3 GPS](/gps_compass/gps_cuav_neo_3.md)
|
||||
- [CUAV NEO 3 Pro GPS (CAN)](/gps_compass/gps_cuav_neo_3pro.md)
|
||||
@@ -315,7 +314,6 @@
|
||||
- [Джойстики](/config/joystick.md)
|
||||
- [Посилання даних](/data_links/index.md)
|
||||
- [MAVLink Telemetry (OSD/GCS)](/peripherals/mavlink_peripherals.md)
|
||||
|
||||
- [Телеметричні радіостанції](/telemetry/index.md)
|
||||
- [SiK Radio](/telemetry/sik_radio.md)
|
||||
- [Телеметричне радіо RFD900 (SiK)](/telemetry/rfd900_telemetry.md)
|
||||
@@ -328,13 +326,9 @@
|
||||
- [ARK Electron Microhard Серійне Телеметрійне Радіо](/telemetry/ark_microhard_serial.md)
|
||||
- [Holybro Microhard P900 Телеметрійне Радіо](/telemetry/holybro_microhard_p900_radio.md)
|
||||
- [CUAV P8 Телеметрійне радіо](/telemetry/cuav_p8_radio.md)
|
||||
- [J.Fi Wireless Telemetry Module](/telemetry/jfi_telemetry.md)
|
||||
- [Holybro XBP9X - Припинено](/telemetry/holybro_xbp9x_radio.md)
|
||||
|
||||
- [FrSky телеметрія](/peripherals/frsky_telemetry.md)
|
||||
|
||||
- [TBS Crossfire (CRSF) телеметрія](/telemetry/crsf_telemetry.md)
|
||||
|
||||
- [Супутниковий зв'язок (Iridium/RockBlock)](/advanced_features/satcom_roadblock.md)
|
||||
- [Енергетичні системи](/power_systems/index.md)
|
||||
- [Налаштування оцінки батареї](/config/battery.md)
|
||||
@@ -643,7 +637,6 @@
|
||||
- [PowerButtonState](/msg_docs/PowerButtonState.md)
|
||||
- [PowerMonitor](/msg_docs/PowerMonitor.md)
|
||||
- [PpsCapture](/msg_docs/PpsCapture.md)
|
||||
- [PurePursuitStatus](/msg_docs/PurePursuitStatus.md)
|
||||
- [PwmInput](/msg_docs/PwmInput.md)
|
||||
- [Px4ioStatus](/msg_docs/Px4ioStatus.md)
|
||||
- [QshellReq](/msg_docs/QshellReq.md)
|
||||
@@ -847,4 +840,4 @@
|
||||
- [1.15 (stable)](/releases/1.15.md)
|
||||
- [1.14](/releases/1.14.md)
|
||||
- [1.13](/releases/1.13.md)
|
||||
- [1.12](/releases/1.12.md)
|
||||
- [1.12](/releases/1.12.md)
|
||||
@@ -89,7 +89,7 @@ This protocol is commonly use is for connecting [optical flow](../sensor/optical
|
||||
| SCK | ![black][blkcircle] Black | ![yellow][ycircle] Yellow |
|
||||
| MISO | ![black][blkcircle] Black | ![blue][bluecircle] Blue |
|
||||
| MOSI | ![black][blkcircle] Black | ![green][gcircle] Green |
|
||||
| CS! | ![black][blkcircle] Black | ![white][wcircle] White |
|
||||
| CS1 | ![black][blkcircle] Black | ![white][wcircle] White |
|
||||
| CS2 | ![black][blkcircle] Black | ![blue][bluecircle] Blue |
|
||||
| GND | ![black][blkcircle] Black | ![black][blkcircle] Black |
|
||||
|
||||
|
||||
@@ -88,9 +88,9 @@ PX4 повторно видає пункти камери, знайдені в
|
||||
- Предмети місії виконуються, коли вони активовані.
|
||||
- `issue_command(_mission_item)` викликається в кінці цього, щоб відправити поточну непунктову команду
|
||||
- [`MissionBlock::видача_команди(const mission_item_s &item)`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/navigator/mission_block.cpp#L543-L562)
|
||||
- Створює команду для місії транспортного засобу, а потім викликає `publish_vehicle_command` для публікації її (`_navigator->publish_vehicle_command(vehicle_command);`)
|
||||
- Creates a vehicle command for the mission item then calls `publish_vehicle_command` to publish it (`_navigator->publish_vehicle_command(vehicle_command);`)
|
||||
- [`void Navigator::publish_vehicle_command(vehicle_command_s &vehicle_command)`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/navigator/navigator_main.cpp#L1395)
|
||||
- Для деяких команд камери це встановлює ідентифікатор компонента на ідентифікатор компонента камери (`vehicle_command.target_component = 100; // MAV_COMP_ID_CAMERA`)
|
||||
- For some camera commands it sets the component ID to the camera component id (`vehicle_command.target_component = 100; // MAV_COMP_ID_CAMERA`)
|
||||
- Усі інші просто публікуються під стандартний компонент ID.
|
||||
- Тема UORB `VehicleCommand` публікується.
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ void Mission::setActiveMissionItems() => https://github.com/PX4/PX4-Autopilot/bl
|
||||
Issuing command:
|
||||
MissionBlock::issue_command(const mission_item_s &item) => https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/navigator/mission_block.cpp#L543-L562
|
||||
At end this publishes the current vehicle command
|
||||
_navigator->publish_vehicle_command(&vehicle_command);
|
||||
_navigator.publish_vehicle_command(vehicle_command);
|
||||
|
||||
Publishing command:
|
||||
void Navigator::publish_vehicle_command(vehicle_command_s &vehicle_command) => https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/navigator/navigator_main.cpp#L1395
|
||||
|
||||
@@ -376,3 +376,31 @@ This section explains how you might manually run the same steps as the script (s
|
||||
```sh
|
||||
CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub"
|
||||
```
|
||||
|
||||
## Flight Review & Encrypted logs
|
||||
|
||||
If your logs are secret enough to require encryption it is likely that you will not trust them on the public [Flight Review](../getting_started/flight_reporting.md) server (this is not particularly hardened against data loss or theft).
|
||||
|
||||
:::info
|
||||
The public [Flight Review](../getting_started/flight_reporting.md) service does not support encrypted logs.
|
||||
If you wish to use the service you can use the tools here to download and decrypt the files first.
|
||||
:::
|
||||
|
||||
This section explains how you can host a _private_ instance of the Flight Review server.
|
||||
This can use logs that you have downloaded and decrypted yourself, or you can include your private key in the server for automatic decryption of logs on upload.
|
||||
|
||||
Кроки наступні:
|
||||
|
||||
1. Follow the Flight Review [installation and setup](https://github.com/PX4/flight_review?tab=readme-ov-file#installation-and-setup) instructions to clone and setup the server.
|
||||
|
||||
2. Put your private key in the source code at: `flight_review/app/private_key/private_key.pem`
|
||||
|
||||
3. Add this key location into the server config file: `flight_review/app/config_default.ini`.
|
||||
|
||||
The line to add should look something like this (for the file above):
|
||||
|
||||
```sh
|
||||
ulge_private_key = ../private_key/private_key.pem
|
||||
```
|
||||
|
||||
4. Follow the Flight Review Instructions to start your server.
|
||||
|
||||
@@ -33,22 +33,15 @@ If needed you can also [get the source code specific to a particular release](..
|
||||
Спочатку ми зберемо цільову платформу симуляції з використанням консольного середовища.
|
||||
Це дозволяє нам перевірити налаштування системи перед її запуском на реальному обладнанні та IDE.
|
||||
|
||||
Navigate into the **PX4-Autopilot** directory.
|
||||
Depending on your operating system you will have installed either [Gazebo SITL](../sim_gazebo_gz/index.md) or [Gazebo Classic SITL](../sim_gazebo_classic/index.md) (if you don't know which you can try both).
|
||||
|
||||
:::: tabs
|
||||
|
||||
:::tab Gazebo
|
||||
Start [Gazebo SITL](../sim_gazebo_gz/index.md) using the following command:
|
||||
Navigate into the **PX4-Autopilot** directory and start [Gazebo SITL](../sim_gazebo_gz/index.md) using the following command:
|
||||
|
||||
```sh
|
||||
make px4_sitl gz_x500
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
:::tab Gazebo-Classic
|
||||
Start [Gazebo SITL](../sim_gazebo_gz/index.md) using the following command:
|
||||
:::details
|
||||
If you installed Gazebo Classic
|
||||
Start [Gazebo Classic SITL](../sim_gazebo_classic/index.md) using the following command:
|
||||
|
||||
```sh
|
||||
make px4_sitl gazebo-classic
|
||||
@@ -56,8 +49,6 @@ make px4_sitl gazebo-classic
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
This will bring up the PX4 console:
|
||||
|
||||

|
||||
@@ -73,19 +64,9 @@ The drone can be flown by typing the following command (as shown in the console
|
||||
pxh> commander takeoff
|
||||
```
|
||||
|
||||
The vehicle will take off and you'll see this in the simulator UI:
|
||||
The vehicle will take off and you'll see this in the Gazebo simulator UI:
|
||||
|
||||
:::: tabs
|
||||
|
||||
:::tab Gazebo
|
||||

|
||||
:::
|
||||
|
||||
:::tab Gazebo-Classic
|
||||

|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
The drone can be landed by typing `commander land` and the whole simulation can be stopped by doing **CTRL+C** (or by entering `shutdown`).
|
||||
|
||||
|
||||
@@ -1,20 +1,24 @@
|
||||
# Середовище розробки Ubuntu
|
||||
|
||||
The following instructions use a bash script to set up the PX4 development environment on the [Ubuntu Linux LTS](https://wiki.ubuntu.com/LTS) versions supported by PX4: Ubuntu 22.04 (Jammy Jellyfish), 20.04 (Focal Fossa), and 18.04 (Bionic Beaver).
|
||||
The following instructions use a bash script to set up the PX4 development environment on the [Ubuntu Linux LTS](https://wiki.ubuntu.com/LTS) versions supported by PX4: Ubuntu 24.04 (Nimble Numbat) and Ubuntu 22.04 (Jammy Jellyfish).
|
||||
|
||||
The environment includes:
|
||||
|
||||
- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic") on Ubuntu 22.04
|
||||
- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) on Ubuntu 20.04 and Ubuntu 18.04
|
||||
- [Gazebo Simulator](../sim_gazebo_gz/index.md) ("Harmonic")
|
||||
- [Build toolchain for Pixhawk (and other NuttX-based hardware)](../dev_setup/building_px4.md#nuttx-pixhawk-based-boards).
|
||||
|
||||
:::info
|
||||
The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below.
|
||||
:::
|
||||
On Ubuntu 22.04:
|
||||
|
||||
:::tip
|
||||
if you need to use Gazebo on Ubuntu 20.04 you can [manually install Gazebo "Garden"](../sim_gazebo_gz/index.md#installation-ubuntu-linux), with the caveat that this is end-of-life in November 2024.
|
||||
If you want to use Gazebo Classic on Ubuntu 22.04 (say) then you can manually install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation).
|
||||
- [Gazebo Classic Simulator](../sim_gazebo_classic/index.md) can be used instead of Gazebo.
|
||||
Gazebo is nearing feature-parity with Gazebo-Classic on PX4, and will soon replace it for all use cases.
|
||||
|
||||
The build toolchain for other flight controllers, simulators, and working with ROS are discussed in the [Other Targets](#other-targets) section below.
|
||||
|
||||
:::details
|
||||
Can I use an older version of Ubuntu?
|
||||
PX4 supports the current and last Ubuntu LTS release where possible.
|
||||
Older releases are not supported (so you can't raise defects against them), but may still work.
|
||||
For example, Gazebo Classic setup is included in our standard build instructions for macOS, Ubuntu 18.04 and 20.04, and Windows on WSL2 for the same hosts.
|
||||
:::
|
||||
|
||||
## Симуляція та NuttX (Pixhawk)
|
||||
@@ -48,7 +52,9 @@ The script is intended to be run on _clean_ Ubuntu LTS installations, and may no
|
||||
- При появі підказки по ходу виконання скрипту підтвердить вибір.
|
||||
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
||||
|
||||
3. Перезавантажте комп'ютер при завершенні.
|
||||
3. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation).
|
||||
|
||||
4. Перезавантажте комп'ютер при завершенні.
|
||||
|
||||
:::details
|
||||
Additional notes
|
||||
@@ -62,8 +68,8 @@ These notes are provided "for information only":
|
||||
```sh
|
||||
$arm-none-eabi-gcc --version
|
||||
|
||||
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 9-2020-q2-update) 9.3.1 20200408 (release)
|
||||
Copyright (C) 2019 Free Software Foundation, Inc.
|
||||
arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009
|
||||
Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
```
|
||||
@@ -80,17 +86,6 @@ These notes are provided "for information only":
|
||||
|
||||
:::
|
||||
|
||||
## Відеоінструкція
|
||||
|
||||
This video shows how to install the toolchain for NuttX and simulation targets ([as covered below](#simulation-and-nuttx-pixhawk-targets)) along with the basic testing covered in [Building PX4 Software](../dev_setup/building_px4.md).
|
||||
|
||||
:::warning
|
||||
The video suggests that you build source using JMAVSim, entering the command: `make px4_sitl jmavsim`.
|
||||
As JMAVSim is now community-supported, you should instead build using Gazebo or Gazebo Classic, as shown in [Building the Code](../dev_setup/building_px4.md#first-build-using-a-simulator)
|
||||
:::
|
||||
|
||||
<lite-youtube videoid="OtValQdAdrU" title=" Setting up your PX4 development environment on Linux"/>
|
||||
|
||||
## Other Targets
|
||||
|
||||
The Ubuntu development environment for ROS, other simulators, and other hardware targets, is covered in their respective documentation.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
Є багато причин використання VSCode для розробки PX4:
|
||||
|
||||
- Getting setup _really_ only takes a few minutes.
|
||||
- A rich extension ecosystem that enables a huge range of tools needed for PX4 development: C/C++ (with solid _cmake_ integration), _Python_, _Jinja2_, ROS messages, and even DroneCAN dsdl.
|
||||
- A rich extension ecosystem that enables a huge range of tools needed for PX4 development: C/C++ (with solid _cmake_ integration), _Python_, _Jinja2_, ROS messages, and even DroneCAN DSDL.
|
||||
- Чудова інтеграція з Github.
|
||||
|
||||
Цей розділ пояснює, як налаштувати IDE і почати розробку.
|
||||
@@ -26,7 +26,9 @@ You must already have installed the command line [PX4 developer environment](../
|
||||
2. Відкрийте VSCode і додайте вихідний код PX4:
|
||||
|
||||
- Select _Open folder ..._ option on the welcome page (or using the menu: **File > Open Folder**):
|
||||
|
||||

|
||||
|
||||
- З'явиться діалогове вікно вибору файлу.
|
||||
Select the **PX4-Autopilot** directory and then press **OK**.
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ Contact the [manufacturer](https://holybro.com/) for hardware support or complia
|
||||
|
||||
_Pixhawk 6C Mini_<sup>®</sup> is the latest update to the successful family of Pixhawk® flight controllers designed and made in collaboration with Holybro<sup>®</sup> and the PX4 team.
|
||||
|
||||
Він оснащений високопродуктивним процесором H7, резервуванням IMU, платою IMU з контролем температури та економічно вигідним дизайном, що забезпечує неймовірну продуктивність і надійність.
|
||||
It is equipped with a high performance H7 Processor and comes with IMU redundancy, temperature-controlled IMU board, and cost effective design, delivering incredible performance and reliability.
|
||||
It complies with the Pixhawk [Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
||||
|
||||

|
||||

|
||||
|
||||
:::tip
|
||||
This autopilot is [supported](../flight_controller/autopilot_pixhawk_standard.md) by the PX4 maintenance and test teams.
|
||||
@@ -22,33 +22,33 @@ Pixhawk® 6C Mini є останнім оновленням успішної се
|
||||
|
||||
Inside the Pixhawk® 6C Mini, you can find an STMicroelectronics® based STM32H743, paired with sensor technology from Bosch® & InvenSense®, giving you flexibility and reliability for controlling any autonomous vehicle, suitable for both academic and commercial applications.
|
||||
|
||||
Мікроконтролер H7 Pixhawk® 6C Mini містить ядро Arm® Cortex®-M7 до 480 MHz, має 2MB flash пам’яті та 1MB RAM.
|
||||
The Pixhawk® 6C Mini's H7 microcontroller contain the Arm® Cortex®-M7 core running up to 480 MHz, and has 2MB flash memory and 1MB RAM.
|
||||
Завдяки оновленій потужності обробки розробники можуть бути більш продуктивними та ефективними у своїй роботі з розробкою, що дозволяє використовувати складні алгоритми та моделі.
|
||||
|
||||
Pixhawk 6C Mini включає високопродуктивні, низькошумні IMU на борту, розроблені бути економічними, але водночас маючи резервування IMU.
|
||||
Система віброізоляції для фільтрації високочастотної вібрації та зменшення шуму для забезпечення точних показань, що дозволяє транспортним засобам досягати кращих загальних характеристик польоту.
|
||||
|
||||
Pixhawk® 6C Mini ідеально підходить для розробників у корпоративних дослідницьких лабораторіях, стартапах, академічних закладах (дослідники, професори, студенти) та комерційних застосувань.
|
||||
The Pixhawk® 6C Mini is perfect for developers at corporate research labs, startups, academics (research, professors, students), and commercial applications.
|
||||
|
||||
**Key Design Points**
|
||||
|
||||
- High performance STM32H743 Processor with more computing power & RAM
|
||||
- Новий економічний дизайн із низькопрофільним форм-фактором
|
||||
- Нова інтегрована система віброізоляції, призначена для фільтрації високочастотних вібрацій та зменшення шуму для забезпечення точних даних
|
||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||
|
||||
## Технічні характеристики
|
||||
|
||||
### **Processors & Sensors**
|
||||
|
||||
- FMU Processor: STM32H743 
|
||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB memory, 1MB SRAM 
|
||||
- FMU Processor: STM32H743 
|
||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB memory, 1MB SRAM 
|
||||
- IO Processor: STM32F103
|
||||
-  32 Bit Arm® Cortex®-M3, 72MHz, 64KB SRAM 
|
||||
- On-board sensors 
|
||||
-  Accel/Gyro: ICM-42688-P 
|
||||
- Accel/Gyro: BMI055 
|
||||
- Mag: IST8310 
|
||||
-  32 Bit Arm® Cortex®-M3, 72MHz, 64KB SRAM 
|
||||
- On-board sensors 
|
||||
-  Accel/Gyro: ICM-42688-P 
|
||||
- Accel/Gyro: BMI055 
|
||||
- Mag: IST8310 
|
||||
- Барометр: MS5611
|
||||
|
||||
### **Electrical data**
|
||||
@@ -64,7 +64,7 @@ Pixhawk® 6C Mini ідеально підходить для розробник
|
||||
### **Mechanical data**
|
||||
|
||||
- Розміри: 53.3 x 39 x 16.2 mm
|
||||
- Вага: 39.2г
|
||||
- Weight: 39.2g
|
||||
|
||||
### **Interfaces**
|
||||
|
||||
@@ -123,7 +123,8 @@ Please refer to the [Pixhawk 4 Mini Wiring Quick Start](../assembly/quick_start_
|
||||
|
||||
## Розміри
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Номінальна напруга
|
||||
|
||||
@@ -138,7 +139,7 @@ _Pixhawk 6C Mini_ can be double-redundant on the power supply if two power sourc
|
||||
|
||||
**Absolute Maximum Ratings**
|
||||
|
||||
За таких умов система не буде витрачати жодної потужності (не буде працювати), але залишиться неушкодженою.
|
||||
Under these conditions, the system will not draw any power (will not be operational), but will remain intact.
|
||||
|
||||
1. **POWER1** inputs (operational range 4.1V to 5.7V, 0V to 10V undamaged)
|
||||
2. **USB** input (operational range 4.1V to 5.7V, 0V to 6V undamaged)
|
||||
|
||||
@@ -9,30 +9,44 @@ _Pixhawk 6X_<sup>®</sup> is the latest update to the successful family of Pi
|
||||
|
||||
It is based on the [Pixhawk® Autopilot FMUv6X Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-012%20Pixhawk%20Autopilot%20v6X%20Standard.pdf), [Autopilot Bus Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-010%20Pixhawk%20Autopilot%20Bus%20Standard.pdf), and [Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
||||
|
||||
Оснащений високопродуктивним процесором H7, модульним дизайном, потрійним резервуванням, платою IMU з контролем температури, ізольованими доменами сенсорів, що забезпечує неймовірну продуктивність, надійність та гнучкість.
|
||||
Equipped with a high-performance H7 Processor, modular design, triple redundancy, temperature-controlled IMU board, and isolated sensor domains, delivering incredible performance, reliability, and flexibility.
|
||||
|
||||
### Pixhawk 6X (Rev 3)
|
||||
### Pixhawk 6X (Rev 8)
|
||||
|
||||
<img src="../../assets/flight_controller/pixhawk6x/pixhawk6x_hero_upright.png" width="230px" title="Pixhawk6X Upright Image" /> <img src="../../assets/flight_controller/pixhawk6x/pixhawk6x_exploded_diagram.png" width="400px" title="Pixhawk6X Exploded Image" />
|
||||
<img src="../../assets/flight_controller/pixhawk6x/HB_6X_rev8_V2A.png" width="420px"/><img src="../../assets/flight_controller/pixhawk6x/hb_6x_internal_v2.png" width="320px"/>
|
||||
|
||||
### Pixhawk 6X (ICM-45686)
|
||||
#### Pixhawk 6X (Rev 3/4, discontinued)
|
||||
|
||||
<img src="../../assets/flight_controller/pixhawk6x/pixhawk6x_hero_upright.png" width="150px" title="Pixhawk6X Upright Image" /> <img src="../../assets/flight_controller/pixhawk6x/pixhawk6x_exploded_diagram.png" width="280px" title="Pixhawk6X Exploded Image" />
|
||||
|
||||
### Pixhawk 6X Baseboards Options
|
||||
|
||||
:::: tabs
|
||||
|
||||
:::tab Standard v2A
|
||||
|
||||

|
||||

|
||||
|
||||
:::
|
||||
|
||||
:::tab Standard v2B
|
||||
|
||||

|
||||

|
||||
:::
|
||||
|
||||
:::tab Mini
|
||||
|
||||

|
||||

|
||||
:::
|
||||
|
||||
:::tab Jetson Baseboard
|
||||
|
||||

|
||||
:::
|
||||
|
||||
:::tab CM4 Baseboard
|
||||
|
||||

|
||||
:::
|
||||
|
||||
::::
|
||||
@@ -53,15 +67,15 @@ This autopilot is [supported](../flight_controller/autopilot_pixhawk_standard.md
|
||||
|
||||
Зовнішня шина датчиків (SPI5) має дві лінії вибору чипів та сигнали готовності даних для додаткових датчиків та корисного навантаження з інтерфейсом SPI, а також з інтегрованим Microchip Ethernet PHY, високошвидкісний обмін даними з комп'ютерами місії через ethernet тепер можливий.
|
||||
|
||||
Pixhawk® 6X ідеально підходить для розробників у корпоративних дослідницьких лабораторіях, стартапах, академічних потреб (досліджень, професорів, студентів) та комерційного застосування.
|
||||
The Pixhawk® 6X is perfect for developers at corporate research labs, startups, academics (research, professors, students), and commercial applications.
|
||||
|
||||
## Ключові пункти дизайну
|
||||
|
||||
- Високопродуктивний процесор STM32H753
|
||||
- High-performance STM32H753 Processor
|
||||
- Modular flight controller: separated IMU, FMU, and Base system connected by a 100-pin & a 50-pin Pixhawk® Autopilot Bus connector.
|
||||
- Redundancy: 3x IMU sensors & 2x Barometer sensors on separate buses
|
||||
- Потрійне резервування доменів: повністю ізольовані сенсорні домени з окремими шинами та окремим керуванням живленням
|
||||
- Нова система ізоляції вібрацій для фільтрації високочастотних вібрацій та зменшення шуму для забезпечення точних вимірювань
|
||||
- Newly designed vibration isolation system to filter out high-frequency vibration and reduce noise to ensure accurate readings
|
||||
- Інтерфейс Ethernet для високошвидкісної інтеграції комп'ютера місії
|
||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||
|
||||
@@ -71,7 +85,11 @@ Pixhawk® 6X ідеально підходить для розробникі
|
||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB flash memory, 1MB RAM
|
||||
- IO Processor: STM32F100
|
||||
- 32 Bit Arm®️ Cortex®️-M3, 24MHz, 8KB SRAM
|
||||
- Сенсори на платі
|
||||
- On-board sensors (Shipping Currently, Rev 8)
|
||||
- Accel/Gyro: 3x ICM-45686 (with BalancedGyro™ Technology)
|
||||
- Barometer: ICP20100 & BMP388
|
||||
- Mag: BMM150
|
||||
- On-board sensors (Rev 3/4, discontinued)
|
||||
- Accel/Gyro: ICM-20649 або BMI088
|
||||
- Accel/Gyro: ICM-42688-P
|
||||
- Accel/Gyro: ICM-42670-P
|
||||
@@ -198,7 +216,7 @@ The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm P
|
||||
|
||||
**Absolute Maximum Ratings**
|
||||
|
||||
За таких умов система не буде витрачати жодної потужності (не буде працювати), але залишиться неушкодженою.
|
||||
Under these conditions, the system will not draw any power (will not be operational) but will remain intact.
|
||||
|
||||
1. **POWER1** and **POWER2** inputs (operational range 4.1V to 5.7V, 0V to 10V undamaged)
|
||||
2. **USB** input (operational range 4.1V to 5.7V, 0V to 6V undamaged)
|
||||
@@ -209,7 +227,7 @@ The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm P
|
||||
Digital I2C battery monitoring is enabled by default (see [Quickstart > Power](../assembly/quick_start_pixhawk6x.md#power)).
|
||||
|
||||
:::info
|
||||
Analog battery monitoring via an ADC is not supported on this particular board, but may be supported in variations of this flight controller with a different baseboard.
|
||||
Analog battery monitoring via an ADC is not supported on this particular board but may be supported in variations of this flight controller with a different baseboard.
|
||||
:::
|
||||
|
||||
## Збірка прошивки
|
||||
|
||||