Compare commits

...

97 Commits

Author SHA1 Message Date
Ramon Roche ad8f95cdcf ci: fix docker context
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 21:22:49 +00:00
Ramon Roche 34ca76b63c ci: dont enter sitl
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche cde7ffe7f9 container: px4-sitl image
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche 9d98581675 AppImage: XDG compliant paths for romfs contents
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche 68d8a7ce4c tools: appimage cleanup on exit
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche 7cb36ce47d make: bundle relevant libraries into appimage
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche c1069dcd2a ci: run on aws infra
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche 2f56d44e6f make: copy bundled libraries
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche b4ad8bbaa0 ci: try to bundle missing libraries
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:02 +00:00
Ramon Roche 11318ab861 make: fix build target for appimage
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 035a829dc5 ci: matrix includes
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche a25d90777e AppImage: adds debug mode
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 254251f4a6 make: remove unnecessary steps in AppImage 2025-07-03 18:59:01 +00:00
Ramon Roche b93eefcee7 ci: build x86 and arm64 AppImages
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 5e602788d7 ci: run the actual ubuntu setup script
silly me

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche b709b2bb29 ci: remov git ownership hack
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 5b209cf5f4 ci: build on oldest supported architecture
This makes it so its usable in ubuntu 22.04 & 24.04, otherwise we start
running into dependency issues in the system for example:

```
/tmp/.mount_PX4_AuYR3Xk1/usr/bin/px4: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_PX4_AuYR3Xk1/usr/bin/px4)
/tmp/.mount_PX4_AuYR3Xk1/usr/bin/px4: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /tmp/.mount_PX4_AuYR3Xk1/usr/bin/px4)
```

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 32fe48a02b ci: properly format yml
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche d94939b489 ci: extact image instead of mounting in CI
avoids security issues in the runner

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche bc96acb6b3 ci: run modprobe on additional step
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 68b22f16cf ci: inline install
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche cc384d44c7 ci: adds missing fuse dep
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 89cd709952 ci: needs libfuse2
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 5db88fb2bc ci: not sure why i left this here
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 5e1e2c9e29 ci: fix actions permissions scope
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche ce85cffbee ci: update tools and fix git ownership
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche f1a8606e74 tools: adds appimagetool to setup/ubuntu.sh
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche aec1fddc8a ci: create image on ci
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche b35ffa99bb tools: container for all
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Ramon Roche 6ac80069c2 build: make appimage
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-03 18:59:01 +00:00
Marco Hauswirth f7ffe27d4c GNSS Spoofing Warning Sensitivity Adjustment (#25144) 2025-07-03 14:13:03 +02:00
Hamish Willee 2c31e2bad5 Fix all possible HTTP to HTTPS docs links (#25153) 2025-07-03 18:09:58 +10:00
Hamish Willee 375f421c61 Link fixes galore (#25151) 2025-07-03 14:53:12 +10:00
Sergei Grichine dd0d00aedc Update 4009_gz_r1_rover (#25150) 2025-07-03 08:14:01 +09:00
Ramon Roche 6deac08b42 docs: remove old doxygen builds (#24743)
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-02 14:51:18 -07:00
Hamish Willee d3de49a867 Rename labeler.yml 2025-07-02 14:43:55 -07:00
Hamish Willee dddf18872f Add label to new pull requests that touch docs files 2025-07-02 14:43:55 -07:00
Hamish Willee 0622f12285 Create Labeler workflow 2025-07-02 14:43:55 -07:00
Sergei Grichine a4518580ac Update TransponderReport.msg - correct "heading" description (#25125) 2025-07-02 11:10:46 -08:00
QiTao Weng 30c8c23716 Correct all ADSB heading related field to be in positive range (#25128) 2025-07-02 11:10:28 -08:00
xue cb71aea7fa boards: Updated ZeroOne X6
* Starts pwm_voltage_apply
* Enable Septentrio modules
* Enable IIM42653 IMU
* Enable SCH16T IMU

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-07-02 09:13:01 -07:00
DATAGNSS 81000f4c71 Docs: update GEM1305 specs and add NANO HRTK Receiver (#24707)
* update GEM1305 specs and add NANO HRTK Receiver

- add NANO HRTK Receiver
- update GEM1305 specifications

* Update SUMMARY.md for NANO HRTK Receiver

- Update SUMMARY.md for NANO HRTK Receiver

* Fix up images

* Minor tweak

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-07-02 11:59:27 +10:00
Hamish Willee b2b6a5f44e Fix up hitl too 2025-07-02 11:49:08 +10:00
Hamish Willee 93a4ff8d01 Rework to check-first 2025-07-02 11:49:08 +10:00
Beniamino Pozzan e3e48d01d3 docs(sih): just mention CONFIG_MODULES_SIMULATION_SIMULATOR_SIH
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-07-02 11:49:08 +10:00
Hamish Willee 36485a0920 Split out the firmware setup 2025-07-02 11:49:08 +10:00
Beniamino Pozzan 8998a5baf9 docs(sih): Update instructions for sih
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-07-02 11:49:08 +10:00
Beniamino Pozzan af5f2f8b74 docs(hitl): Update instructions for hitl simulations
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-07-02 11:49:08 +10:00
Crowdin Bot 0f57d634f4 New Crowdin translations - ko 2025-07-02 09:11:14 +10:00
Crowdin Bot 9ed47b87f7 New Crowdin translations - uk 2025-07-02 09:10:43 +10:00
Crowdin Bot f180cf8b03 New Crowdin translations - zh-CN 2025-07-02 09:10:08 +10:00
chfriedrich98 5bb183afde Update fmu rover builds (#25139)
* rover: add rover build for all fmu versions

* rover: remove board specific exclusion of rover airframes
2025-07-01 10:31:12 -08:00
Ramon Roche 725d800a38 boards: save flash for KakuteH7-Wing 2025-07-01 10:23:49 -07:00
chfriedrich98 8af75adcbe gz: update submodule 2025-07-01 10:38:53 +02:00
chfriedrich98 5b1f58c069 differential: add generic differential rover gazebo airframe 2025-07-01 10:38:53 +02:00
Julian Oes 84c3abbba2 boards: LED fixup for Kakute 2025-07-01 10:48:18 +12:00
Julian Oes 75031fe375 boards: save flash on KakuteH7 dualimu
Due to trying to being compatible with the ArduPilot flash layout with
two sectors reserved for parameters.
2025-07-01 10:48:18 +12:00
Julian Oes 9cf3893266 boards: fixup image size of KakuteH7 dualimu
We have 1 sector for the bootloader and the last 2 for parameters.
That's to match how ArduPilot has it.
2025-07-01 10:48:18 +12:00
Julian Oes 8870d16ae0 Move NUM_MISSION_ITEMS_SUPPORTED to dataman
The define is used in dataman, not navigator, so this config variable
needs to be moved to the dataman module, otherwise it breaks the build
if navigator is not included in the build.
2025-07-01 10:25:00 +12:00
amovlgf fdef302e06 Add new Compass QMC5883P (#25115)
* add qmc5883p drivers

* format correction for qmc5883p

* make format

* remove extra newlines

---------

Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2025-06-30 10:33:21 -08:00
Hamish Willee acc12bb21d SIH Hexacopter X 2025-06-30 18:33:56 +02:00
Julian Oes e46e4dc80e commander: prevent race condition after mission
When a mission finishes with an RTL command, there's a race condition
between:
1. RTL command setting user_mode_intention RTL
2. Mission completion logic forcing LOITER

The auto-loiter transition was checking current nav_state (which is
still AUTO_MISSION) instead of any pending user_mode_intention,
causing it to override the RTL request.

Fix: Only auto-transition to loiter if no mode change is already
pending.
2025-06-30 09:20:44 -07:00
Julian Oes bfbd9bfe27 mavsdk_test: fix mission timeout check
We shouldn't adjust for lockstep speedup twice.
2025-06-30 09:20:44 -07:00
Julian Oes d03b1171f9 mavsdk_tests: fix mission finished state
This is an attempt to use MAVSDK's is_mission_finished APIs instead.
2025-06-30 09:20:44 -07:00
mahima-yoga 8c5dcbea12 mission: add RTL to is_mission_item_reached_or_completed()
This ensures that a mission is marked as completed when RTL is the last item or that the mission can continue if there is an intermediate RTL.
2025-06-30 09:20:44 -07:00
Matthias Grob daa491dc19 rc_update: make payload power switch an optional 3-way switch
to support 3 different power states for the payload.
2025-06-30 16:50:28 +02:00
Matthias Grob 1bccd5557a rc_update: add unit tests for two way payload power switch
with the intention to extend it to an optional 3 way switch.
2025-06-30 16:50:28 +02:00
Matthias Grob 8e7c2ed440 rc_update: allow payload power switch to be used for other boards than ARK FPV 2025-06-30 16:50:28 +02:00
Matthias Grob 64b92e46f8 rc_update: follow parameter member naming convention for payload power switch mapping 2025-06-30 16:50:28 +02:00
Matthias Grob fc3fd43fc7 rc_update: specify 2 decimal places for all float threshold parameter metadata 2025-06-30 16:50:28 +02:00
Beniamino Pozzan 6f972bbd43 chore: unify MC_RATE* param metadata (#25133)
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-06-29 13:56:06 -08:00
Davide Iafrate 650320281b Add support for ICM42688P IMU on mamba f405 mk2 v2 target (#25047)
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2025-06-29 13:46:41 -08:00
Matthias Grob 2bc04f91f8 docs: fix all end of file newlines
Note: Some files are autogenerated and I did not yet
go through each source of generation to fix it there.
Instead I adjusted the filter to only exclude those
such that we can fix things in steps.
2025-06-26 11:03:23 -07:00
Matthias Grob e9bac962ab docs index: fix special character encoding to be UTF-8 2025-06-26 11:03:23 -07:00
Hamish Willee 35096d3278 Remove images not linked from docs 2025-06-26 13:13:30 +10:00
Hamish Willee b3441b7221 Remove legacy translations 2025-06-26 13:13:30 +10:00
Hamish Willee 2bda1b08c9 Add image to repo, prettier 2025-06-26 12:49:44 +10:00
Jakub Kákona 804af78245 Update docs/en/telemetry/index.md
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-06-26 12:49:44 +10:00
Jakub Kákona 56e8d23fb0 Adding the TFSIK01 page. 2025-06-26 12:49:44 +10:00
Jakub Kákona 3ea9069ada Adding TFSIK01 telemetry radio docs page. 2025-06-26 12:49:44 +10:00
Matthias Grob bb6d43d5e3 uavcan battery: add support for cuav::equipment::power::CBAT message
emitted by e.g. uavcan Tattu batteries.
2025-06-25 21:11:23 +02:00
Matthias Grob 30d4ff3c6c uavcan battery: fix battery_status.scale, time_remaining and timestamp
- timestamp was 0 if uavcan::BatteryInfo was received before uavcan::BatteryInfoAux
- scale was not set as unknown (-1) even though it is since it's never updated
- time_remaining was not initialized correctly and could sometimes be 0
  unexpectedly which causes the drone to failsafe because there's reportedly no flight time left
2025-06-25 21:11:23 +02:00
Marco Hauswirth adc299d019 remove paths-ignore in workflows to enable CI-checks for pure CI changes... 2025-06-25 08:04:43 -07:00
Jakub Kákona 1a52656e8a Update broken airspeed sensors links
Add new TFPITOT01 Pitot Tube
2025-06-25 16:38:23 +10:00
Jakub Kákona b9ff50f92b Update thunderfly_auto_g2.md
Fix typos and update the note message.
2025-06-25 15:49:49 +10:00
Jakub Kákona 6ef8add164 Improve documentation links. 2025-06-25 15:49:49 +10:00
Crowdin Bot bcd5f6e208 New Crowdin translations - zh-CN 2025-06-25 13:33:35 +10:00
Crowdin Bot f0a20c19f9 New Crowdin translations - uk 2025-06-25 13:33:27 +10:00
Crowdin Bot bcd516f6af New Crowdin translations - ko 2025-06-25 13:33:22 +10:00
Hamish Willee 81ec385c3e Fix up link to flashing 2025-06-25 13:03:46 +10:00
Hamish Willee 3a54b482d2 Fix up cross links 2025-06-25 13:03:46 +10:00
Hamish Willee a1b8b3dabb Prettier, typos, minor wording 2025-06-25 13:03:46 +10:00
chfriedrich98 22f4222795 docs: overhaul rover documentation 2025-06-25 13:03:46 +10:00
PX4BuildBot ee3708ca82 docs: update parameter reference metadata 2025-06-25 12:13:22 +10:00
PX4BuildBot 940ce18e59 Failsafe web metadata updates 2025-06-25 12:13:22 +10:00
PX4BuildBot ae4322126a docs: metadata: update uORB graph JSONs 2025-06-25 12:13:22 +10:00
Alex Klimaj c6bb6cd435 extend satellite info to 40 (#25067)
Co-authored-by: Pedro Roque <padr@kth.se>
2025-06-24 13:14:08 -06:00
785 changed files with 14211 additions and 18048 deletions
+10
View File
@@ -0,0 +1,10 @@
# Labeler configuration file for GitHub Actions
# The action is ./.github/workflows/label.yml
# Docs for the syntax in this file can be found at
# https://github.com/actions/labeler
# Add 'Documentation' label to any changes within 'docs' folder or any subfolders
"Documentation+📑":
- changed-files:
- any-glob-to-any-file: docs/**
+44
View File
@@ -0,0 +1,44 @@
name: Build PX4 SITL AppImage
on:
pull_request:
branches:
- main
permissions:
contents: read
actions: write
jobs:
build-appimage:
name: "AppImage ${{ matrix.arch }}"
strategy:
fail-fast: false
matrix:
include:
- arch: amd64
runner: x64
- arch: arm64
runner: arm64
runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu22-full-${{ matrix.runner }}","run-id=${{ github.run_id }}"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Install Dependencies
run: ./Tools/setup/ubuntu.sh
- name: Build PX4 SITL and AppImage
env:
# avoid FUSE by extracting the AppImage inplace
APPIMAGE_EXTRACT_AND_RUN: "1"
run: |
make appimage
- name: Upload AppImage artifact
uses: actions/upload-artifact@v4
with:
name: px4-sitl-appimage-${{ matrix.arch }}
path: build/*.AppImage
-2
View File
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
-2
View File
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
runs-on: ubuntu-latest
-2
View File
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
-2
View File
@@ -9,13 +9,11 @@ on:
- 'release/**'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
env:
RUNS_IN_DOCKER: true
@@ -6,7 +6,6 @@ on:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
unit_tests:
@@ -4,7 +4,6 @@ on:
push:
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
unit_tests:
-2
View File
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
-2
View File
@@ -11,13 +11,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
env:
MIN_FLASH_POS_DIFF_FOR_COMMENT: 50
-2
View File
@@ -9,13 +9,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
check_itcm:
+21
View File
@@ -0,0 +1,21 @@
# This workflow will triage pull requests and apply a label based on the
# paths that are modified in the pull request.
# The paths are set up in .github/labeler.yml
#
# See: https://github.com/actions/labeler
name: Labeler
on: [pull_request_target]
jobs:
label:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/labeler@v5
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
-2
View File
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
-2
View File
@@ -6,13 +6,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
@@ -5,13 +5,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
defaults:
run:
shell: bash
+189
View File
@@ -0,0 +1,189 @@
name: SITL Container
on:
push:
branches:
- 'main'
- 'stable'
- 'beta'
- 'release/**'
tags:
- 'v*'
pull_request:
branches:
- '**'
workflow_dispatch:
inputs:
px4_version:
description: 'Container tag (e.g. v1.16.0)'
required: true
type: string
deploy_to_registry:
description: 'Whether to push built images to the registry'
required: false
type: boolean
default: false
jobs:
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
# If manual dispatch, take the userprovided input
- name: Set PX4 Tag Version
id: px4_version
run: |
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-sitl
px4io/px4-sitl
tags: |
type=raw,enable=true,value=${{ steps.px4_version.outputs.px4_version }},priority=1000
build:
name: Build (${{ 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: Install PX4 Dependencies
run: ./Tools/setup/ubuntu.sh
- name: Build PX4 SITL
run: make px4_sitl_default
- 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: .
file: Tools/sitl-container/Dockerfile
tags: |
ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-${{ matrix.arch }}
px4io/px4-sitl:${{ 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
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Verify Images Exist Before Creating Manifest
run: |
docker manifest inspect px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}-arm64 || echo "⚠️ Warning: No ARM64 image found!"
docker manifest inspect px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}-amd64 || echo "⚠️ Warning: No AMD64 image found!"
docker manifest inspect ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-arm64 || echo "⚠️ Warning: No ARM64 image found!"
docker manifest inspect ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-amd64 || echo "⚠️ Warning: No AMD64 image found!"
- name: Create and Push Multi-Arch Manifest for Docker Hub
run: |
docker manifest create px4io/px4-sitl:${{ needs.setup.outputs.px4_version }} \
--amend px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}-arm64 \
--amend px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}-amd64
docker manifest annotate px4io/px4-sitl:${{ needs.setup.outputs.px4_version }} px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}-arm64 --arch arm64
docker manifest annotate px4io/px4-sitl:${{ needs.setup.outputs.px4_version }} px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}-amd64 --arch amd64
docker manifest push px4io/px4-sitl:${{ needs.setup.outputs.px4_version }}
- name: Create and Push Multi-Arch Manifest for GHCR
run: |
docker manifest create ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }} \
--amend ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-arm64 \
--amend ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-amd64
docker manifest annotate ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }} ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-arm64 --arch arm64
docker manifest annotate ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }} ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}-amd64 --arch amd64
docker manifest push ghcr.io/px4/px4-sitl:${{ needs.setup.outputs.px4_version }}
-2
View File
@@ -11,13 +11,11 @@ on:
- 'main'
paths-ignore:
- 'docs/**'
- '.github/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/**'
jobs:
build:
-1
View File
@@ -496,7 +496,6 @@ add_custom_target(uorb_graph DEPENDS ${uorb_graph_config})
include(bloaty)
include(doxygen)
include(metadata)
include(package)
File diff suppressed because it is too large Load Diff
+37 -7
View File
@@ -264,6 +264,42 @@ px4fmu_firmware: \
check_px4_fmu-v5x_default \
sizes
# Create a one-file AppImage for PX4 SITL
PX4_VERSION := $(shell git describe --tags --match "v[0-9]*" 2>/dev/null || echo "v0.0.0")
.PHONY: AppImage
appimage: build/px4_sitl_default/bin/px4 build/px4_sitl_default/romfs_files.tar
@$(MAKE) px4_sitl_default
@$(RM) -rf build/px4.AppDir
@mkdir -p \
build/px4.AppDir/usr/bin \
build/px4.AppDir/usr/lib \
build/px4.AppDir/usr/share/px4/romfs/etc \
build/px4.AppDir/usr/share/px4/romfs/bin
@cp build/px4_sitl_default/bin/px4 build/px4.AppDir/usr/bin/
@echo "${PX4_VERSION}" > build/px4.AppDir/version.txt
# bundle required Gazebo transport libs (archagnostic lookup)
echo "→ Gathering shared-lib dependencies for px4..."
@ldd build/px4_sitl_default/bin/px4 \
| awk '/=>/ { print $$3 }' \
| grep -E '^/' \
| grep -Ev '/lib(c|gcc|stdc\+\+)\.so' \
| sort -u \
| while read lib; do \
echo " → bundling $$lib"; \
cp "$$lib" build/px4.AppDir/usr/lib/; \
done
@tar xf build/px4_sitl_default/romfs_files.tar -C build/px4.AppDir/usr/share/px4/romfs/etc
@cp build/px4_sitl_default/bin/px4-* build/px4.AppDir/usr/share/px4/romfs/bin/
@cp Tools/appimage/px4.desktop build/px4.AppDir/
@cp Tools/appimage/px4.svg build/px4.AppDir/
@cp Tools/appimage/AppRun build/px4.AppDir/
@chmod +x build/px4.AppDir/AppRun
@cd build && appimagetool px4.AppDir
misc_qgc_extra_firmware: \
check_nxp_fmuk66-v3_default \
check_mro_x21_default \
@@ -365,7 +401,7 @@ coverity_scan: px4_sitl_default
# Documentation
# --------------------------------------------------------------------
.PHONY: parameters_metadata airframe_metadata module_documentation extract_events px4_metadata doxygen
.PHONY: parameters_metadata airframe_metadata module_documentation extract_events px4_metadata
parameters_metadata:
@$(MAKE) --no-print-directory px4_sitl_default metadata_parameters ver_gen
@@ -381,12 +417,6 @@ extract_events:
px4_metadata: parameters_metadata airframe_metadata module_documentation extract_events
doxygen:
@mkdir -p "$(SRC_DIR)"/build/doxygen
@cd "$(SRC_DIR)"/build/doxygen && cmake "$(SRC_DIR)" $(CMAKE_ARGS) -G"$(PX4_CMAKE_GENERATOR)" -DCONFIG=px4_sitl_default -DBUILD_DOXYGEN=ON
@$(PX4_MAKE) -C "$(SRC_DIR)"/build/doxygen
@touch "$(SRC_DIR)"/build/doxygen/Documentation/.nojekyll
# Style
# --------------------------------------------------------------------
.PHONY: check_format format check_newlines
@@ -39,7 +39,7 @@ param set-default RO_YAW_P 5
param set-default RO_SPEED_LIM 2
param set-default RO_SPEED_I 0.01
param set-default RO_SPEED_P 0.1
param set-defatul RO_SPEED_RED 1
param set-default RO_SPEED_RED 1
# Pure Pursuit parameters
param set-default PP_LOOKAHD_GAIN 1
@@ -0,0 +1,56 @@
#!/bin/sh
# @name Generic Differential Rover
# @type Rover
# @class Rover
. ${R}etc/init.d/rc.rover_differential_defaults
PX4_SIMULATOR=${PX4_SIMULATOR:=gz}
PX4_GZ_WORLD=${PX4_GZ_WORLD:=rover}
PX4_SIM_MODEL=${PX4_SIM_MODEL:=rover_differential}
param set-default SIM_GZ_EN 1 # Gazebo bridge
param set-default NAV_ACC_RAD 0.5
# Differential Parameters
param set-default RD_WHEEL_TRACK 0.6
param set-default RD_TRANS_DRV_TRN 0.785398
param set-default RD_TRANS_TRN_DRV 0.174533
# Rate Control Parameters
param set-default RO_YAW_RATE_I 0.01
param set-default RO_YAW_RATE_P 0.25
param set-default RO_YAW_RATE_LIM 250
param set-default RO_YAW_ACCEL_LIM 400
param set-default RO_YAW_DECEL_LIM 800
param set-default RO_YAW_RATE_CORR 1
# Attitude Control Parameters
param set-default RO_YAW_P 5
# Velocity Control Parameters
param set-default RO_ACCEL_LIM 4
param set-default RO_DECEL_LIM 6
param set-default RO_JERK_LIM 10
param set-default RO_MAX_THR_SPEED 2
param set-default RO_SPEED_LIM 1.8
param set-default RO_SPEED_I 0.01
param set-default RO_SPEED_P 0.01
param set-default RO_SPEED_RED 1
# Pure Pursuit parameters
param set-default PP_LOOKAHD_GAIN 1
param set-default PP_LOOKAHD_MAX 10
param set-default PP_LOOKAHD_MIN 1
# Actuator mapping
param set-default SIM_GZ_WH_FUNC1 101 # right wheel
param set-default SIM_GZ_WH_MIN1 80
param set-default SIM_GZ_WH_MAX1 120
param set-default SIM_GZ_WH_DIS1 100
param set-default SIM_GZ_WH_FUNC2 102 # left wheel
param set-default SIM_GZ_WH_MIN2 80
param set-default SIM_GZ_WH_MAX2 120
param set-default SIM_GZ_WH_DIS2 100
@@ -114,6 +114,8 @@ px4_add_romfs_files(
17001_flightgear_tf-g1
17002_flightgear_tf-g2
50000_gz_rover_differential
71002_gz_spacecraft_2d
# [22000, 22999] Reserve for custom models
@@ -5,8 +5,5 @@
# @type Rover
# @class Rover
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.rover_differential_defaults
@@ -7,9 +7,6 @@
# @type Rover
# @class Rover
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.rover_differential_defaults
@@ -5,8 +5,5 @@
# @type Rover
# @class Rover
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.rover_ackermann_defaults
@@ -7,9 +7,6 @@
# @type Rover
# @class Rover
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.rover_ackermann_defaults
@@ -5,8 +5,5 @@
# @type Rover
# @class Rover
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.rover_mecanum_defaults
+1
View File
@@ -234,6 +234,7 @@ then
lis3mdl -X -q -a 0x1c start
fi
qmc5883l -X -q start
qmc5883p -X -q start
rm3100 -X -q start
# start last (wait for possible icm20948 passthrough mode)
+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env bash
set -e
DEBUG=false
for arg; do
case "$arg" in
--debug)
DEBUG=true
shift
;;
*)
break
;;
esac
done
if $DEBUG; then
echo "[DEBUG] Running in debug mode" >&2
fi
CUR_VER=$(<"$APPDIR/version.txt")
$DEBUG && echo "[DEBUG] PX4_VERSION = $CUR_VER" >&2
# figure out a stable logs directory
STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
ROMFS_DIR="$DATA_HOME/px4/romfs"
mkdir -p "$DATA_HOME/px4" "$STATE_HOME/px4"
$DEBUG && echo "[DEBUG] STATE_HOME = $STATE_HOME" >&2
$DEBUG && echo "[DEBUG] DATA_HOME = $STATE_HOME" >&2
# Read last unpacked version
LAST_VER_FILE="$STATE_HOME/px4/version"
LAST_VER=""
[ -f "$LAST_VER_FILE" ] && LAST_VER=$(<"$LAST_VER_FILE")
# if versions differ, refresh the payload
if [ "$CUR_VER" != "$LAST_VER" ]; then
$DEBUG && echo "[DEBUG] Version changed ($LAST_VER → $CUR_VER); updating ROMFS..." >&2
rm -fr "$ROMFS_DIR"
mkdir -p "$ROMFS_DIR"
cp -a "$APPDIR/usr/share/px4/romfs/." "$ROMFS_DIR"
echo "$CUR_VER" > "$LAST_VER_FILE"
else
if $DEBUG; then
echo "[DEBUG] Using cached ROMFS version $CUR_VER" >&2
fi
fi
LOG_DIR="$STATE_HOME/px4/logs"
mkdir -p "$LOG_DIR"
$DEBUG && echo "[DEBUG] LOG_DIR = $LOG_DIR" >&2
# pick up bundled libs first
export LD_LIBRARY_PATH="$APPDIR/usr/lib:$LD_LIBRARY_PATH"
export PATH="$ROMFS_DIR/bin:$ROMFS_DIR:$PATH"
$DEBUG && echo "[DEBUG] Launching: $APPDIR/usr/bin/px4 -w $ROMFS_DIR $*" >&2
exec "$APPDIR/usr/bin/px4" -w "$ROMFS_DIR" "$@"
+6
View File
@@ -0,0 +1,6 @@
[Desktop Entry]
Type=Application
Name=PX4 Autopilot SITL
Exec=px4 %F
Icon=px4
Categories=Development;
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

+2 -2
View File
@@ -3,14 +3,14 @@
return_value=0
# Check if there are files checked in that don't end in a newline (POSIX requirement)
git grep --cached -Il '' -- ':!docs/*' | xargs -L1 bash -c 'if test "$(tail -c 1 "$0")"; then echo "No new line at end of $0"; exit 1; fi'
git grep --cached -Il '' -- ':!docs/public/' ':!docs/ko/' ':!docs/uk/' ':!docs/zh/' | xargs -L1 bash -c 'if test "$(tail -c 1 "$0")"; then echo "No new line at end of $0"; exit 1; fi'
if [ $? -ne 0 ]; then
return_value=1
fi
# Check if there are files checked in that have duplicate newlines at the end (fail trailing whitespace checks)
git grep --cached -Il '' -- ':!docs/*' | xargs -L1 bash -c 'if tail -c 2 "$0" | ( read x && read y && [ x"$x" = x ] && [ x"$y" = x ]); then echo "Multiple newlines at the end of $0"; exit 1; fi'
git grep --cached -Il '' -- ':!docs/public/' ':!docs/ko/' ':!docs/uk/' ':!docs/zh/' | xargs -L1 bash -c 'if tail -c 2 "$0" | ( read x && read y && [ x"$x" = x ] && [ x"$y" = x ]); then echo "Multiple newlines at the end of $0"; exit 1; fi'
if [ $? -ne 0 ]; then
return_value=1
-13
View File
@@ -1,18 +1,5 @@
#! /bin/bash
if [ -z ${PX4_DOCKER_REPO+x} ]; then
echo "guessing PX4_DOCKER_REPO based on input";
if [[ $@ =~ .*clang.* ]] || [[ $@ =~ .*scan-build.* ]]; then
# clang tools
PX4_DOCKER_REPO="px4io/px4-dev-clang:2021-02-04"
elif [[ $@ =~ .*tests* ]]; then
# run all tests with simulation
PX4_DOCKER_REPO="px4io/px4-dev-simulation-bionic:2021-12-11"
fi
else
echo "PX4_DOCKER_REPO is set to '$PX4_DOCKER_REPO'";
fi
# otherwise default to nuttx
if [ -z ${PX4_DOCKER_REPO+x} ]; then
PX4_DOCKER_REPO="px4io/px4-dev:v1.16.0-rc1-258-g0369abd556"
+11
View File
@@ -126,9 +126,11 @@ if [[ $INSTALL_NUTTX == "true" ]]; then
genromfs \
gettext \
gperf \
fuse \
kconfig-frontends \
libelf-dev \
libexpat-dev \
libfuse2 \
libgmp-dev \
libisl-dev \
libmpc-dev \
@@ -156,6 +158,11 @@ if [[ $INSTALL_NUTTX == "true" ]]; then
gcc-arm-none-eabi \
gcc-multilib \
;
# Install the appimagetool for building AppImages
sudo wget -O /usr/local/bin/appimagetool \
https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
sudo chmod +x /usr/local/bin/appimagetool
fi
if [[ "${INSTALL_ARCH}" == "aarch64" ]]; then
@@ -163,6 +170,10 @@ if [[ $INSTALL_NUTTX == "true" ]]; then
g++-aarch64-linux-gnu \
g++-arm-linux-gnueabihf \
;
# Install the appimagetool for building AppImages
sudo wget -O /usr/local/bin/appimagetool \
https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-aarch64.AppImage
sudo chmod +x /usr/local/bin/appimagetool
fi
if [ -n "$USER" ]; then
+55
View File
@@ -0,0 +1,55 @@
FROM ubuntu:24.04
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
curl \
gnupg \
lsb-release \
libbsd0 \
libcom-err2 \
libc6 \
libgcc-s1 \
libgssapi-krb5-2 \
libk5crypto3 \
libkeyutils1 \
libkrb5-3 \
libkrb5support0 \
libmd0 \
libnorm1 \
libpgm-5.3-0 \
libprotobuf32 \
libprotobuf-lite32t64 \
libsodium23 \
libstdc++6 \
libuuid1 \
libzmq5 \
wget \
zlib1g \
&& rm -fr /var/lib/apt/lists/*
RUN curl -sSL https://packages.osrfoundation.org/gazebo.key \
| gpg --dearmor -o /usr/share/keyrings/gazebo-archive-keyring.gpg \
&& echo "deb [signed-by=/usr/share/keyrings/gazebo-archive-keyring.gpg] \
http://packages.osrfoundation.org/gazebo/ubuntu-stable \
$(lsb_release -cs) main" \
> /etc/apt/sources.list.d/gazebo-stable.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
libgz-msgs10 \
libgz-transport13 \
libgz-utils2 \
&& rm -fr /var/lib/apt/lists/*
COPY build/px4_sitl_default/bin /opt/px4/bin
COPY build/px4_sitl_default/etc /opt/px4/etc
WORKDIR /opt/px4
COPY Tools/sitl-container/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
EXPOSE 14540/udp 14550/udp 8888/udp
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD []
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
sudo docker run \
--rm -it \
--device /dev/fuse --cap-add SYS_ADMIN \
-p 14540:14540/udp \
-p 14550:14550/udp \
-p 8888:8888/udp \
px4-sitl:local
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
PX4_BIN=/opt/px4/bin/px4
# if no args passed, default to SITL none
if [ $# -eq 0 ]; then
exec "$PX4_BIN"
else
exec "$PX4_BIN" "$@"
fi
@@ -14,6 +14,7 @@ CONFIG_DRIVERS_GPS=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y
CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y
CONFIG_DRIVERS_IMU_INVENSENSE_MPU9250=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
CONFIG_DRIVERS_MAGNETOMETER_AKM_AK8963=y
CONFIG_DRIVERS_MAGNETOMETER_HMC5883=y
CONFIG_DRIVERS_PWM_OUT=y
@@ -5,14 +5,16 @@
board_adc start
if ! mpu6000 -R 6 -s start
then
if ! mpu6000 -R 6 -s start; then
# some boards such as the Hobbywing XRotor F4 G2 use the ICM-20602
icm20602 -s -R 6 start
if ! icm20602 -s -R 6 start; then
# The ICM-42688-P is used on the Diatone Mamba F405 MK2 v2
icm42688p -s -R 4 start
fi
fi
if ! hmc5883 -T -X start
then
then
if mpu9250_i2c -X -b 2 -a 0x68 -R 28 start; then
sleep 1 # wait for mpu9250 to be configured with bypass enabled
ak8963 -X -b 2 -R 30 start # -R 34
@@ -39,6 +39,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
initSPIBus(SPI::Bus::SPI1, {
initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortA, GPIO::Pin4}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortA, GPIO::Pin4}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortA, GPIO::Pin4}),
}),
initSPIBus(SPI::Bus::SPI2, {
initSPIDevice(DRV_OSD_DEVTYPE_ATXXXX, SPI::CS{GPIO::PortB, GPIO::Pin12}),
@@ -6,6 +6,7 @@ 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
@@ -62,7 +63,6 @@ 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
@@ -6,6 +6,7 @@ CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS1"
CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS2"
CONFIG_BOARD_SERIAL_RC="/dev/ttyS4"
CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS5"
CONFIG_BOARD_CONSTRAINED_FLASH=y
CONFIG_DRIVERS_ADC_BOARD_ADC=y
CONFIG_DRIVERS_BATT_SMBUS=y
CONFIG_DRIVERS_BAROMETER_INVENSENSE_ICP201XX=y
@@ -30,7 +31,6 @@ CONFIG_DRIVERS_UAVCAN=y
CONFIG_BOARD_UAVCAN_INTERFACES=1
CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE=6
CONFIG_MODULES_AIRSPEED_SELECTOR=y
CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=y
CONFIG_MODULES_BATTERY_STATUS=y
CONFIG_MODULES_CAMERA_FEEDBACK=y
CONFIG_MODULES_COMMANDER=y
@@ -70,22 +70,17 @@ CONFIG_MODULES_NAVIGATOR=y
CONFIG_NUM_MISSION_ITMES_SUPPORTED=1000
CONFIG_MODULES_RC_UPDATE=y
CONFIG_MODULES_SENSORS=y
CONFIG_MODULES_TEMPERATURE_COMPENSATION=y
# CONFIG_MODULES_TEMPERATURE_COMPENSATION is not set
CONFIG_MODULES_VTOL_ATT_CONTROL=y
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y
CONFIG_SYSTEMCMDS_BSONDUMP=y
CONFIG_SYSTEMCMDS_DMESG=y
CONFIG_SYSTEMCMDS_DUMPFILE=y
CONFIG_SYSTEMCMDS_GPIO=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_SYSTEM_TIME=y
CONFIG_SYSTEMCMDS_TOP=y
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y
CONFIG_SYSTEMCMDS_TUNE_CONTROL=y
CONFIG_SYSTEMCMDS_UORB=y
CONFIG_SYSTEMCMDS_USB_CONNECTED=y
@@ -7,7 +7,7 @@
"summary": "KAKUTEH7",
"version": "0.1",
"image_size": 0,
"image_maxsize": 1835008,
"image_maxsize": 1703936,
"git_identity": "",
"board_revision": 0
}
@@ -110,7 +110,7 @@
MEMORY
{
ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1792K /* params in last sector */
FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1664K /* params in last two sectors */
DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K
@@ -72,7 +72,7 @@
#define BOARD_TYPE 5409
#define BOARD_FLASH_SECTORS (14)
#define BOARD_FLASH_SIZE (16 * 128 * 1024)
#define APP_RESERVATION_SIZE (1 * 128 * 1024)
#define APP_RESERVATION_SIZE (2 * 128 * 1024)
#define OSC_FREQ 8
+25 -2
View File
@@ -48,6 +48,11 @@
* of leds for system indication at will and there is no
* separate switch, we need to build independent of the
* CONFIG_ARCH_LEDS configuration switch.
*
* KakuteH7 DualIMU LED configuration:
* - Red LED (PE9): TRIP LED, active high
* - Blue LED (PC2): Status LED, active low
* - Green LED: Hardware controlled, always on when powered (no software control)
*/
__BEGIN_DECLS
extern void led_init(void);
@@ -56,11 +61,28 @@ extern void led_off(int led);
extern void led_toggle(int led);
__END_DECLS
#ifdef CONFIG_ARCH_LEDS
static bool nuttx_owns_leds = true;
// B R S G
// 0 1 2 3
static const uint8_t xlatpx4[] = {1, 0, 4, 2};
# define xlat(p) xlatpx4[(p)]
static uint32_t g_ledmap[] = {
GPIO_LED_RED, // Indexed by BOARD_LED_RED
GPIO_nLED_BLUE, // Indexed by BOARD_LED_BLUE
};
#define xlat(p) (p)
static bool g_led_inverted[] = {
false, // LED_RED is active high
true, // LED_BLUE is active low
};
#else
# define xlat(p) (p)
static uint32_t g_ledmap[] = {
GPIO_nLED_BLUE, // Indexed by LED_BLUE
GPIO_LED_RED, // Indexed by LED_RED
GPIO_LED_RED, // Indexed by LED_RED
};
static bool g_led_inverted[] = {
@@ -68,6 +90,7 @@ static bool g_led_inverted[] = {
false, // LED_RED is active high
};
#endif
__EXPORT void led_init(void)
{
+13 -11
View File
@@ -1,15 +1,17 @@
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_DRIVERS_CAMERA_CAPTURE=y
CONFIG_DRIVERS_CAMERA_TRIGGER=y
CONFIG_DRIVERS_OPTICAL_FLOW_PX4FLOW=y
CONFIG_MODULES_CAMERA_FEEDBACK=y
CONFIG_MODULES_LOAD_MON=y
CONFIG_MODULES_ROVER_POS_CONTROL=y
CONFIG_MODULES_TEMPERATURE_COMPENSATION=y
CONFIG_SYSTEMCMDS_PERF=y
CONFIG_SYSTEMCMDS_UORB=y
CONFIG_SYSTEMCMDS_USB_CONNECTED=y
CONFIG_SYSTEMCMDS_WORK_QUEUE=y
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
+17
View File
@@ -0,0 +1,17 @@
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
+17
View File
@@ -0,0 +1,17 @@
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
+17
View File
@@ -0,0 +1,17 @@
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
-6
View File
@@ -1,23 +1,17 @@
CONFIG_DRIVERS_IRLOCK=n
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_UUV_ATT_CONTROL=n
CONFIG_MODULES_UUV_POS_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
# CONFIG_EKF2_WIND is not set
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
-3
View File
@@ -1,4 +1,3 @@
CONFIG_DRIVERS_IRLOCK=n
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
@@ -6,7 +5,6 @@ CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
@@ -14,7 +12,6 @@ CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
# CONFIG_EKF2_WIND is not set
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
-2
View File
@@ -5,7 +5,6 @@ CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
@@ -13,7 +12,6 @@ CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
# CONFIG_EKF2_WIND is not set
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
-2
View File
@@ -5,7 +5,6 @@ CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
@@ -13,7 +12,6 @@ CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
# CONFIG_EKF2_WIND is not set
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
-2
View File
@@ -5,7 +5,6 @@ CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
@@ -13,7 +12,6 @@ CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_ROBOCLAW=y
# CONFIG_EKF2_WIND is not set
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
+1 -4
View File
@@ -1,4 +1,3 @@
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_SF45_SERIAL=n
CONFIG_MODULES_AIRSPEED_SELECTOR=n
CONFIG_MODULES_FLIGHT_MODE_MANAGER=n
CONFIG_MODULES_FW_ATT_CONTROL=n
@@ -6,16 +5,14 @@ CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_FW_MODE_MANAGER=n
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n
CONFIG_MODULES_FW_RATE_CONTROL=n
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n
CONFIG_MODULES_LOCAL_POSITION_ESTIMATOR=n
CONFIG_MODULES_MC_ATT_CONTROL=n
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n
CONFIG_MODULES_MC_POS_CONTROL=n
CONFIG_MODULES_MC_RATE_CONTROL=n
CONFIG_MODULES_VTOL_ATT_CONTROL=n
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_SF45_SERIAL=n
CONFIG_DRIVERS_ROBOCLAW=y
# CONFIG_EKF2_WIND is not set
CONFIG_MODULES_ROVER_ACKERMANN=y
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
CONFIG_MODULES_ROVER_MECANUM=y
+34
View File
@@ -0,0 +1,34 @@
############################################################################
#
# Copyright (c) 2025 PX4 Development Team. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name PX4 nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
add_subdirectory(pwm_voltage)
+3
View File
@@ -20,6 +20,9 @@ CONFIG_DRIVERS_GPS=y
CONFIG_DRIVERS_HEATER=y
CONFIG_DRIVERS_IMU_BOSCH_BMI088=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM45686=y
CONFIG_DRIVERS_IMU_INVENSENSE_IIM42653=y
CONFIG_DRIVERS_IMU_MURATA_SCH16T=y
CONFIG_DRIVERS_GNSS_SEPTENTRIO=y
CONFIG_COMMON_INS=y
CONFIG_COMMON_LIGHT=y
CONFIG_COMMON_MAGNETOMETER=y
BIN
View File
Binary file not shown.
+3
View File
@@ -27,3 +27,6 @@ else
fi
safety_button start
# pwm voltage 3.3V/5V switch
pwm_voltage_apply start
+21 -96
View File
@@ -43,6 +43,7 @@ then
set INA_CONFIGURED yes
fi
if param compare SENS_EN_INA238 1
then
# Start Digital power monitors
@@ -55,96 +56,35 @@ then
set INA_CONFIGURED yes
fi
#Start Auterion Power Module selector for zeroone boards
if ver hwbasecmp 009 010 011
if ver hwtypecmp ZeroOneX6000
then
pm_selector_auterion start
else
if [ $INA_CONFIGURED = no ]
then
# INA226, INA228, INA238 auto-start
i2c_launcher start -b 1
if [ $HAVE_PM2 = yes ]
then
i2c_launcher start -b 2
fi
fi
# Internal SPI bus icm45686 with SPIX
icm45686 -b 2 -s -R 6 start //X6 & X6 air
bmi088 -A -R 4 -s start //X6
bmi088 -G -R 4 -s start //X6
# Internal SPI bus icm45686 with SPIX
icm45686 -b 1 -s -R 8 start //X6 & X6 air
fi
# Keep nesting shallow
if ver hwtypecmp V6X006 V6X008
if ver hwtypecmp ZeroOneX6001 //X6 PRO
then
if ver hwtypecmp V6X006
then
# Internal SPI bus ICM45686
adis16470 -s -R 0 start
iim42652 -s -R 6 start
icm45686 -s -R 10 start
else
# Internal SPI bus 3x ICM45686
icm45686 -b 3 -s -R 0 start
icm45686 -b 2 -s -R 0 start
icm45686 -b 1 -s -R 10 start
fi
else
if ver hwtypecmp V6X004
then
# Internal SPI bus ICM20649
icm20649 -s -R 6 start
else
# Internal SPI BMI088
if ver hwbasecmp 009 010 011
then
bmi088 -A -R 6 -s start
bmi088 -G -R 6 -s start
else
if ver hwtypecmp V6X010
then
bmi088 -A -R 0 -s start
bmi088 -G -R 0 -s start
else
bmi088 -A -R 4 -s start
bmi088 -G -R 4 -s start
fi
fi
fi
# Internal SPI bus IIM42653 with SPIX
iim42653 -b 2 -s -R 6 start
# Internal SPI bus ICM42688p
if ver hwbasecmp 009 010 011
then
icm42688p -R 12 -s start
else
if ver hwtypecmp V6X010
then
icm42688p -R 14 -s start
else
icm45686 -b 1 -s -R 8 start //ZeroOne
fi
fi
bmi088 -A -R 4 -s start
bmi088 -G -R 4 -s start
if ver hwtypecmp V6X003 V6X004
then
# Internal SPI bus ICM-42670-P (hard-mounted)
icm42670p -R 10 -s start
else
if ver hwbasecmp 009 010 011
then
icm20602 -R 6 -s start
else
# Internal SPI bus ICM-20649 (hard-mounted)
icm45686 -b 2 -s -R 6 start //ZeroOne
fi
fi
# Internal SPI bus IIM42653 with SPIX
iim42653 -b 1 -s -R 8 start
fi
rm3100 -I -b 4 start
# Internal magnetometer on I2c
# if ver hwtypecmp V6X001
# then
# rm3100 -I -b 4 start
# else
# # Internal magnetometer on I2C
# bmm150 -I -R 0 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
@@ -156,24 +96,9 @@ ist8310 start -I -a 0x0E -R 12
if param compare SENS_INT_BARO_EN 1
then
icp201xx -I -a 0x64 start
# if ver hwtypecmp V6X001 V6X006 V6X008
# then
# icp201xx -I -a 0x64 start
# else
# bmp388 -I -a 0x77 start
# fi
fi
icp201xx -X start
#external baro
# if ver hwtypecmp V6X001
# then
# icp201xx -X start
# else
# bmp388 -X start
# fi
# Baro on I2C3
ms5611 -X start
unset INA_CONFIGURED
unset HAVE_PM2
@@ -1,6 +1,6 @@
############################################################################
#
# Copyright (c) 2019 PX4 Development Team. All rights reserved.
# Copyright (c) 2025 PX4 Development Team. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -31,31 +31,12 @@
#
############################################################################
# Doxygen
px4_add_module(
MODULE modules__pwm_voltage_apply
MAIN pwm_voltage_apply
option(BUILD_DOXYGEN "Build doxygen documentation" OFF)
if (BUILD_DOXYGEN)
find_package(Doxygen)
if (DOXYGEN_FOUND)
# set input and output files
set(DOXYGEN_IN ${CMAKE_SOURCE_DIR}/Documentation/Doxyfile.in)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
# request to configure the file
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
# note the option ALL which allows to build the docs together with the application
add_custom_target(doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating documentation with Doxygen"
DEPENDS uorb_msgs parameters
VERBATIM
USES_TERMINAL
)
else()
message("Doxygen needs to be installed to generate documentation")
endif()
endif()
SRCS
pwm_voltage.cpp
DEPENDS
px4_work_queue
)
@@ -0,0 +1,43 @@
/****************************************************************************
*
* Copyright (c) 2025 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* Control PWM output voltage
*
* @value 0 3.3V
* @value 1 5.0V
*
* @reboot_required true
* @group PWM Outputs
*/
PARAM_DEFINE_INT32(PWM_VOLT_SEL, 0);
@@ -0,0 +1,56 @@
/****************************************************************************
*
* Copyright (c) 2025 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
#include <inttypes.h>
#include <stdint.h>
#include <px4_platform_common/getopt.h>
#include <px4_platform_common/module_params.h>
#include "board_config.h"
extern "C" int pwm_voltage_apply_main(int argc, char *argv[])
{
int32_t pwm_volt_sel = 0;
param_get(param_find("PWM_VOLT_SEL"), &pwm_volt_sel);
if (pwm_volt_sel != 0) {
PWM_5V_VOLT_SEL(true);
} else {
PWM_5V_VOLT_SEL(false);
}
return 0;
}
+10 -4
View File
@@ -215,10 +215,11 @@
#define GPIO_HW_VER_SENSE /* PH3 */ GPIO_ADC3_INP14
#define HW_INFO_INIT_PREFIX "ZeroOneX6"
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 2
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 3
// Base/FMUM
#define ZeroOneX6_0 HW_FMUM_ID(0x0) // ZeroOneX6, Sensor Set Rev 0
#define ZeroOneX6_1 HW_FMUM_ID(0x1) // ZeroOneX6, Sensor Set Rev 1
#define ZeroOneX6_0 HW_FMUM_ID(0x0) // ZeroOneX6,
#define ZeroOneX6_1 HW_FMUM_ID(0x1) // ZeroOneX6 Pro,
#define ZeroOneX6_2 HW_FMUM_ID(0x2) // reserved
#define UAVCAN_NUM_IFACES_RUNTIME 1
@@ -244,6 +245,10 @@
*/
#define DIRECT_PWM_OUTPUT_CHANNELS 9
/* PWM Power */
#define GPIO_PWM_VOLT_SEL /* PD15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN6)
#define PWM_5V_VOLT_SEL(on_true) px4_arch_gpiowrite(GPIO_PWM_VOLT_SEL, (on_true))
/* Power supply control and monitoring GPIOs */
#define GPIO_nPOWER_IN_A /* PG1 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN1)
@@ -457,7 +462,8 @@
GPIO_nSAFETY_SWITCH_LED_OUT_INIT, \
GPIO_SAFETY_SWITCH_IN, \
GPIO_PG6, \
GPIO_nARMED_INIT \
GPIO_nARMED_INIT, \
GPIO_PWM_VOLT_SEL \
}
#define BOARD_ENABLE_CONSOLE_BUFFER
+23 -12
View File
@@ -47,10 +47,6 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin8}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin4}, SPI::DRDY{GPIO::PortI, GPIO::Pin6}),
}, {GPIO::PortE, GPIO::Pin7}),
// initSPIBus(SPI::Bus::SPI4, {
// // no devices
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
// }, {GPIO::PortG, GPIO::Pin8}),
initSPIBus(SPI::Bus::SPI5, {
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
}),
@@ -60,21 +56,36 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
}),
}),
initSPIFmumID(ZeroOneX6_1, { // Placeholder
initSPIFmumID(ZeroOneX6_1, { // X6 Pro
initSPIBus(SPI::Bus::SPI1, {
initSPIDevice(DRV_IMU_DEVTYPE_ICM45686, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
initSPIDevice(DRV_IMU_DEVTYPE_IIM42653, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
}, {GPIO::PortI, GPIO::Pin11}),
initSPIBus(SPI::Bus::SPI2, {
initSPIDevice(DRV_IMU_DEVTYPE_ICM45686, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
initSPIDevice(DRV_IMU_DEVTYPE_IIM42653, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
}, {GPIO::PortF, GPIO::Pin4}),
initSPIBus(SPI::Bus::SPI3, {
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin8}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin4}),
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin4}, SPI::DRDY{GPIO::PortI, GPIO::Pin6}),
}, {GPIO::PortE, GPIO::Pin7}),
initSPIBus(SPI::Bus::SPI5, {
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
}),
initSPIBusExternal(SPI::Bus::SPI6, {
initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}),
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
}),
}),
initSPIFmumID(ZeroOneX6_2, { // reserved
initSPIBus(SPI::Bus::SPI1, {
initSPIDevice(DRV_IMU_DEVTYPE_IIM42653, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
}, {GPIO::PortI, GPIO::Pin11}),
initSPIBus(SPI::Bus::SPI2, {
initSPIDevice(DRV_IMU_DEVTYPE_SCH16T, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
}, {GPIO::PortF, GPIO::Pin4}),
initSPIBus(SPI::Bus::SPI3, {
initSPIDevice(DRV_IMU_DEVTYPE_SCH16T, SPI::CS{GPIO::PortI, GPIO::Pin4}, SPI::DRDY{GPIO::PortI, GPIO::Pin6}),
}, {GPIO::PortE, GPIO::Pin7}),
// initSPIBus(SPI::Bus::SPI4, {
// // no devices
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
// }, {GPIO::PortG, GPIO::Pin8}),
initSPIBus(SPI::Bus::SPI5, {
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
}),
+1 -1
View File
@@ -18,4 +18,4 @@ yarn-error.log
# Generated alternative _summary.md
# **/*/_summary.md
# **/*/_summary.md
@@ -16,4 +16,4 @@
document.location.replace(this.to);
}
}
</script>
</script>
+1 -1
View File
@@ -159,4 +159,4 @@
.vp-doc img {
display: inline; /* block by default set by vitepress */
}
}
+1 -1
View File
@@ -1 +1 @@
docs.px4.io
docs.px4.io
+1 -1
View File
@@ -1011,4 +1011,4 @@
},
"hideReason": "intended"
}
]
]
+1 -1
View File
@@ -1 +1 @@
["en/_sidebar.md"]
["en/_sidebar.md"]

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 524 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 KiB

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

+1 -1
View File
@@ -219,4 +219,4 @@
d="M 113.51898,180.06889 V 245.764 l 2.6517,-0.0192 v -65.67586 z"
id="path4768"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" /></svg>
sodipodi:nodetypes="ccccc" /></svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

+1 -1
View File
@@ -141,4 +141,4 @@
style="opacity:1;fill:#4ec3e8;fill-opacity:1;stroke:none;stroke-width:0.11511399;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d=""
id="path969"
inkscape:connector-curvature="0" /></svg>
inkscape:connector-curvature="0" /></svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

+1 -1
View File
@@ -81,4 +81,4 @@
d="m 54.341679,213.74572 c 2.37161,-3.60386 6.9481,-8.19494 7.64935,-9.88687 0.74741,1.64004 4.52647,6.50033 6.82427,9.88687"
id="path848"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" /></svg>
sodipodi:nodetypes="ccc" /></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -768,4 +768,4 @@
id="text7995"><path
d="m 13.413827,163.09012 q 0.266666,-8.16667 7.8,-8.2 4.033334,0 6.166667,2.66666 1.400001,1.83334 1.400001,4.26667 -0.03333,4.4 -5.000001,7.13334 l -3.333333,1.8 q -3.100001,1.66666 -3.900001,3.53333 -0.266666,0.6 -0.366666,1.33333 h 12.433334 v 2.9 H 12.880493 q 0.233334,-4.26666 1.900001,-6.5 1.433333,-1.86666 4.733333,-3.73333 l 3.066667,-1.73333 q 3.166667,-1.86667 3.2,-4.66667 0,-2.4 -2,-3.7 -1.166667,-0.73334 -2.666667,-0.73334 -4.366667,0 -4.766667,5.43334 0,0.1 0,0.2 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path4482" /></g></svg>
id="path4482" /></g></svg>

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

+1 -1
View File
@@ -142,4 +142,4 @@
id="text7999"><path
d="m 81.956066,73.258968 h -8.31978 v -3.33851 q 5.405207,-0.688899 6.994974,-1.90772 1.589767,-1.165829 2.702603,-4.928277 0.105985,-0.317953 0.211969,-0.635907 h 3.073549 v 37.571486 h -4.663315 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:52.99222565px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1;stroke-width:1.58976662px"
id="path10409" /></g></svg>
id="path10409" /></g></svg>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

@@ -437,4 +437,4 @@
id="text14502"><path
d="m 168.38719,13.98896 h -5.23333 v -2.100001 q 3.4,-0.433333 4.4,-1.2 1,-0.733333 1.7,-3.0999999 0.0667,-0.2 0.13333,-0.4 h 1.93334 V 30.822294 h -2.93334 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path19510" /></g></svg>
id="path19510" /></g></svg>

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

+1 -1
View File
@@ -437,4 +437,4 @@
id="text7995"><path
d="m 13.412346,163.07466 q 0.266666,-8.16667 7.8,-8.2 4.033334,0 6.166667,2.66667 1.400001,1.83333 1.400001,4.26666 -0.03333,4.4 -5.000001,7.13334 l -3.333333,1.8 q -3.100001,1.66667 -3.900001,3.53333 -0.266666,0.6 -0.366666,1.33334 h 12.433334 v 2.9 H 12.879012 q 0.233334,-4.26667 1.9,-6.5 1.433334,-1.86667 4.733334,-3.73334 l 3.066667,-1.73333 q 3.166667,-1.86667 3.2,-4.66667 0,-2.4 -2,-3.7 -1.166667,-0.73333 -2.666667,-0.73333 -4.366667,0 -4.766667,5.43333 0,0.1 0,0.2 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path21558" /></g></svg>
id="path21558" /></g></svg>

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

@@ -517,4 +517,4 @@
id="text23152"><path
d="m 314.42237,352.32882 h -9.96667 v -3.1 l 10.73334,-14.86667 h 2.16666 v 15.33333 h 3.5 v 2.63334 h -3.5 v 5.66666 h -2.93333 z m 0,-2.63334 v -10.33333 l -7.4,10.33333 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path23179" /></g></svg>
id="path23179" /></g></svg>

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

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