Compare commits

..

52 Commits

Author SHA1 Message Date
Peter van der Perk 7f2f71d99b tropic-community: Set FlexIO2 clocking for DShot 2025-07-17 22:00:30 +02:00
Peter van der Perk 8edc071e8c imxrt: dshot clean/up simplification 2025-07-17 22:00:00 +02:00
dirksavage88 2ce745568f fold both flexio's into one irq handler
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-07-17 12:26:52 -04:00
dirksavage88 2d0eedc71d replace flexio number with actual base value
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-07-17 09:45:31 -04:00
dirksavage88 e5b2584da7 revert board config
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-07-17 08:19:52 -04:00
dirksavage88 b23a7fc314 implement dshot on pwm 4
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-07-17 08:17:08 -04:00
Hamish Willee 78a2a3d0dd COM_FAIL_ACT_T - fix description of zero value 2025-07-17 07:55:49 +02:00
Hamish Willee 8e0f223b3a Link fixes and removal of dead docs (#25239)
* Remove Zubax Orel - not available and no other presence

* Fix up zubax product links

* Snapdragon flight - delete as no longer relevant hardware

* Delete intel aero docs

* Brushless whoop - remove docs except for link to old version

* Many link fixes
2025-07-17 15:30:56 +10:00
Hamish Willee 06d25b9400 [Doc] FW Takeoff update for waypoint and position loss + relnote (#25226)
* [Doc] FW Takeoff update for waypoint and position loss + relnote

* Update docs/en/flight_modes_fw/takeoff.md

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>

* Update for clarity

* Update docs/en/flight_modes_fw/takeoff.md

---------

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
2025-07-17 11:19:51 +10:00
bresch bfbc76189e ekf-agp: use same timeout value as other aid sources 2025-07-16 10:07:15 +02:00
Beat Küng 80febaf0f0 mc_pos_control: immediately switch out of goto setpoint when receiving trajectory_setpoint
Previously, when switching from a goto setpoint into a mode that publishes
trajectory_setpoint, the previous goto setpoint was still used for 500ms,
which then caused a setpoint jump.
This change makes sure that when a trajectory_setpoint is received, any
existing goto setpoint is marked as invalid immediately.
2025-07-16 09:02:47 +02:00
Beat Küng f0ecd9e757 fix commander: set failsafe action state immediately after failsafe update
There was a race condition: for example when an external mode disabled
failsafe deferring, that then triggered a failsafe, while the mode executor
immediately sends a command (to e.g. switch modes).
In that case the failsafe got triggered but the mode switch was still
allowed.
This was because of the processing ordering:
- mode updates (and propagating the failsafe_action_active state)
- failsafe updates
- command handling

This patch makes sure failsafe_action_active is set immediately after
updating the failsafes.
2025-07-15 17:18:54 +02:00
Beat Küng 168d99cd18 commander: do not trigger obsolete failsafe when deactivating failsafe deferring
Previously, when deferring was active and e.g. RC loss was triggered, and
RC regained, the action was not cleared, as the RC loss action only clears
on mode switch/disarm (when set to RTL for example).
When deferring was then disabled, the RC loss failsafe would still trigger.

This changes the behavior to immediately remove those actions when
deferring is active.

It also ensures to reset the Hold delay when deferring is disabled and no
failsafe is being deferred.
2025-07-15 17:18:54 +02:00
chfriedrich98 b8dacf5ae4 rover: fix speed setpoint in position controller 2025-07-15 13:55:28 +02:00
bresch 54f2652329 ekf2: always decorrelate pos and vel in vel reset 2025-07-15 13:44:55 +02:00
Matthias Grob f9b811b0c5 Commander: add option to ignore manual control loss in external modes 2025-07-15 13:08:18 +02:00
Marco Hauswirth a755dfa07f enable baro-gnss autocalibration by default (#25196) 2025-07-15 10:53:04 +02:00
chfriedrich98 b4bfbbb5e0 ackermann: add SIH (#25194) 2025-07-15 09:58:41 +02:00
Silvan Fuhrer 35a3f519f2 Revert "commander: publish full home attitude, not only yaw (#19717)"
This reverts commit 6855aa57c4.
2025-07-15 09:24:55 +02:00
Hamish Willee a3f1fb2e01 [Docs] Airframe param reset on update (#24964)
* Airframe param reset on update

* Update docs/en/dev_airframes/adding_a_new_frame.md

* Apply suggestions from code review

Co-authored-by: Matthias Grob <maetugr@gmail.com>

* Update adding_a_new_frame.md

* Update adding_a_new_frame.md

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
2025-07-15 13:32:44 +10:00
Hamish Willee f224d27e4d Docs: Prettier on takeoff and fix some links (#25218)
* Prettier on takeoff and fix some links

* Fix flaw link
2025-07-15 12:30:55 +10:00
Matthias Grob 7d33df4650 Doc Orbit: update and clarify configurability and behavior around limits (#25208)
* Doc Orbit: update and clarify configurability and behavior around limits

* run prettier

* Fix up link to table

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-07-15 12:29:29 +10:00
Stefano Colli 3c0a0ed129 mavlink_main: add profile handling (#25214) 2025-07-14 10:19:30 -08:00
Alexander Lerach 7f5119f402 sensors: autostart bmm350 and add it to common mags 2025-07-14 17:52:18 +02:00
mahima-yoga 4896099232 dds: rate_limit /fmu/out/wind to 1Hz 2025-07-14 16:12:00 +02:00
mahima-yoga fcbe017221 dds: add Wind topic to dds bridge 2025-07-14 16:12:00 +02:00
Silvan Fuhrer b326714d7c FWModeManager: use always bearing to Takeoff waypoint (if defined)
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-07-14 14:29:59 +02:00
Silvan Fuhrer 782e510105 Navigator: Takeoff mode: add state 2-state takeoff for fixed-wing
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-07-14 14:29:59 +02:00
Silvan Fuhrer e9e5c45bf3 FW mode manager/Commander: hanlde invlaid pos in FW manager
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-07-14 14:29:59 +02:00
Silvan Fuhrer b1af09d391 FW mode manager: during takeoff only set height rate, not altitude setpoint
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-07-14 14:29:59 +02:00
Silvan Fuhrer bdf1895145 Commander: on completion of takeoff, force state transition to Loiter
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-07-14 14:29:59 +02:00
PX4 Build Bot 84cdc05195 New Crowdin translations - ko (#25200)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-13 10:37:31 +10:00
PX4 Build Bot a5920edbb1 New Crowdin translations - uk (#25201)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-13 10:37:19 +10:00
PX4 Build Bot a01f39707e New Crowdin translations - zh-CN (#25202)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-13 10:37:13 +10:00
Jacob Dahl ce4dfaf39a fix missing function update 2025-07-11 08:53:52 -06:00
Jacob Dahl 09ebd21e55 mixer: remove used flag stop_outputs
dshot: fix motor test on CANnode

Also includes fixes for the DShot driver since stop_outputs is removed. The esc info command has been removed because it doesn't work with AM32, can only be used via command line, and complicates the driver
2025-07-11 08:53:52 -06:00
Jacob Dahl 6a1cefd7a6 uavcan: esc: fix uavcan ESC control
This fixes a number of issues with uavcan ESC control.

- Motor Testing when using a CANnode as a PWM expander now works by allowing the FunctionMotors class to perform prearm control

- The esc.RawCommand message is now always published for configured uavcan ESC outputs. Previously prior to arming the message would be published empty, which causes certain ESCs to enter an error state.

- Useless and redundant code has been removed and small name changes have been applied.
2025-07-11 08:53:52 -06:00
Hamish Willee 572a06b2f3 docs: update fuzz tests (split into separate page) 2025-07-11 10:39:28 +02:00
Beat Küng 3cfaaf73b4 docs: add section about fuzz testing 2025-07-11 10:39:28 +02:00
Beat Küng 8721269c78 septentrio: avoid compilation error
Even though all enum values fit into 13 bits, there's an error:
../../src/drivers/gnss/septentrio/sbf/messages.h:101:21: error: ‘septentrio::sbf::Header::id_number’ is too small to hold all values of ‘enum class septentrio::sbf::BlockID’ [-Werror]
This is with GCC 13.3.0 under Ubuntu 24.04
2025-07-11 10:39:28 +02:00
Beat Küng d5942bd631 septentrio: fix clang-tidy warnings 2025-07-11 10:39:28 +02:00
Beat Küng c801fd36d3 ci: add fuzzing workflow
This will run all fuzzing tests for 15 minutes once a day.
2025-07-11 10:39:28 +02:00
Beat Küng 9ba2ac4e10 fix adsb: cast enum in printf
Build failure with clang:
fatal error: format specifies type 'int' but the argument has type
'TRAFFIC_STATE' [-Wformat]
2025-07-11 10:39:28 +02:00
Beat Küng 7594a270f7 tests: remove previous fuzz testing
We now use https://github.com/google/fuzztest (see previous commits).
And the test was also failing to build
(https://github.com/PX4/PX4-Autopilot/actions/workflows/cflite_batch.yml)

This reverts these commits:
- 9eda5b373c
- 2cbc993976
- be0a5b4b32
2025-07-11 10:39:28 +02:00
Beat Küng e50f1774ae septentrio: add fuzz tests 2025-07-11 10:39:28 +02:00
Beat Küng d31f227f15 tests: add mavlink fuzz test
Based on the previous fuzz tests in main_fuzztesting.cpp
2025-07-11 10:39:28 +02:00
Beat Küng 9472b4b1f7 refactor: remove '#define MODULE_NAME' from tests
And use target_compile_definitions() instead
2025-07-11 10:39:28 +02:00
Beat Küng 6ce1634dea fix msp_osd: ASAN raised some buffer overflows when running the unit tests 2025-07-11 10:39:28 +02:00
Beat Küng 8370ae1701 test_dataman: remove invalid item tests
They caused ASAN failures. And since the dm_item_t is an enum, I don't
think it needs a test.
2025-07-11 10:39:28 +02:00
Beat Küng fd2ded08e4 pxh: do not use variable sized array on the stack
This is a compiler-specific extension
2025-07-11 10:39:28 +02:00
Beat Küng d9743cc0ef septentrio: add to sitl build & fix compile problems
posix defines a macro OK, so the enum needed to be renamed
2025-07-11 10:39:28 +02:00
Beat Küng 3d1cace7b7 test: add google fuzztest to unit test build
From https://github.com/google/fuzztest.
This will now also add gtest (via cmake FetchContent)

And requires newer cmake (container updates):
CMake 3.19 or higher is required.  You are running version 3.16.3
2025-07-11 10:39:28 +02:00
473 changed files with 2672 additions and 2255 deletions
-7
View File
@@ -1,7 +0,0 @@
FROM gcr.io/oss-fuzz-base/base-builder:v1
COPY . $SRC/PX4-Autopilot
RUN apt-get install -y libjpeg8-dev zlib1g-dev
RUN pip3 install --upgrade pip
RUN python3 -m pip install -r $SRC/PX4-Autopilot/Tools/setup/requirements.txt
WORKDIR $SRC/PX4-Autopilot
COPY ./.clusterfuzzlite/build.sh $SRC/
-4
View File
@@ -1,4 +0,0 @@
#!/usr/bin/env bash -eu
PX4_FUZZ=1 make px4_sitl
cp build/px4_sitl_default/bin/px4 $OUT/px4
-1
View File
@@ -1 +0,0 @@
language: c++
-34
View File
@@ -1,34 +0,0 @@
name: ClusterFuzzLite batch fuzzing
on:
schedule:
- cron: '0 6 * * *' # UTC 6am every day.
permissions: read-all
jobs:
BatchFuzzing:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sanitizer:
- address
- undefined
- memory
steps:
- name: Build Fuzzers (${{ matrix.sanitizer }})
id: build
uses: google/clusterfuzzlite/actions/build_fuzzers@v1
with:
sanitizer: ${{ matrix.sanitizer }}
- name: Run Fuzzers (${{ matrix.sanitizer }})
id: run
uses: google/clusterfuzzlite/actions/run_fuzzers@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
fuzz-seconds: 1800 # 30 mins
mode: 'batch'
sanitizer: ${{ matrix.sanitizer }}
# Optional but recommended: For storing certain artifacts from fuzzing.
# See later section on "Git repo for storage".
# storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/OWNER/STORAGE-REPO-NAME.git
# storage-repo-branch: main # Optional. Defaults to "main"
# storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages".
@@ -23,7 +23,7 @@ jobs:
- name: main test
uses: addnab/docker-run-action@v3
with:
image: px4io/px4-dev-base-focal:2021-09-08
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
options: -v ${{ github.workspace }}:/workspace
run: |
cd /workspace
@@ -19,7 +19,7 @@ jobs:
- name: main test
uses: addnab/docker-run-action@v3
with:
image: px4io/px4-dev-base-focal:2021-09-08
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
options: -v ${{ github.workspace }}:/workspace
run: |
cd /workspace
+38
View File
@@ -0,0 +1,38 @@
name: Fuzzing
on:
schedule:
- cron: '0 6 * * *' # UTC 6am every day.
permissions:
contents: read
env:
RUNS_IN_DOCKER: true
jobs:
Fuzzing:
runs-on: ubuntu-latest
container:
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
steps:
- name: Install Dependencies
run: |
apt update && apt install -y clang
- name: Fix git in Container
run: |
git config --global --add safe.directory $(realpath .)
- uses: actions/checkout@v4
- name: Build and Run Fuzz Tests
run: |
# Only build the tests
export CC=clang
export CXX=clang++
make tests TESTFILTER=__no_tests__
# Run the fuzz tests
for fuzz_binary in build/px4_sitl_test/*fuzz*; do
./Tools/ci/run_fuzz_tests.sh $fuzz_binary 15m
done
+3
View File
@@ -89,3 +89,6 @@
[submodule "src/drivers/uavcan/libdronecan/libuavcan/dsdl_compiler/pydronecan"]
path = src/drivers/uavcan/libdronecan/libuavcan/dsdl_compiler/pydronecan
url = https://github.com/dronecan/pydronecan
[submodule "test/fuzztest"]
path = test/fuzztest
url = https://github.com/google/fuzztest.git
+27 -40
View File
@@ -334,6 +334,33 @@ if(NOT PX4_CHIP)
message(FATAL_ERROR "px4_os_determine_build_chip() needs to set PX4_CHIP")
endif()
#=============================================================================
# Testing - Automatic unit and integration testing with CTest
# (Needs to be before setting the common compile flags)
#
# optionally enable cmake testing (supported only on posix)
option(CMAKE_TESTING "Configure test targets" OFF)
if(${PX4_CONFIG} STREQUAL "px4_sitl_test")
set(CMAKE_TESTING ON)
endif()
if(CMAKE_TESTING)
include(CTest) # sets BUILD_TESTING variable
endif()
# enable test filtering to run only specific tests with the ctest -R regex functionality
set(TESTFILTER "" CACHE STRING "Filter string for ctest to selectively only run specific tests (ctest -R)")
include(px4_add_gtest)
if(BUILD_TESTING)
# Setting FUZZTEST_FUZZING_MODE=on enables ASAN, and is only supported with Clang
if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang"))
set(FUZZTEST_FUZZING_MODE ON)
endif()
add_subdirectory(test)
fuzztest_setup_fuzzing_flags()
endif()
#=============================================================================
# build flags
#
@@ -386,46 +413,6 @@ if (NOT EXTERNAL_MODULES_LOCATION STREQUAL "")
endforeach()
endif()
#=============================================================================
# Testing - Automatic unit and integration testing with CTest
#
# optionally enable cmake testing (supported only on posix)
option(CMAKE_TESTING "Configure test targets" OFF)
if(${PX4_CONFIG} STREQUAL "px4_sitl_test")
set(CMAKE_TESTING ON)
endif()
if(CMAKE_TESTING)
include(CTest) # sets BUILD_TESTING variable
endif()
# enable test filtering to run only specific tests with the ctest -R regex functionality
set(TESTFILTER "" CACHE STRING "Filter string for ctest to selectively only run specific tests (ctest -R)")
# if testing is enabled download and configure gtest
list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/cmake/gtest/)
include(px4_add_gtest)
if(BUILD_TESTING)
include(gtest)
# Ensure there's no -R without any filter expression since that trips newer ctest versions
if(TESTFILTER)
set(TESTFILTERARG "-R")
else()
set(TESTFILTERARG "")
endif()
add_custom_target(test_results
COMMAND GTEST_COLOR=1 ${CMAKE_CTEST_COMMAND} --output-on-failure -T Test ${TESTFILTERARG} ${TESTFILTER}
DEPENDS
px4
examples__dyn_hello
USES_TERMINAL
COMMENT "Running tests"
WORKING_DIRECTORY ${PX4_BINARY_DIR})
set_target_properties(test_results PROPERTIES EXCLUDE_FROM_ALL TRUE)
endif()
#=============================================================================
# subdirectories
#
-5
View File
@@ -160,11 +160,6 @@ else
override CMAKE_ARGS += -DCMAKE_BUILD_TYPE=UndefinedBehaviorSanitizer
endif
# Fuzz Testing
ifdef PX4_FUZZ
override CMAKE_ARGS += -DCMAKE_BUILD_TYPE=FuzzTesting
endif
endif
# Pick up specific Python path if set
@@ -0,0 +1,72 @@
#!/bin/sh
# @name Rover Ackermann
# @type Rover
# @class Rover
. ${R}etc/init.d/rc.rover_ackermann_defaults
set VEHICLE_TYPE rover_ackermann
param set-default CA_AIRFRAME 5 # Rover (Ackermann)
param set-default CA_R_REV 1 # Motor is assumed to be reversible
param set-default EKF2_MAG_TYPE 1 # Make sure magnetometer is fused even when not driving
param set-default NAV_ACC_RAD 0.5 # Waypoint acceptance radius
param set-default EKF2_GBIAS_INIT 0.01
param set-default EKF2_ANGERR_INIT 0.01
PX4_SIMULATOR=${PX4_SIMULATOR:=sihsim}
PX4_SIM_MODEL=${PX4_SIM_MODEL:=rover_ackermann}
param set-default SIH_VEHICLE_TYPE 5 # sih as rover ackermann
param set-default PWM_MAIN_FUNC1 201 # Steering
param set-default PWM_MAIN_FUNC2 101 # Throttle
param set-default SIH_MASS 20
param set-default SIH_IXX 0.4333
param set-default SIH_IYY 1.6833
param set-default SIH_IZZ 2.0833
param set-default SIH_IXZ 0
param set-default SIH_KDV 50
param set-default SIH_KDW 10
param set-default SENS_EN_GPSSIM 1
param set-default SENS_EN_BAROSIM 1
param set-default SENS_EN_MAGSIM 1
# Ackermann Parameters
param set-default RA_WHEEL_BASE 0.321
param set-default RA_ACC_RAD_GAIN 2
param set-default RA_ACC_RAD_MAX 3
param set-default RA_MAX_STR_ANG 0.5236
param set-default RA_STR_RATE_LIM 360
# 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 180
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 3
param set-default RO_DECEL_LIM 3
param set-default RO_JERK_LIM 10
param set-default RO_MAX_THR_SPEED 3.2
param set-default RO_SPEED_LIM 3
param set-default RO_SPEED_I 0.001
param set-default RO_SPEED_P 0.001
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
# Pure Pursuit parameters
param set-default PP_LOOKAHD_GAIN 1
param set-default PP_LOOKAHD_MAX 10
param set-default PP_LOOKAHD_MIN 1
@@ -108,6 +108,7 @@ px4_add_romfs_files(
10042_sihsim_xvert
10043_sihsim_standard_vtol
10044_sihsim_hex
10045_sihsim_rover_ackermann
17001_flightgear_tf-g1
17002_flightgear_tf-g2
+1
View File
@@ -236,6 +236,7 @@ then
qmc5883l -X -q start
qmc5883p -X -q start
rm3100 -X -q start
bmm350 -X -q start
# start last (wait for possible icm20948 passthrough mode)
ak09916 -X -q start
@@ -24,6 +24,7 @@ exec find boards msg src platforms test \
-path src/modules/ekf2/EKF/yaw_estimator/derivation/generated -prune -o \
-path src/modules/gyro_fft/CMSIS_5 -prune -o \
-path src/modules/mavlink/mavlink -prune -o \
-path test/fuzztest -prune -o \
-path test/mavsdk_tests/catch2 -prune -o \
-path src/lib/crypto/monocypher -prune -o \
-path src/lib/crypto/libtomcrypt -prune -o \
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
# This script runs the fuzz tests from a given binary for a certain amount of time
set -e
if [[ "$1" == "--help" || "$1" == "-h" || -z "$1" ]]; then
echo "Usage: $0 <binary> [<duration>]"
echo "duration can be for example 5m or 5h"
exit 0
fi
binary="$1"
duration="$2"
[[ -z "$duration" ]] && duration="1m"
# Iterate over all available fuzz tests in the binary
for t in $("$binary" --fuzz=__non_existent__ 2>&1 | sed '1,/^Valid tests:$/d' | tr -d ' '); do
echo "Running $t"
"$binary" --fuzz="$t" --fuzz_for="$duration"
done
-1
View File
@@ -18,7 +18,6 @@ CONFIG_COMMON_INS=y
CONFIG_COMMON_LIGHT=y
CONFIG_COMMON_MAGNETOMETER=y
CONFIG_DATAMAN_PERSISTENT_STORAGE=n
CONFIG_DRIVERS_MAGNETOMETER_BOSCH_BMM350=y
CONFIG_DRIVERS_PWM_OUT=y
CONFIG_DRIVERS_RC_INPUT=y
CONFIG_DRIVERS_ROBOCLAW=y
@@ -25,7 +25,6 @@ CONFIG_COMMON_INS=y
CONFIG_COMMON_LIGHT=y
CONFIG_DRIVERS_LIGHTS_RGBLED_PWM=y
CONFIG_COMMON_MAGNETOMETER=y
CONFIG_DRIVERS_MAGNETOMETER_BOSCH_BMM350=y
CONFIG_COMMON_OPTICAL_FLOW=y
CONFIG_COMMON_OSD=y
CONFIG_DRIVERS_POWER_MONITOR_INA226=y
@@ -138,6 +138,9 @@
#define CONFIG_FLEXIO1_CLK 1
#define CONFIG_FLEXIO1_PRED_DIVIDER 5
#define CONFIG_FLEXIO1_PODF_DIVIDER 1
#define CONFIG_FLEXIO2_CLK 1
#define CONFIG_FLEXIO2_PRED_DIVIDER 5
#define CONFIG_FLEXIO2_PODF_DIVIDER 1
#define CONFIG_PLL3_PFD2_FRAC 16
#define BOARD_FLEXIO_PREQ 108000000
+14
View File
@@ -301,6 +301,20 @@ void imxrt_flexio_clocking(void)
reg |= CCM_CDCDR_FLEXIO1_CLK_PRED
(CCM_PRED_FROM_DIVISOR(CONFIG_FLEXIO1_PRED_DIVIDER));
putreg32(reg, IMXRT_CCM_CDCDR);
reg = getreg32(IMXRT_CCM_CSCMR2);
reg &= ~(CCM_CSCMR2_FLEXIO2_CLK_SEL_MASK);
reg |= CCM_CSCMR2_FLEXIO2_CLK_SEL(CONFIG_FLEXIO2_CLK);
putreg32(reg, IMXRT_CCM_CSCMR2);
reg = getreg32(IMXRT_CCM_CS1CDR);
reg &= ~(CCM_CS1CDR_FLEXIO2_CLK_PRED_MASK |
CCM_CS1CDR_FLEXIO2_CLK_PODF_MASK);
reg |= CCM_CS1CDR_FLEXIO2_CLK_PODF
(CCM_PODF_FROM_DIVISOR(CONFIG_FLEXIO2_PODF_DIVIDER));
reg |= CCM_CS1CDR_FLEXIO2_CLK_PRED
(CCM_PRED_FROM_DIVISOR(CONFIG_FLEXIO2_PRED_DIVIDER));
putreg32(reg, IMXRT_CCM_CS1CDR);
}
@@ -77,19 +77,22 @@
constexpr io_timers_t io_timers[MAX_IO_TIMERS] = {
initIOPWMDshot(PWM::FlexPWM2, PWM::Submodule0), // PWM_1, PMW_5
initIOPWMDshot(PWM::FlexPWM2, PWM::Submodule1), // PWM_0
initIOPWM(PWM::FlexPWM2, PWM::Submodule2), // PWM_4
initIOPWMDshot(PWM::FlexPWM2, PWM::Submodule2), // PWM_4
initIOPWMDshot(PWM::FlexPWM4, PWM::Submodule2), // PWM_2, PWM_3
};
#define FXIO_IOMUX (IOMUX_SLEW_FAST | IOMUX_DRIVE_130OHM | IOMUX_PULL_UP_47K | IOMUX_SCHMITT_TRIGGER)
//TODO: distinguish between the different FlexIO instances
//
constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_A, PWM::Submodule0}, IOMUX::Pad::GPIO_EMC_06, GPIO_FLEXIO1_FLEXIO06_1 | FXIO_IOMUX, 6), /* RevA. PWM_1 RevB. PWM1 */
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_B, PWM::Submodule0}, IOMUX::Pad::GPIO_EMC_07, GPIO_FLEXIO1_FLEXIO07_1 | FXIO_IOMUX, 7), /* RevA. PWM_5 RevB. PWM2 */
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_A, PWM::Submodule1}, IOMUX::Pad::GPIO_EMC_08, GPIO_FLEXIO1_FLEXIO08_1 | FXIO_IOMUX, 8), /* RevA. PWM_0 RevB. PWM3 */
initIOTimerChannel(io_timers, {PWM::PWM2_PWM_B, PWM::Submodule2}, IOMUX::Pad::GPIO_B0_11), /* RevA. PWM_4 RevB. PWM4 */
initIOTimerChannelDshot(io_timers, {PWM::PWM4_PWM_A, PWM::Submodule2}, IOMUX::Pad::GPIO_EMC_04, GPIO_FLEXIO1_FLEXIO04_1 | FXIO_IOMUX, 4), /* RevA. PWM_3 RevB. PWM5 */
initIOTimerChannelDshot(io_timers, {PWM::PWM4_PWM_B, PWM::Submodule2}, IOMUX::Pad::GPIO_EMC_05, GPIO_FLEXIO1_FLEXIO05_1 | FXIO_IOMUX, 5), /* RevA. PWM_2 RevB. PWM6 */
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_A, PWM::Submodule0}, IOMUX::Pad::GPIO_EMC_06, GPIO_FLEXIO1_FLEXIO06_1 | FXIO_IOMUX, IMXRT_FLEXIO1_BASE, 6), /* RevA. PWM_1 RevB. PWM1 */
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_B, PWM::Submodule0}, IOMUX::Pad::GPIO_EMC_07, GPIO_FLEXIO1_FLEXIO07_1 | FXIO_IOMUX, IMXRT_FLEXIO1_BASE, 7), /* RevA. PWM_5 RevB. PWM2 */
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_A, PWM::Submodule1}, IOMUX::Pad::GPIO_EMC_08, GPIO_FLEXIO1_FLEXIO08_1 | FXIO_IOMUX, IMXRT_FLEXIO1_BASE, 8), /* RevA. PWM_0 RevB. PWM3 */
initIOTimerChannelDshot(io_timers, {PWM::PWM2_PWM_B, PWM::Submodule2}, IOMUX::Pad::GPIO_B0_11, GPIO_FLEXIO2_FLEXIO11_1 | FXIO_IOMUX, IMXRT_FLEXIO2_BASE, 11), /* RevA. PWM_4 RevB. PWM4 */
initIOTimerChannelDshot(io_timers, {PWM::PWM4_PWM_A, PWM::Submodule2}, IOMUX::Pad::GPIO_EMC_04, GPIO_FLEXIO1_FLEXIO04_1 | FXIO_IOMUX, IMXRT_FLEXIO1_BASE, 4), /* RevA. PWM_3 RevB. PWM5 */
initIOTimerChannelDshot(io_timers, {PWM::PWM4_PWM_B, PWM::Submodule2}, IOMUX::Pad::GPIO_EMC_05, GPIO_FLEXIO1_FLEXIO05_1 | FXIO_IOMUX, IMXRT_FLEXIO1_BASE, 5), /* RevA. PWM_2 RevB. PWM6 */
};
constexpr io_timers_channel_mapping_t io_timers_channel_mapping =
+1
View File
@@ -4,6 +4,7 @@ CONFIG_BOARD_ETHERNET=y
CONFIG_BOARD_ROOT_PATH="."
CONFIG_DRIVERS_CAMERA_TRIGGER=y
CONFIG_DRIVERS_GPS=y
CONFIG_DRIVERS_GNSS_SEPTENTRIO=y
CONFIG_DRIVERS_OSD_MSP_OSD=y
CONFIG_DRIVERS_TONE_ALARM=y
CONFIG_MODULES_AIRSHIP_ATT_CONTROL=y
-2
View File
@@ -8,8 +8,6 @@ if(REPLAY_FILE)
message(STATUS "Building without lockstep for replay")
set(ENABLE_LOCKSTEP_SCHEDULER no)
elseif(CMAKE_BUILD_TYPE STREQUAL FuzzTesting)
set(ENABLE_LOCKSTEP_SCHEDULER no)
else()
set(ENABLE_LOCKSTEP_SCHEDULER yes)
endif()
-18
View File
@@ -1,18 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(googletest-download NONE)
include(ExternalProject)
ExternalProject_Add(googletest
URL https://github.com/google/googletest/archive/b796f7d44681514f58a683a3a71ff17c94edb0c1.zip # 1.13
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
# Wrap download, configure and build steps in a script to log output
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
)
-52
View File
@@ -1,52 +0,0 @@
############################################################################
#
# Copyright (c) 2019 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.
#
############################################################################
# Download and unpack googletest at configure time
configure_file(${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . RESULT_VARIABLE result1 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result2 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
if(result1 OR result2)
message(FATAL_ERROR "Preparing googletest failed: ${result1} ${result2}")
endif()
# Add googletest, defines gtest and gtest_main targets
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src ${CMAKE_CURRENT_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL)
# Remove visibility.h from the compile flags for gtest because of poisoned exit()
get_target_property(GTEST_COMPILE_FLAGS gtest COMPILE_OPTIONS)
list(REMOVE_ITEM GTEST_COMPILE_FLAGS "-include")
list(REMOVE_ITEM GTEST_COMPILE_FLAGS "visibility.h")
# Remove float warnings added by PX4 which trigger in gtest-printers.h
list(REMOVE_ITEM GTEST_COMPILE_FLAGS "-Wdouble-promotion")
list(REMOVE_ITEM GTEST_COMPILE_FLAGS "-Wfloat-equal")
set_target_properties(gtest PROPERTIES COMPILE_OPTIONS "${GTEST_COMPILE_FLAGS}")
+2 -1
View File
@@ -105,6 +105,7 @@ function(px4_add_common_flags)
-Wno-unknown-warning-option
-Wno-unused-const-variable
-Wno-varargs
-Wno-vla-cxx-extension # FIXME: do not use variable length arrays
)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
@@ -161,7 +162,7 @@ function(px4_add_common_flags)
-Wno-overloaded-virtual # TODO: fix and remove
)
if((NOT CMAKE_BUILD_TYPE STREQUAL FuzzTesting) AND (NOT PX4_CONFIG MATCHES "px4_sitl"))
if((NOT BUILD_TESTING) AND (NOT PX4_CONFIG MATCHES "px4_sitl"))
list(APPEND cxx_flags
-fno-rtti
)
@@ -57,7 +57,7 @@ function(px4_add_unit_gtest)
add_executable(${TESTNAME} EXCLUDE_FROM_ALL ${SRC} ${EXTRA_SRCS})
# link the libary to test and gtest
target_link_libraries(${TESTNAME} ${LINKLIBS} gtest_main)
target_link_libraries(${TESTNAME} PRIVATE ${LINKLIBS})
if(COMPILE_FLAGS)
target_compile_options(${TESTNAME} PRIVATE ${COMPILE_FLAGS})
@@ -66,6 +66,7 @@ function(px4_add_unit_gtest)
if(INCLUDES)
target_include_directories(${TESTNAME} PRIVATE ${INCLUDES})
endif()
link_fuzztest(${TESTNAME})
# add the test to the ctest plan
add_test(NAME ${TESTNAME}
@@ -97,7 +98,7 @@ function(px4_add_functional_gtest)
add_executable(${TESTNAME} EXCLUDE_FROM_ALL ${SRC} ${EXTRA_SRCS})
# link the libary to test and gtest
target_link_libraries(${TESTNAME} ${LINKLIBS} gtest_functional_main
target_link_libraries(${TESTNAME} PRIVATE ${LINKLIBS} gtest_functional_main
px4_layer
px4_platform
uORB
@@ -111,7 +112,11 @@ function(px4_add_functional_gtest)
perf
tinybson
uorb_msgs
test_stubs) #put test_stubs last
fuzztest::fuzztest # Do not use link_fuzztest() here because that
# also links to fuzztest_gtest_main
test_stubs) # put test_stubs last
target_compile_definitions(${TESTNAME} PRIVATE MODULE_NAME="${TESTNAME}")
if(COMPILE_FLAGS)
target_compile_options(${TESTNAME} PRIVATE ${COMPILE_FLAGS})
-17
View File
@@ -131,23 +131,6 @@ elseif (CMAKE_BUILD_TYPE STREQUAL UndefinedBehaviorSanitizer)
set_tests_properties(${test_name} PROPERTIES FAIL_REGULAR_EXPRESSION "runtime error:")
endfunction(sanitizer_fail_test_on_error)
elseif (CMAKE_BUILD_TYPE STREQUAL FuzzTesting)
message(STATUS "FuzzTesting enabled")
add_compile_options(
-g3
-fsanitize=fuzzer
-DFUZZTESTING
)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=fuzzer $ENV{LIB_FUZZING_ENGINE}" CACHE INTERNAL "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=fuzzer $ENV{LIB_FUZZING_ENGINE}" CACHE INTERNAL "" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=fuzzer $ENV{LIB_FUZZING_ENGINE}" CACHE INTERNAL "" FORCE)
function(sanitizer_fail_test_on_error test_name)
# Not sure what to do here
endfunction(sanitizer_fail_test_on_error)
else()
function(sanitizer_fail_test_on_error test_name)
+1 -4
View File
@@ -194,7 +194,6 @@
- [Discontinued Autopilots/Vehicles](flight_controller/autopilot_discontinued.md)
- [Drotek Dropix (FMUv2)](flight_controller/dropix.md)
- [Omnibus F4 SD](flight_controller/omnibus_f4_sd.md)
- [BetaFPV Beta75X 2S Brushless Whoop](complete_vehicles_mc/betafpv_beta75x.md)
- [Bitcraze Crazyflie 2.0 ](complete_vehicles_mc/crazyflie2.md)
- [Aerotenna OcPoC-Zynq Mini](flight_controller/ocpoc_zynq.md)
- [CUAV X7](flight_controller/cuav_x7.md)
@@ -209,8 +208,6 @@
- [mRo AUAV-X2](flight_controller/auav_x2.md)
- [NXP RDDRONE-FMUK66 FMU](flight_controller/nxp_rddrone_fmuk66.md)
- [3DR Pixhawk 1](flight_controller/pixhawk.md)
- [Snapdragon Flight](flight_controller/snapdragon_flight.md)
- [Intel® Aero RTF Drone](complete_vehicles_mc/intel_aero.md)
- [Pixhawk Autopilot Bus (PAB) & Carriers](flight_controller/pixhawk_autopilot_bus.md)
- [ARK Electronics Pixhawk Autopilot Bus Carrier](flight_controller/ark_pab.md)
- [Mounting the Flight Controller](assembly/mount_and_orient_controller.md)
@@ -302,7 +299,6 @@
- [Zubax Telega](dronecan/zubax_telega.md)
- [PX4 Sapog ESC Firmware](dronecan/sapog.md)
- [Holybro Kotleta](dronecan/holybro_kotleta.md)
- [Zubax Orel](dronecan/zubax_orel.md)
- [Vertiq](peripherals/vertiq.md)
- [VESC](peripherals/vesc.md)
- [Radio Control (RC)](getting_started/rc_transmitter_receiver.md)
@@ -813,6 +809,7 @@
- [Test MC_04 - Failsafe Testing](test_cards/mc_04_failsafe_testing.md)
- [Test MC_05 - Indoor Flight (Manual Modes)](test_cards/mc_05_indoor_flight_manual_modes.md)
- [Unit Tests](test_and_ci/unit_tests.md)
- [Fuzz Tests](test_and_ci/fuzz_tests.md)
- [Continuous Integration](test_and_ci/continous_integration.md)
- [Integration Testing](test_and_ci/integration_testing.md)
- [MAVSDK Integration Testing](test_and_ci/integration_testing_mavsdk.md)
@@ -12,8 +12,6 @@ Moving the compass away from power-carrying cables is the easiest and most effec
The process is demonstrated for a multicopter, but is equally valid for other vehicle types.
:::
<a id="when"></a>
## When is Power Compensation Applicable?
Performing this power compensation is advisable only if all the following statements are true:
@@ -25,8 +23,6 @@ Performing this power compensation is advisable only if all the following statem
1. The drone cables are all fixed in place/do not move (calculated compensation parameters will be invalid if the current-carrying cables can move).
<a id="how"></a>
## How to Compensate the Compass
1. Make sure your drone runs a Firmware version supporting power compensation (current master, or releases from v.1.11.0).
@@ -39,7 +35,6 @@ Performing this power compensation is advisable only if all the following statem
![strap](../../assets/advanced_config/strap.png)
1. Power the vehicle and switch into [ACRO flight mode](../flight_modes_mc/acro.md) (using this mode ensures the vehicle won't attempt to compensate for movement resulting from the straps).
- Arm the vehicle and slowly raise the throttle to the maximum
- Slowly lower the throttle down to zero
- Disarm the vehicle
@@ -54,10 +49,9 @@ Performing this power compensation is advisable only if all the following statem
python mag_compensation.py ~/path/to/log/logfile.ulg <type> [--instance <number>]
```
where:
- `<type>`: `current` or `thrust` (power signal used for compensation)
- `--instance <number>` (optional): The number is `0` (default) or `1`, the instance of the current or thrust signal to use.
where:
- `<type>`: `current` or `thrust` (power signal used for compensation)
- `--instance <number>` (optional): The number is `0` (default) or `1`, the instance of the current or thrust signal to use.
::: info
If your log does not contain battery current measurements, you will need to comment out the respective lines in the Python script, such that it does the calculation for thrust only.
@@ -14,9 +14,7 @@ Any subsequent standard calibration will therefore update `TC_*` parameters and
Releases up to PX4 v1.14, do not support thermal calibration of the magnetometer.
:::
<a id="test_setup"></a>
## Test Setup/Best Practice
## Test Setup/Best Practice {#test_setup}
The [calibration procedures](#calibration_procedures) described in the following sections are ideally run in an _environmental chamber_ (a temperature and humidity controlled environment) as the board is heated from the lowest to the highest operating/calibration temperature.
Before starting the calibration, the board is first _cold soaked_ (cooled to the minimum temperature and allowed to reach equilibrium).
@@ -46,9 +44,7 @@ If in doubt, check the safe operating range with your manufacturer.
To check the status of the onboard thermal calibration use the MAVlink console (or NuttX console) to check the reported internal temp from the sensor.
:::
<a id="calibration_procedures"></a>
## Calibration Procedures
## Calibration Procedures {#calibration_procedures}
PX4 supports two calibration procedures:
@@ -57,9 +53,7 @@ PX4 supports two calibration procedures:
The offboard approach is more complex and slower, but requires less knowledge of the test setup and is easier to validate.
<a id="onboard_calibration"></a>
### Onboard Calibration Procedure
### Onboard Calibration Procedure {#onboard_calibration}
Onboard calibration is run entirely on the device. It require knowledge of the amount of temperature rise that is achievable with the test setup.
@@ -76,9 +70,7 @@ To perform and onboard calibration:
9. Perform a 6-point accel calibration via the system console using `commander calibrate accel` or via _QGroundControl_. If the board is being set-up for the first time, the gyro and magnetometer calibration will also need to be performed.
10. The board should always be re-powered before flying after any sensor calibration, because sudden offset changes from calibration can upset the navigation estimator and some parameters are not loaded by the algorithms that use them until the next startup.
<a id="offboard_calibration"></a>
### Offboard Calibration Procedure
### Offboard Calibration Procedure {#offboard_calibration}
Offboard calibration is run on a development computer using data collected during the calibration test. This method provides a way to visually check the quality of data and curve fit.
@@ -104,9 +96,7 @@ To perform an offboard calibration:
1. After parameters have finished loading, set `SDLOG_MODE` to 1 to re-enable normal logging and remove power.
1. Power the board and perform a normal accelerometer sensor calibration using _QGroundControl_. It is important that this step is performed when board is within the calibration temperature range. The board must be repowered after this step before flying as the sudden offset changes can upset the navigation estimator and some parameters are not loaded by the algorithms that use them until the next startup.
<a id="implementation"></a>
## Implementation Detail
## Implementation Detail {#implementation}
Calibration refers to the process of measuring the change in sensor value across a range of internal temperatures, and performing a polynomial fit on the data to calculate a set of coefficients (stored as parameters) that can be used to correct the sensor data. Compensation refers to the process of using the internal temperature to calculate an offset that is subtracted from the sensor reading to correct for changing offset with temperature
@@ -133,7 +123,6 @@ Where:
- `type`: is a single character indicating the type of sensor where `A` = accelerometer, `G` = rate gyroscope, `M` = magnetometer, and `B` = barometer.
- `instance`: is an integer 0,1 or 2 allowing for calibration of up to three sensors of the same `type`.
- `cal_name`: is a string identifying the calibration value. It has the following possible values:
- `Xn`: Polynomial coefficient where n is the order of the coefficient, e.g. `X3 * (temperature - reference temperature)**3`.
- `SCL`: scale factor.
- `TREF`: reference temperature (deg C).
@@ -193,5 +182,7 @@ Scale factors are assumed to be temperature invariant due to the difficulty asso
---
[^1]: The [SYS_CAL_ACCEL](../advanced_config/parameter_reference.md#SYS_CAL_ACCEL), [SYS_CAL_BARO](../advanced_config/parameter_reference.md#SYS_CAL_BARO) and [SYS_CAL_GYRO](../advanced_config/parameter_reference.md#SYS_CAL_GYRO) parameters are reset to 0 when the calibration is started.
[^2]: Calibration of the barometric pressure sensor offsets requires a stable air pressure environment. The air pressure will change slowly due to weather and inside buildings can change rapidly due to external wind fluctuations and HVAC system operation.
[^3]: Care must be taken when warming a cold soaked board to avoid formation of condensation on the board that can cause board damage under some circumstances.
@@ -441,9 +441,7 @@ Airspeed data will be used when it exceeds the threshold set by a positive value
Fixed-wing platforms can take advantage of an assumed sideslip observation of zero to improve wind speed estimation and also enable wind speed estimation without an airspeed sensor.
This is enabled by setting the [EKF2_FUSE_BETA](../advanced_config/parameter_reference.md#EKF2_FUSE_BETA) parameter to 1.
<a id="mc_wind_estimation_using_drag"></a>
### Multicopter Wind Estimation using Drag Specific Forces
### Multicopter Wind Estimation using Drag Specific Forces {#mc_wind_estimation_using_drag}
Multi-rotor platforms can take advantage of the relationship between airspeed and drag force along the X and Y body axes to estimate North/East components of wind velocity.
This can be enabled using [EKF2_DRAG_CTRL](../advanced_config/parameter_reference.md#EKF2_DRAG_CTRL).
+1 -3
View File
@@ -56,9 +56,7 @@ A flow diagram showing the phases can be found in [landing phases flow Diagram](
Precision landing can be used in missions, during the landing phase in _Return mode_, or by entering the _Precision Land_ mode.
<a id="mission"></a>
### Mission Precision Landing
### Mission Precision Landing {#mission}
Precision landing can be initiated as part of a [mission](../flying/missions.md) using [MAV_CMD_NAV_LAND](https://mavlink.io/en/messages/common.html#MAV_CMD_NAV_LAND) with `param2` set appropriately:
+1 -3
View File
@@ -110,9 +110,7 @@ The other radio is connected to your ground station computer or mobile device (u
![quickstart](../../assets/flight_controller/cuav_v5_nano/connection/v5_nano_quickstart_07.png)
<a id="sd_card"></a>
## SD Card (Optional)
## SD Card (Optional) {#sd_card}
An [SD card](../getting_started/px4_basic_concepts.md#sd-cards-removable-memory) is inserted in the factory (you do not need to do anything).
+1 -3
View File
@@ -110,9 +110,7 @@ The other radio is connected to your ground station computer or mobile device (u
![V5+ AutoPilot](../../assets/flight_controller/cuav_v5_plus/connection/v5+_quickstart_06.png)
<a id="sd_card"></a>
## SD Card (Optional)
## SD Card (Optional) {#sd_card}
An [SD card](../getting_started/px4_basic_concepts.md#sd-cards-removable-memory) is inserted in the factory (you do not need to do anything).
+2 -4
View File
@@ -147,9 +147,7 @@ The vehicle-based radio should be connected to the **TELEM1** port as shown belo
![Pixhawk 4/Telemetry Radio](../../assets/flight_controller/pixhawk4/pixhawk4_telemetry_radio.jpg)
<a id="sd_card"></a>
## SD Card (Optional)
## SD Card (Optional) {#sd_card}
SD cards are highly recommended as they are needed to [log and analyse flight details](../getting_started/flight_reporting.md), to run missions, and to use UAVCAN-bus hardware.
Insert the card (included in Pixhawk 4 kit) into _Pixhawk 4_ as shown below.
@@ -193,4 +191,4 @@ QuadPlane specific configuration is covered here: [QuadPlane VTOL Configuration]
- [Pixhawk 4](../flight_controller/pixhawk4.md) (Overview page)
- [Pixhawk 4 Technical Data Sheet](https://github.com/PX4/PX4-Autopilot/blob/main/docs/assets/flight_controller/pixhawk4/pixhawk4_technical_data_sheet.pdf)
- [Pixhawk 4 Pinouts](https://cdn.shopify.com/s/files/1/0604/5905/7341/files/Pixhawk4-Pinouts.pdf) (Holybro)
- [Pixhawk 4 Quick Start Guide (Holybro)](https://holybro.com/manual/Pixhawk4-quickstartguide.pdf)
- [Pixhawk 4 Quick Start Guide (Holybro)](https://cdn.shopify.com/s/files/1/0604/5905/7341/files/Pixhawk4-quickstartguide.pdf)
+1 -1
View File
@@ -52,7 +52,7 @@ You can press the safety switch again to enable safety and disarm the vehicle (t
## Power
Connect the output of the _PM02D Power Module_ (PM board) that comes with the Standard Set to one of the **POWER** port of _Pixhawk 5X_ using the 6-wire cable.
The PM02D and Power ports on the Pixhawk 5X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670) & [Housing](https://www.molex.com/molex/products/part-detail/crimp_housings/5024390600).
The PM02D and Power ports on the Pixhawk 5X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670) & [Housing](https://www.molex.com/molex/products/part-detail/crimp_housings/5024390600).
The PM02D Power Module supports **2~6S** battery, the board input should be connected to your LiPo battery. Note that the PM board does not supply power to the + and - pins of **FMU PWM OUT** and **I/O PWM OUT**.
+1 -1
View File
@@ -65,7 +65,7 @@ You can press the safety switch again to enable safety and disarm the vehicle (t
## Power
Connect the output of the _PM02D Power Module_ (PM board) that comes with the Standard Set to one of the **POWER** port of _Pixhawk 6X_ using the 6-wire cable.
The PM02D and Power ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670) & [Housing](https://www.molex.com/molex/products/part-detail/crimp_housings/5024390600).
The PM02D and Power ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670) & [Housing](https://www.molex.com/molex/products/part-detail/crimp_housings/5024390600).
The PM02D Power Module supports **2~6S** battery, the board input should be connected to your LiPo battery. Note that the PM board does not supply power to the + and - pins of **FMU PWM OUT** and **I/O PWM OUT**.
+1 -1
View File
@@ -117,7 +117,7 @@ The camera trigger driver supports several backends - each for a specific applic
| 1 | Enables the GPIO interface. The AUX outputs are pulsed high or low (depending on the `TRIG_POLARITY` parameter) every [TRIG_INTERVAL](../advanced_config/parameter_reference.md#TRIG_INTERVAL) duration. This can be used to trigger most standard machine vision cameras directly. Note that on PX4FMU series hardware (Pixhawk, Pixracer, etc.), the signal level on the AUX pins is 3.3v. |
| 2 | Enables the Seagull MAP2 interface. This allows the use of the [Seagull MAP2](https://www.seagulluav.com/product/seagull-map2/) to interface to a multitude of supported cameras. Pin/Channel 1 (camera trigger) and Pin/Channel 2 (mode selector) of the MAP2 should be connected to the lower and higher mapped [camera trigger pins](#trigger-output-pin-configuration). Using Seagull MAP2, PX4 also supports automatic power control and keep-alive functionalities of Sony Multiport cameras like the QX-1. |
| 3 | This mode enables MAVLink cameras that used the legacy [MAVLink interface listed above](#mavlink-command-interface). The messages are automatically emitted on the MAVLink `onboard` channel when found in missions. PX4 emits the `CAMERA_TRIGGER` MAVLink message when a camera is triggered, by default to the `onboard` channel (if this is not used, custom stream will need to be enabled). [Simple MAVLink cameras](../camera/mavlink_v1_camera.md) explains this use case in more detail. |
| 4 | Enables the generic PWM interface. This allows the use of [infrared triggers](https://hobbyking.com/en_us/universal-remote-control-infrared-shutter-ir-rc-1g.html) or servos to trigger your camera. |
| 4 | Enables the generic PWM interface. This allows the use of [infrared triggers](https://www.seagulluav.com/product/seagull-ir/) or servos to trigger your camera. |
### Trigger Output Pin Configuration
@@ -54,8 +54,8 @@ They are in no way guaranteed to be plug and play with your companion computer.
Popular stereo cameras include:
- [Intel® RealSense™ Depth Camera D435](https://www.intelrealsense.com/depth-camera-d435/)
- [Intel® RealSense™ Depth Camera D415](https://www.intelrealsense.com/depth-camera-d415/)
- [Intel® RealSense™ Depth Camera D435](https://realsenseai.com/stereo-depth-cameras/stereo-depth-camera-d435/)
- [Intel® RealSense™ Depth Camera D415](https://realsenseai.com/stereo-depth-cameras/stereo-depth-camera-d415/)
- [DUO MLX](https://duo3d.com/product/duo-minilx-lv1)
### VIO Cameras/Sensors
@@ -1,58 +0,0 @@
# BetaFPV Beta75X 2S Brushless Whoop
<Badge type="info" text="Discontinued" />
:::warning
This frame has been [discontinued](../flight_controller/autopilot_experimental.md) and is no longer commercially available.
:::
The [BetaFPV Beta75X](https://betafpv.com/products/beta75x-2s-whoop-quadcopter) is a very small quadrotor that can be flown indoors or outdoors, FPV or line-of-sight.
![BetaFPV Beta75X](../../assets/hardware/betafpv_beta75x.jpg)
## Where to Buy
The _Beta75X_ can be bought from a number of vendors, including:
- [GetFPV](https://www.getfpv.com/beta75x-2s-brushless-whoop-micro-quadcopter-xt30-frsky.html)
- [Amazon](https://www.amazon.com/BETAFPV-Beta75X-Brushless-Quadcopter-Smartaudio/dp/B07H86XSPW)
In addition you will need:
- An RC transmitter. _Beta75X_ can ship with a number of receivers. PX4 is compatible with all of them, but make sure to select the version that matches your transmitter.
- LiPo battery charger (vehicle ships with one battery, but you may want spares).
- FPV goggles if you want to fly FPV.
There are many compatible options, including these ones from [Fatshark](https://www.fatshark.com/product-page/dominator-v3).
::: info
FPV support is completely independent of PX4/flight controller.
:::
## Flashing PX4 Bootloader
The _Beta75X_ comes preinstalled with Betaflight.
Before loading PX4 firmware you must first install the PX4 bootloader.
Instructions for installing the bootloader can be found in the [Omnibus F4](../flight_controller/omnibus_f4_sd.md#bootloader) topic (this is the flight controller board on the _Beta75X_).
:::tip
You can always [reinstall Betaflight](../advanced_config/bootloader_update_from_betaflight.md#reinstall-betaflight) later if you want!
:::
## Installation/Configuration
Once the bootloader is installed, you should be able to connect the vehicle to _QGroundControl_ via a USB cable.
::: info
At time of writing _Omnibus F4_ is supported on the QGroundControl _Daily Build_, and prebuilt firmware is provided for the master branch only (stable releases are not yet available).
:::
To install and configure PX4:
- [Load PX4 Firmware](../config/firmware.md).
- [Set the Airframe](../config/airframe.md) to _BetaFPV Beta75X 2S Brushless Whoop_.
- Continue with [basic configuration](../config/index.md), including sensor calibration and radio setup.
## Video
<lite-youtube videoid="_-O0kv0Qsh4" title="PX4 running on the BetaFPV Whoop"/>
+3 -3
View File
@@ -37,7 +37,7 @@ The main hardware documentation is here: https://wiki.bitcraze.io/projects:crazy
- [Crazyflie 2.0](https://store.bitcraze.io/collections/kits/products/crazyflie-2-0).
- [Crazyradio PA 2.4 GHz USB dongle](https://store.bitcraze.io/products/crazyradio-pa): used for wireless communication between _QGroundControl_ and Crazyflie 2.0.
- [Breakout deck](https://store.bitcraze.io/collections/decks/products/breakout-deck): breakout expansion board for connecting new peripherals.
- [Flow deck](https://store.bitcraze.io/collections/decks/products/flow-deck): contains an optical flow sensor to measure movements of the ground and a distance sensor to measure the distance to the ground.
- [Flow deck](https://store.bitcraze.io/products/flow-deck): contains an optical flow sensor to measure movements of the ground and a distance sensor to measure the distance to the ground.
This will be useful for precise altitude and position control.
- [Z-ranger deck](https://store.bitcraze.io/collections/decks/products/z-ranger-deck) has the same distance sensor as the Flow deck to measure the distance to the ground.
This will be useful for precise altitude control.
@@ -225,7 +225,7 @@ This is the rate at which Joystick commands are sent from QGroundControl to Craz
Crazyflie 2.0 is able to fly with precise control in [Stabilized mode](../flight_modes_mc/manual_stabilized.md), [Altitude mode](../flight_modes_mc/altitude.md) and [Position mode](../flight_modes_mc/position.md).
- You will need the [Z-ranger deck](https://store.bitcraze.io/collections/decks/products/z-ranger-deck) to fly in _Altitude_ mode.
If you also want to fly in the _Position_ mode, it is recommended you buy the [Flow deck](https://store.bitcraze.io/collections/decks/products/flow-deck) which also has the integrated Z-ranger sensor.
If you also want to fly in the _Position_ mode, it is recommended you buy the [Flow deck](https://store.bitcraze.io/products/flow-deck) which also has the integrated Z-ranger sensor.
- The onboard barometer is highly susceptible to any external wind disturbances including those created by Crazyflie's own propellers. Hence, we isolated the barometer with a piece of foam, and then mounted the distance sensor on top of it as shown below:
![Crazyflie barometer](../../assets/flight_controller/crazyflie/crazyflie_barometer.jpg)
@@ -257,7 +257,7 @@ Since the onboard barometer is highly susceptible to wind disturbances created b
## Position Control
With [Flow deck](https://store.bitcraze.io/collections/decks/products/flow-deck), you can fly Crazyflie 2.0 in _Position mode_.
With [Flow deck](https://store.bitcraze.io/products/flow-deck), you can fly Crazyflie 2.0 in _Position mode_.
Unlike [PX4FLOW](../sensor/px4flow.md), the flow deck does not house a gyro, hence the onboard gyro is used for flow fusion to find the local position estimates.
Moreover, the flow deck shares the same SPI bus as the SD card deck, therefore logging at high rate on SD card is not recommended when flying in _Position mode_.
+2 -2
View File
@@ -12,7 +12,7 @@ Crazyflie 2.1 is only able to fly in [Stabilized mode](../flight_modes_mc/manual
:::
The Crazyflie line of micro quads was created by Bitcraze AB.
An overview of the Crazyflie 2.1 can be [found here](https://www.bitcraze.io/products/crazyflie-2-1/).
An overview of the Crazyflie 2.1 can be [found here](https://www.bitcraze.io/products/crazyflie-2-1-brushless/).
![Crazyflie2 Image](../../assets/flight_controller/crazyflie21/crazyflie_2.1.jpg)
@@ -42,7 +42,7 @@ Useful peripheral hardware includes:
- [Crazyradio PA 2.4 GHz USB dongle](https://store.bitcraze.io/products/crazyradio-pa): Wireless communication between _QGroundControl_ and Crazyflie 2.0
- [Breakout deck](https://store.bitcraze.io/collections/decks/products/breakout-deck): Breakout expansion board for connecting new peripherals.
- [Flow deck v2](https://store.bitcraze.io/collections/decks/products/flow-deck-v2): Optical flow sensor and a distance sensor for altitude and position control.
- [Flow deck v2](https://store.bitcraze.io/products/flow-deck-v2): Optical flow sensor and a distance sensor for altitude and position control.
- [Z-ranger deck v2](https://store.bitcraze.io/collections/decks/products/z-ranger-deck-v2): Distance sensor for altitude control (same sensor as the Flow deck).
- [Multi-ranger deck](https://store.bitcraze.io/collections/decks/products/multi-ranger-deck) Multi-direction object detection
- [Buzzer deck](https://store.bitcraze.io/collections/decks/products/buzzer-deck) Audio feedback on system events, like low battery or charging completed.
@@ -1,9 +0,0 @@
# Intel Aero Ready to Fly Drone
<Badge type="info" text="Discontinued" />
:::warning
This flight controller has been [discontinued](../flight_controller/autopilot_experimental.md) and is no longer commercially available.
PX4 v1.11 is the last release that supports this platform ([see here for legacy docs](https://docs.px4.io/v1.12/en/complete_vehicles/intel_aero.html)).
:::
+1 -1
View File
@@ -46,7 +46,7 @@ Notes:
The driver defines a parameter prefix, e.g. `PWM_MAIN` that the library then uses for configuration.
Its main task is to select from the input topics and assign the right data to the outputs based on the user set `<param_prefix>_FUNCx` parameter values.
For example if `PWM_MAIN_FUNC3` is set to **Motor 2**, the 3rd output is set to the 2nd motor from `actuator_motors`.
- output functions are defined under [src/lib/mixer_module/output_functions.yaml](https://github.com/PX4/PX4-Autopilot/tree/main/src/lib/mixer_module/output_functions.yaml).
- output functions are defined under [src/lib/mixer_module/output_functions.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/lib/mixer_module/output_functions.yaml).
- if you want to control an output from MAVLink, set the relevant output function to **Offboard Actuator Set x**, and then send the [MAV_CMD_DO_SET_ACTUATOR](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_SET_ACTUATOR) MAVLink command.
## Adding a new Geometry or Output Function
+1 -1
View File
@@ -377,7 +377,7 @@ The following functions can only be applied to FMU outputs:
Enabled when [`PPS_CAP_ENABLE==0`](../advanced_config/parameter_reference.md#PPS_CAP_ENABLE)
::: info
The functions are defined in source at [/src/lib/mixer_module/output_functions.yaml](https://github.com/PX4/PX4-Autopilot/tree/main/src/lib/mixer_module/output_functions.yaml).
The functions are defined in source at [/src/lib/mixer_module/output_functions.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/lib/mixer_module/output_functions.yaml).
This list is correct at PX4 v1.15.
:::
+1 -1
View File
@@ -69,7 +69,7 @@ The video below shows most of the calibration process (it uses an older version
## Support
If you need help with the configuration you can ask for help on the [QGroundControl Support forum](https://discuss.px4.io//c/qgroundcontrol/qgroundcontrol-usage).
If you need help with the configuration you can ask for help on the [QGroundControl Support forum](https://discuss.px4.io/c/qgroundcontrol/qgroundcontrol-usage/18).
## See Also
@@ -64,7 +64,7 @@ The derivative term (**D**) is on the feedback path in order to avoid an effect
:::tip
For more information see:
- [Not all PID controllers are the same](https://www.controleng.com/articles/not-all-pid-controllers-are-the-same/) (www.controleng.com)
- [Not all PID controllers are the same](https://www.controleng.com/not-all-pid-controllers-are-the-same/) (www.controleng.com)
- [PID controller > Standard versus parallel (ideal) PID form](<https://en.wikipedia.org/wiki/PID_controller#Standard_versus_parallel_(ideal)_form>) (Wikipedia)
:::
+3 -3
View File
@@ -104,9 +104,9 @@ The debug port definition includes the following solder pads (on board next to c
| 2 | GPIO1 | +3.3V |
| 3 | GPIO2 | +3.3V |
The socket is a _6-pin JST SH_ - Digikey number: [BM06B-SRSS-TBT(LF)(SN)](https://www.digikey.com/products/en?keywords=455-2875-1-ND) (vertical mount), [SM06B-SRSS-TBT(LF)(SN)](https://www.digikey.com/products/en?keywords=455-1806-1-ND)(side mount).
The socket is a _6-pin JST SH_ - Digikey number: [BM06B-SRSS-TBT(LF)(SN)](https://www.digikey.com/en/products/detail/jst-sales-america-inc/BM06B-SRSS-TBT/1785724) (vertical mount), [SM06B-SRSS-TBT(LF)(SN)](https://www.digikey.com/en/products/detail/jst-sales-america-inc/SM06B-SRSS-TB/926712) (side mount).
You can connect to the debug port using a [cable like this one](https://www.digikey.com/products/en?keywords=A06SR06SR30K152A).
You can connect to the debug port using a [cable like this one](https://www.digikey.com/en/products/detail/jst-sales-america-inc/A06SR06SR30K152A/6009379).
![6-pin JST SH Cable](../../assets/debug/cable_6pin_jst_sh.jpg)
@@ -134,7 +134,7 @@ The pinout is as shown below (pins required for debugging are bold):
The GPIO1/2 pins are free pins that can be used to generate signals in software for timing analysis with a logic analyzer.
The socket is a _10-pin JST SH_ - Digikey number: [BM10B-SRSS-TB(LF)(SN)](https://www.digikey.com/products/en?keywords=455-1796-2-ND) (vertical mount) or [SM10B-SRSS-TB(LF)(SN)](https://www.digikey.com/products/en?keywords=455-1810-2-ND) (side mount).
The socket is a _10-pin JST SH_ - Digikey number: [BM10B-SRSS-TB(LF)(SN)](https://www.digikey.com/en/products/detail/jst-sales-america-inc/BM10B-SRSS-TB/926702) (vertical mount) or [SM10B-SRSS-TB(LF)(SN)](https://www.digikey.com/en/products/detail/jst-sales-america-inc/BM10B-SRSS-TB/926702) (side mount).
You can connect to the debug port using a [cable like this one](https://www.digikey.com/products/en?keywords=A10SR10SR30K203A).
+14 -2
View File
@@ -26,7 +26,7 @@ The recommended process for developing a new frame configuration is:
1. Configure the [geometry and actuator outputs](../config/actuators.md).
1. Perform other [basic configuration](../config/index.md).
1. Tune the vehicle.
1. Run the [`param show-for-airframe`](../modules/modules_command.md#param) console command to list the parameter difference compared to the original generic airfame.
1. Run the [`param show-for-airframe`](../modules/modules_command.md#param) console command to list the parameter difference compared to the original generic airframe.
Once you have the parameters you can create a new frame configuration file by copying the configuration file for the generic configuration, and appending the new parameters.
@@ -39,7 +39,7 @@ To add a frame configuration to firmware:
1. Create a new config file in the [init.d/airframes](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d/airframes) folder.
- Give it a short descriptive filename and prepend the filename with an unused autostart ID (for example, `1033092_superfast_vtol`).
- Update the file with configuration parameters and apps (see section above).
1. Add the name of the new frame config file to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt) in the relevant section for the type of vehicle
1. Add the name of the new frame config file to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt) in the relevant section for the type of vehicle.
1. [Build and upload](../dev_setup/building_px4.md) the software.
## How to add a Configuration to an SD Card
@@ -65,6 +65,18 @@ These aspects are mostly independent, which means that many configurations share
New frame configuration files are only automatically added to the build system after a clean build (run `make clean`).
:::
## Force Reset of Airframe Parameters on Update
To force a reset to the airframe defaults for all users of a specific airframe during update, increase the `PARAM_DEFAULTS_VER` variable in the airframe configuration.
It starts at `1` in [rcS](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/rcS#L40).
Add `set PARAM_DEFAULTS_VER 2` in your airframe file, increasing the value with each future reset needed.
This value is compared to [SYS_PARAM_VER](https://github.com/PX4/PX4-Autopilot/pull/advanced_config/parameter_reference.md#SYS_PARAM_VER) during PX4 updates.
If different, user-customized parameters are reset to defaults.
Note that system parameters primarily include those related to the vehicle airframe configuration.
Parameters such as accumulating flight hours, RC and sensor calibrations, are preserved.
### Example - Generic Quadcopter Frame Config
The configuration file for a generic Quad X copter is shown below ([original file here](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/4001_quad_x)).
@@ -26,7 +26,6 @@ Omissions:
- Simulation: Gazebo and ROS are not supported.
- Only NuttX and JMAVSim/SITL builds are supported.
- [Known problems](https://github.com/orgs/PX4/projects/6) (Also use to report issues).
### Shell Script Installation
@@ -86,7 +85,7 @@ The toolchain gets maintained and hence these instructions might not cover every
That's what [cygwin64/install-cygwin-px4.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/cygwin64/install-cygwin-px4.bat) does.
:::
1. Write up or copy the **batch scripts** [`run-console.bat`](https://github.com/MaEtUgR/PX4Toolchain/blob/master/run-console.bat) and [`setup-environment.bat`](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat).
1. Write up or copy the **batch scripts** [`run-console.bat`](https://github.com/PX4/PX4-windows-toolchain/blob/master/run-console.bat) and [`setup-environment.bat`](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat).
The reason to start all the development tools through the prepared batch script is they preconfigure the starting program to use the local, portable Cygwin environment inside the toolchain's folder.
This is done by always first calling the script [**setup-environment.bat**](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat) and the desired application like the console after that.
@@ -102,17 +101,17 @@ The toolchain gets maintained and hence these instructions might not cover every
```
::: info
That's what [cygwin64/install-cygwin-python-packages.bat](https://github.com/MaEtUgR/PX4Toolchain/blob/master/toolchain/cygwin64/install-cygwin-python-packages.bat) does.
That's what [cygwin64/install-cygwin-python-packages.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/cygwin64/install-cygwin-python-packages.bat) does.
:::
1. Download the [**ARM GCC compiler**](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) as zip archive of the binaries for Windows and unpack the content to the folder `C:\PX4\toolchain\gcc-arm`.
1. Download the [**ARM GCC compiler**](https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain) as zip archive of the binaries for Windows and unpack the content to the folder `C:\PX4\toolchain\gcc-arm`.
::: info
This is what the toolchain does in: [gcc-arm/install-gcc-arm.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/gcc-arm/install-gcc-arm.bat).
:::
1. Install the JDK:
- Download Java 14 from [Oracle](https://www.oracle.com/java/technologies/downloads/) or [AdoptOpenJDK](https://adoptopenjdk.net/).
- Download Java 14 from [Oracle](https://www.oracle.com/java/technologies/downloads/)
- Because sadly there is no portable archive containing the binaries directly you have to install it.
- Find the binaries and move/copy them to **C:\PX4\toolchain\jdk**.
- You can uninstall the Kit from your Windows system again, we only needed the binaries for the toolchain.
+1 -1
View File
@@ -12,7 +12,7 @@ Order this module from:
## Hardware Specifications
- [Open Source Schematic and BOM](https://github.com/ARK-Electronics/ARK_MosaicX5_GPS)
- [Open Source Schematic and BOM](https://github.com/ARK-Electronics/ARK_MOSAIC-X5_GPS)
- Sensors
- [Septentrio Mosaic-X5 GPS](https://www.septentrio.com/en/products/gnss-receivers/gnss-receiver-modules/mosaic-x5)
- Triple Band L1/L2/L5
+1 -1
View File
@@ -9,7 +9,7 @@ It is recommended for use in large commercial vehicles, but might also be used f
## Where to Buy
- [CUAV store](https://store.cuav.net/index.php)
- [CUAV store](https://store.cuav.net/)
- [CUAV aliexpress ](https://www.aliexpress.com/item/4000369700535.html)
## Hardware Specifications
-1
View File
@@ -4,7 +4,6 @@ PX4 supports DroneCAN compliant ESCs.
For more information, see the following articles for specific hardware/firmware:
- [PX4 Sapog ESC Firmware](sapog.md)
- [Zubax Orel 20/21](zubax_orel.md)
- [Holybro Kotleta 20](holybro_kotleta.md)
- [Zubax Telega](zubax_telega.md)
- [Vertiq](../peripherals/vertiq.md) (larger modules)
+9 -9
View File
@@ -134,8 +134,8 @@ Sensor parameters may not exist (be visible in QGC) until you have enabled the a
For example, [SENS_FLOW_MINHGT](../advanced_config/parameter_reference.md#SENS_FLOW_MINHGT) does not exist until [UAVCAN_SUB_FLOW](../advanced_config/parameter_reference.md#UAVCAN_SUB_FLOW) is enabled.
:::
For example, to use a connected DroneCAN smart battery you would enable the [UAVCAN_SUB_BAT](../advanced_config/parameter_reference.md#UAVCAN_SUB_BAT) parameter, which would subscribe PX4 to receive [BatteryInfo](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#batteryinfo) DroneCAN messages.
If using a peripheral that needs to know if PX4 is armed, you would need to set the [UAVCAN_PUB_ARM](../advanced_config/parameter_reference.md#UAVCAN_PUB_ARM) parameter so that PX4 starts publishing [ArmingStatus](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#armingstatus) messages.
For example, to use a connected DroneCAN smart battery you would enable the [UAVCAN_SUB_BAT](../advanced_config/parameter_reference.md#UAVCAN_SUB_BAT) parameter, which would subscribe PX4 to receive [BatteryInfo](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#batteryinfo) DroneCAN messages.
If using a peripheral that needs to know if PX4 is armed, you would need to set the [UAVCAN_PUB_ARM](../advanced_config/parameter_reference.md#UAVCAN_PUB_ARM) parameter so that PX4 starts publishing [ArmingStatus](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#armingstatus) messages.
The parameter names are prefixed with `UAVCAN_SUB_` and `UAVCAN_PUB_` to indicate whether they enable PX4 subscribing or publishing.
The remainder of the name indicates the specific message/feature being set.
@@ -159,7 +159,7 @@ The DroneCAN sensor parameters/subscriptions that you can enable are (in PX4 v1.
- [UAVCAN_SUB_DPRES](../advanced_config/parameter_reference.md#UAVCAN_SUB_DPRES): Differential pressure
- [UAVCAN_SUB_FLOW](../advanced_config/parameter_reference.md#UAVCAN_SUB_FLOW): Optical flow
- [UAVCAN_SUB_GPS](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS): GPS
- [UAVCAN_SUB_GPS_R](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS_R)<Badge type="tip" text="PX4 v1.15" />: Subscribes to GNSS relative message ([RelPosHeading](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#relposheading)).
- [UAVCAN_SUB_GPS_R](../advanced_config/parameter_reference.md#UAVCAN_SUB_GPS_R)<Badge type="tip" text="PX4 v1.15" />: Subscribes to GNSS relative message ([RelPosHeading](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#relposheading)).
Only used for logging in PX4 v1.15.
- [UAVCAN_SUB_HYGRO](../advanced_config/parameter_reference.md#UAVCAN_SUB_HYGRO): Hygrometer
- [UAVCAN_SUB_ICE](../advanced_config/parameter_reference.md#UAVCAN_SUB_ICE): Internal combustion engine (ICE).
@@ -195,15 +195,15 @@ Position of rover is established using RTCM messages from the RTK base module (t
PX4 DroneCAN parameters:
- [UAVCAN_PUB_RTCM](../advanced_config/parameter_reference.md#UAVCAN_PUB_RTCM):
- Makes PX4 publish RTCM messages ([RTCMStream](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#rtcmstream)) to the bus (which it gets from the RTK base module via QGC).
- Makes PX4 publish RTCM messages ([RTCMStream](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#rtcmstream)) to the bus (which it gets from the RTK base module via QGC).
Rover module parameters (also [set using QGC](#qgc-cannode-parameter-configuration)):
- [CANNODE_SUB_RTCM](../advanced_config/parameter_reference.md#CANNODE_SUB_RTCM) tells the rover that it should subscribe to [RTCMStream](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#rtcmstream) RTCM messages on the bus (from the moving base).
- [CANNODE_SUB_RTCM](../advanced_config/parameter_reference.md#CANNODE_SUB_RTCM) tells the rover that it should subscribe to [RTCMStream](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#rtcmstream) RTCM messages on the bus (from the moving base).
::: info
You could instead use [UAVCAN_PUB_MBD](../advanced_config/parameter_reference.md#UAVCAN_PUB_MBD) and [CANNODE_SUB_MBD](../advanced_config/parameter_reference.md#CANNODE_SUB_MBD), which also publish RTCM messages (these are newer).
Using the [RTCMStream](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#rtcmstream) message means that you can implement moving base (see below) at the same time.
Using the [RTCMStream](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#rtcmstream) message means that you can implement moving base (see below) at the same time.
:::
##### Rover and Moving Base
@@ -213,8 +213,8 @@ In this setup the vehicle has a _moving base_ RTK GPS and a _rover_ RTK GPS.
These parameters can be [set on moving base and rover RTK CAN nodes](#qgc-cannode-parameter-configuration), respectively:
- [CANNODE_PUB_MBD](../advanced_config/parameter_reference.md#CANNODE_PUB_MBD) causes a moving base GPS unit to publish [MovingBaselineData](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#movingbaselinedata)RTCM messages onto the bus (for the rover)
- [CANNODE_SUB_MBD](../advanced_config/parameter_reference.md#CANNODE_SUB_MBD) tells the rover that it should subscribe to [MovingBaselineData](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#movingbaselinedata) RTCM messages on the bus (from the moving base).
- [CANNODE_PUB_MBD](../advanced_config/parameter_reference.md#CANNODE_PUB_MBD) causes a moving base GPS unit to publish [MovingBaselineData](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#movingbaselinedata)RTCM messages onto the bus (for the rover)
- [CANNODE_SUB_MBD](../advanced_config/parameter_reference.md#CANNODE_SUB_MBD) tells the rover that it should subscribe to [MovingBaselineData](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#movingbaselinedata) RTCM messages on the bus (from the moving base).
For PX4 you will also need to set [GPS_YAW_OFFSET](../advanced_config/parameter_reference.md#GPS_YAW_OFFSET) to indicate the relative position of the moving base and rover: 0 if your Rover is in front of your Moving Base, 90 if Rover is right of Moving Base, 180 if Rover is behind Moving Base, or 270 if Rover is left of Moving Base.
@@ -264,7 +264,7 @@ If the rangefinder is connected via DroneCAN (whether inbuilt or separate), you
PX4 DroneCAN parameters:
- [UAVCAN_PUB_ARM](../advanced_config/parameter_reference.md#UAVCAN_PUB_ARM) ([Arming Status](https://dronecan.github.io/Specification/1._Introduction//7._List_of_standard_data_types/#armingstatus)): Publish when using DroneCAN components that require the PX4 arming status as a precondition for use.
- [UAVCAN_PUB_ARM](../advanced_config/parameter_reference.md#UAVCAN_PUB_ARM) ([Arming Status](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#armingstatus)): Publish when using DroneCAN components that require the PX4 arming status as a precondition for use.
### ESC & Servos
+1 -1
View File
@@ -100,4 +100,4 @@ See [DroneCAN Troubleshooting](index.md#troubleshooting)
- [PX4/Sapog](https://github.com/PX4/sapog#px4-sapog) (Github)
- [Sapog v2 Reference Manual](https://files.zubax.com/products/io.px4.sapog/Sapog_v2_Reference_Manual.pdf)
- [Using Sapog based ESC with PX4](https://kb.zubax.com/display/MAINKB/Using+Sapog-based+ESC+with+PX4) (Zubax KB)
- [Using Telega-based controllers with PX4 autopilots](https://wiki.zubax.com/public/telega/telega-v0-legacy/Using-Telega-based-controllers-with-PX4-autopilots) (Zubax KB)
-13
View File
@@ -1,13 +0,0 @@
# Zubax Orel 20/21
The Zubax Orel 20 is an CAN ESC designed to run the open source [PX4 Sapog ESC Firmware](../dronecan/sapog.md).
While it can be controlled using traditional PWM input, it is designed to operate over CAN bus using [DroneCAN](index.md).
## Where to Buy
[Zubax Orel](https://zubax.com/products/orel_20)
## Setup
Follow the [Sapog ESC Setup](../dronecan/sapog.md) instructions.
+3 -3
View File
@@ -15,9 +15,9 @@ Questions on this matter should be addressed to: [support@zubax.com](mailto:supp
## Where to Buy
- [Zubax Myxa](https://shop.zubax.com/products/zubax-myxa): High-end PMSM/BLDC motor controller (FOC ESC) for light unmanned aircraft and watercraft.
- [Zubax Mitochondrik](https://shop.zubax.com/products/mitochondrik): Integrated sensorless PMSM/BLDC motor controller chip (used in ESCs and integrated drives)
- [Zubax Komar](https://shop.zubax.com/products/zubax-ad0510-komar-esc?variant=32931555868771): Open hardware reference design for Mitochondrik
- [Zubax AmpDrive AD0505A/B "Myxa" ESC](https://shop.zubax.com/products/zubax-myxa): High-end PMSM/BLDC motor controller (FOC ESC) for light unmanned aircraft and watercraft.
- [Zubax BoolDrive BD1D50 "Mitochondrik"](https://shop.zubax.com/products/mitochondrik): Integrated sensorless PMSM/BLDC motor controller chip (used in ESCs and integrated drives)
- [Zubax AmpDrive AD0510 "Komar" ESC](https://shop.zubax.com/products/zubax-ad0510-komar-esc): Open hardware reference design for Mitochondrik
## Hardware Setup
+2 -2
View File
@@ -23,9 +23,9 @@ See the documentation [Ark Electronics GitBook](https://arkelectron.gitbook.io/a
## Sensors
- [Invensense IIM-42653 Industrial IMU](https://invensense.tdk.com/products/motion-tracking/6-axis/iim-42653/)
- [Invensense IIM-42653 Industrial IMU](https://invensense.tdk.com/products/smartindustrial/iim-42653/)
- [Bosch BMP390 Barometer](https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp390/)
- [ST IIS2MDC Magnetometer](https://www.st.com/en/magnetic-sensors/iis2mdc.html)
- [ST IIS2MDC Magnetometer](https://www.st.com/en/mems-and-sensors/iis2mdc.html)
## Microprocessor
+1 -1
View File
@@ -25,7 +25,7 @@ Order From [Ark Electronics](https://arkelectron.com/product/arkv6x/) (US)
- [Dual Invensense ICM-42688-P IMUs](https://invensense.tdk.com/products/motion-tracking/6-axis/icm-42688-p/)
- [Invensense IIM-42652 Industrial IMU](https://invensense.tdk.com/products/smartindustrial/iim-42652/)
- [Bosch BMP390 Barometer](https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp390/)
- [Bosch BMM150 Magnetometer](https://www.bosch-sensortec.com/products/motion-sensors/magnetometers/bmm150/)
- [Bosch BMM150 Magnetometer](https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmm150-ds001.pdf)
## Microprocessor
@@ -26,6 +26,6 @@ They are listed because you may be using them in an existing drone, and because
## Complete Vehicles
- [BetaFPV Beta75X 2S Brushless Whoop](../complete_vehicles_mc/betafpv_beta75x.md)
- [Intel® Aero RTF Drone](../complete_vehicles_mc/intel_aero.md) ([Complete Vehicle](../complete_vehicles_mc/index.md))
- [Qualcomm Snapdragon Flight](../flight_controller/snapdragon_flight.md) ([Complete Vehicle](../complete_vehicles_mc/index.md))
- [BetaFPV Beta75X 2S Brushless Whoop](https://docs.px4.io/v1.14/en/complete_vehicles/betafpv_beta75x.html#betafpv-beta75x-2s-brushless-whoop) (circa PX4 v1.14)
- [Intel® Aero RTF Drone](https://docs.px4.io/v1.12/en/complete_vehicles/intel_aero.html) (circa PX4 v1.12)
- [Qualcomm Snapdragon Flight](https://docs.px4.io/v1.11/en/flight_controller/snapdragon_flight.html) (circa PX4 v1.11)
@@ -60,8 +60,6 @@ This flight controller is [manufacturer supported](../flight_controller/autopilo
## Where to Buy
<!-- [CUAV Store](https://store.cuav.net/index.php?id_product=95&id_product_attribute=0&rewrite=cuav-new-pixhack-v5-autopilot-m8n-gps-for-fpv-rc-drone-quadcopter-helicopter-flight-simulator-free-shipping-whole-sale&controller=product&id_lang=1) -->
[CUAV Aliexpress](https://www.aliexpress.com/item/32890380056.html?spm=a2g0o.detail.1000060.1.7a7233e7mLTlVl&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.90158.0&scm_id=1007.13339.90158.0&scm-url=1007.13339.90158.0&pvid=d899bfab-a7ca-46e1-adf2-72ad1d649822) (International users)
[CUAV Taobao](https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-21303114052.37.a28f697aeYzQx9&id=594262853015) (China Mainland users)
@@ -29,8 +29,8 @@ This flight controller is [manufacturer supported](../flight_controller/autopilo
- Sensors:
- [Bosch BMI088](https://www.bosch-sensortec.com/products/motion-sensors/imus/bmi088/) 3-axis accelerometer/gyroscope (internally vibration dampened)
- [Invensense ICM-20602](https://invensense.tdk.com/products/motion-tracking/6-axis/icm-20602/) 3-axis accelerometer/gyroscope
- [Invensense ICM-20948](https://www.invensense.com/products/motion-tracking/9-axis/icm-20948/) 3-axis accelerometer/gyroscope/magnetometer
- [Infineon DPS310 barometer](https://www.infineon.com/cms/en/product/sensor/pressure-sensors/pressure-sensors-for-iot/dps310/) (So smooth and NO more light sensitivity)
- [Invensense ICM-20948](https://invensense.tdk.com/products/motion-tracking/9-axis/icm-20948/) 3-axis accelerometer/gyroscope/magnetometer
- [Infineon DPS310 barometer](https://www.infineon.com/assets/row/public/documents/24/49/infineon-dps310-datasheet-en.pdf) - [Discontinued](https://www.infineon.com/part/DPS310) (So smooth and NO more light sensitivity)
- Interfaces:
- 6x UART (serial ports total), 3x with HW flow control, 1x FRSky Telemetry (D or X types), 1x Console and 1x GPS+I2C
@@ -92,7 +92,7 @@ The [SWD port](../debug/swd_debug.md) (JTAG) for FMU debugging is a TC2030 debug
![mro swd port](../../assets/flight_controller/mro_control_zero_f7/mro_control_zero_f7_swd.jpg)
You can use the [Tag Connect](https://www.tag-connect.com/) cable [TC2030 IDC NL](https://www.tag-connect.com/product/tc2030-idc-nl) below (with associated [retaining clip](https://www.tag-connect.com/product/tc2030-clip-retaining-clip-board-for-tc2030-nl-cables)) to attach to either a BlackMagic probe or a ST-LINK V2 debugger.
You can use the [Tag Connect](https://www.tag-connect.com/) cable [TC2030 IDC NL](https://www.tag-connect.com/product/tc2030-idc-nl) below (with associated [retaining clip](https://www.tag-connect.com/product/tc2030-retaining-clip-board-3-pack)) to attach to either a BlackMagic probe or a ST-LINK V2 debugger.
![tc2030 idc nl cable](../../assets/flight_controller/mro_control_zero_f7/tc2030_idc_nl.jpg)
@@ -51,8 +51,8 @@ Similar variants will be available from our licensees.
## Key Design Points
- High performance [NXP i.MX RT1170 1GHz Crossover MCU](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1170-1-ghz-crossover-mcu-with-arm-cortex-cores:i.MX-RT1170) with Arm® Cortex® cores
- Hardware secure element [NXP EdgeLock SE051](https://www.nxp.com/products/security-and-authentication/authentication/edgelock-se051-proven-easy-to-use-iot-security-solution-with-support-for-updatability-and-custom-applets:SE051).
- High performance [NXP i.MX RT1170 1GHz Crossover MCU](https://www.nxp.com/products/i.MX-RT1170) with Arm® Cortex® cores
- Hardware secure element [NXP EdgeLock SE051](https://www.nxp.com/products/SE051).
This is an extension to the widely trusted EdgeLock SE050 Plug & Trust secure element family, supports applet updates in the field and delivers proven security certified to CC EAL 6+, with AVA_VAN.5 up to the OS level, for strong protection against the most recent attack scenarios.
This can be used, for example, to securely store operator ID or certificates.
- Modular flight controller: separated IMU, FMU, and Base system connected by a 100-pin & a 50-pin Pixhawk® Autopilot Bus connector.
@@ -187,7 +187,7 @@ TBD
_MR-VMU-RT1176_ can be triple-redundant on the power supply if three power sources are supplied.
The three power rails are: **POWER1**, **POWER2** and **USB**.
The **POWER1** & **POWER2** ports on the MR-VMU-RT1176 uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670).
The **POWER1** & **POWER2** ports on the MR-VMU-RT1176 uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670).
### Normal Operation Maximum Ratings
@@ -45,21 +45,21 @@ Telemetry radios ([HGD-TELEM433](https://www.nxp.com/part/HGD-TELEM433) and [HGD
![RDDRONE-FMUK66 FMU Kit](../../assets/flight_controller/nxp_rddrone_fmuk66/rddrone_fmu66_kit_img_contents.jpg)
A "Lite" version RDDRONE-FMUK66L is also available which does not include the power module, GPS, Jlink or USB-TTL-3V3 console cable or SDCard.[Scroll down to see FMUK66L in the buy section of the FMUK66 buy page](https://www.nxp.com/design/designs/px4-robotic-drone-fmu-rddrone-fmuk66:RDDRONE-FMUK66#buy)
A "Lite" version RDDRONE-FMUK66L is also available which does not include the power module, GPS, Jlink or USB-TTL-3V3 console cable or SDCard.[Scroll down to see FMUK66L in the buy section of the FMUK66 buy page](https://www.nxp.com/design/design-center/development-boards-and-designs/px4-robotic-drone-vehicle-flight-management-unit-vmu-fmu-rddrone-fmuk66:RDDRONE-FMUK66#buy)
Additional information can be found in the [Technical Data Sheet](https://www.nxp.com/design/designs/px4-robotic-drone-fmu-rddrone-fmuk66:RDDRONE-FMUK66). <!-- www.nxp.com/rddrone-fmuk66 -->
Additional information can be found in the [Technical Data Sheet](https://www.nxp.com/design/design-center/development-boards-and-designs/px4-robotic-drone-vehicle-flight-management-unit-vmu-fmu-rddrone-fmuk66:RDDRONE-FMUK66). <!-- www.nxp.com/rddrone-fmuk66 -->
## Where to Buy
**RDDRONE-FMUK66** reference design kit may be purchased direct from NXP or from any of NXP's authorised worldwide network of [electronics distributors](https://www.nxp.com/support/sample-and-buy/distributor-network:DISTRIBUTORS).
- [Purchase Link](https://www.nxp.com/design/designs/px4-robotic-drone-fmu-rddrone-fmuk66:RDDRONE-FMUK66#buy) (www.nxp.com)
- [Purchase Link](https://www.nxp.com/design/design-center/development-boards-and-designs/px4-robotic-drone-vehicle-flight-management-unit-vmu-fmu-rddrone-fmuk66:RDDRONE-FMUK66#buy) (www.nxp.com)
- Telemetry radios are purchased separately depending on frequency band:
- [HGD-TELEM433](https://www.nxp.com/part/HGD-TELEM433)
- [HGD-TELEM915](https://www.nxp.com/part/HGD-TELEM915)
::: info
_RDDRONE-FMUK66_ FMU is also included in the complete HoverGames drone kit: [KIT-HGDRONEK66](https://www.nxp.com/applications/solutions/industrial/aerospace-and-mobile-robotics/uavs-drones-and-rovers/nxp-hovergames-drone-kit-including-rddrone-fmuk66-and-peripherals:KIT-HGDRONEK66#buy)
_RDDRONE-FMUK66_ FMU is also included in the complete HoverGames drone kit: [KIT-HGDRONEK66](https://www.nxp.com/design/design-center/development-boards-and-designs/nxp-hovergames-drone-kit-including-flight-controller-and-peripherals:KIT-HGDRONEK66#buy)
:::
<!--
+1 -1
View File
@@ -258,4 +258,4 @@ In addition to the [basic configuration](../config/index.md), the following para
## Further Info
[This page](https://blog.dronetrest.com/omnibus-f4-flight-controller-guide/) provides a good overview with pinouts and setup instructions.
[This page](https://blog.unmanned.tech/omnibus-f4-flight-controller-guide/) provides a good overview with pinouts and setup instructions.
+4 -4
View File
@@ -1,6 +1,6 @@
# Pixfalcon Flight Controller (Discontinued)
<Badge type="info" text="Discontinued" />
<Badge type="info" text="Discontinued" px4_current="v1.15" year="2024"/>
:::warning
This flight controller has been [discontinued](../flight_controller/autopilot_experimental.md) and is no longer commercially available.
@@ -34,14 +34,14 @@ The Pixfalcon autopilot (designed by [Holybro<sup>&reg;</sup>](https://holybro.c
## Availability:
From distributor [Hobbyking<sup>&reg;</sup>](https://hobbyking.com/en_us/pixfalcon-micro-px4-autopilot-plus-micro-m8n-gps-and-mega-pbd-power-module.html)
No longer available.
Optional hardware:
- Optical flow: PX4 Flow unit from manufacturer [Holybro](https://holybro.com/products/px4flow)
- Digital Airspeed sensor from manufacturer [Holybro](https://holybro.com/products/digital-air-speed-sensor-ms4525do) or distributor [Hobbyking](https://hobbyking.com/en_us/hkpilot-32-digital-air-speed-sensor-and-pitot-tube-set.html)
- Digital Airspeed sensor from manufacturer [Holybro](https://holybro.com/products/digital-air-speed-sensor-ms4525do)
- On screen display with integrated Telemetry:
- [Hobbyking OSD + EU Telemetry (433 MHz)](https://hobbyking.com/en_us/micro-hkpilot-telemetry-radio-module-with-on-screen-display-osd-unit-433mhz.html)
- Micro HKPilot Telemetry Radio Module with On Screen Display (OSD) unit - 433MHz. (Discontinued)
- Pure Telemetry options:
- [SIK Radios](../telemetry/sik_radio.md)
+1 -1
View File
@@ -323,7 +323,7 @@ make px4_fmu-v2_default
## Parts / Housings
- **ARM MINI JTAG (J6)**: 1.27 mm 10pos header (SHROUDED), for Black Magic Probe: FCI 20021521-00010D4LF ([Distrelec](https://www.distrelec.ch/en/minitek-127-straight-male-pcb-header-surface-mount-rows-10-contacts-27mm-pitch-amphenol-fci-20021521-00010d4lf/p/14352308), [Digi-Key](https://www.digikey.com/en/products/detail/20021521-00010T1LF/609-4054-ND/2414951),) or Samtec FTSH-105-01-F-DV-K (untested) or Harwin M50-3600542 ([Digikey](https://www.digikey.com/en/products/detail/harwin-inc/M50-3600542/2264370))
- **ARM MINI JTAG (J6)**: 1.27 mm 10pos header (SHROUDED), for Black Magic Probe: FCI 20021521-00010D4LF ([Digi-Key](https://www.digikey.com/en/products/detail/20021521-00010T1LF/609-4054-ND/2414951),) or Samtec FTSH-105-01-F-DV-K (untested) or Harwin M50-3600542 ([Digikey](https://www.digikey.com/en/products/detail/harwin-inc/M50-3600542/2264370))
- JTAG Adapter Option #1: [BlackMagic Probe](https://1bitsquared.com/products/black-magic-probe). Note, may come without cables (check with manufacturer).
If so, you will need the **Samtec FFSD-05-D-06.00-01-N** cable ([Samtec sample service](https://www.samtec.com/products/ffsd-05-d-06.00-01-n) or [Digi-Key Link: SAM8218-ND](https://www.digikey.com/en/products/detail/samtec-inc/ffsd-05-d-06-00-01-n/1106577)) or [Tag Connect Ribbon](https://www.tag-connect.com/product/10-pin-cortex-ribbon-cable-4-length-with-50-mil-connectors) and a Mini-USB cable.
- JTAG Adapter Option #2: [Digi-Key Link: ST-LINK/V2](https://www.digikey.com/product-detail/en/stmicroelectronics/ST-LINK-V2/497-10484-ND) / [ST USER MANUAL](https://www.st.com/resource/en/user_manual/dm00026748.pdf), needs an ARM Mini JTAG to 20pos adapter: [Digi-Key Link: 726-1193-ND](https://www.digikey.com/en/products/detail/texas-instruments/MDL-ADA2/1986451)
+1 -8
View File
@@ -36,14 +36,7 @@ This autopilot is [supported](../flight_controller/autopilot_pixhawk_standard.md
## Where to buy
From [Drotek store](https://store.drotek.com/) (EU) :
- [Pixhawk 3 Pro (Pack)](https://store.drotek.com/autopilots/844-pixhawk-3-pro-pack.html)
- [Pixhawk 3 Pro](https://store.drotek.com/autopilots/821-pixhawk-pro-autopilot-8944595120557.html)
From [readymaderc](https://www.readymaderc.com) (USA) :
- [Pixhawk 3 Pro](https://www.readymaderc.com/products/details/pixhawk-3-pro-flight-controller)
No longer available.
## Building Firmware
+3 -1
View File
@@ -1,5 +1,7 @@
# Holybro Pixhawk 4 Mini (Discontinued)
<Badge type="info" text="Discontinued" px4_current="v1.15" year="2024"/>
:::warning
PX4 does not manufacture this (or any) autopilot.
Contact the [manufacturer](https://holybro.com/) for hardware support or compliance issues.
@@ -54,7 +56,7 @@ Additional information can be found in the [_Pixhawk 4 Mini_ Technical Data Shee
## Where to Buy
Order from [Holybro](https://holybro.com/collections/autopilot-flight-controllers/products/pixhawk4-mini).
No longer available.
## Interfaces
+1 -1
View File
@@ -154,7 +154,7 @@ Connector pin assignments are left to right (i.e. Pin 1 is the left-most pin).
## Voltage Ratings
_Pixhawk 5X_ can be triple-redundant on the power supply if three power sources are supplied. The three power rails are: **POWER1**, **POWER2** and **USB**.
The **POWER1** & **POWER2** ports on the Pixhawk 5X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670).
The **POWER1** & **POWER2** ports on the Pixhawk 5X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670).
**Normal Operation Maximum Ratings**
+3 -3
View File
@@ -36,8 +36,8 @@ The Pixhawk®​ 6X-RT is perfect for developers at corporate research labs, sta
## Key Design Points
- High performance [NXP i.MX RT1170 1GHz Crossover MCU](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1170-1-ghz-crossover-mcu-with-arm-cortex-cores:i.MX-RT1170) with Arm® Cortex® cores
- Hardware secure element [NXP EdgeLock SE051](https://www.nxp.com/products/security-and-authentication/authentication/edgelock-se051-proven-easy-to-use-iot-security-solution-with-support-for-updatability-and-custom-applets:SE051) an extension to the widely trusted EdgeLock SE050 Plug & Trust secure element family, supports applet updates in the field and delivers proven security certified to CC EAL 6+, with AVA_VAN.5 up to the OS level, for strong protection against the most recent attack scenarios. E.g, to securely store operator ID or certificates.
- High performance [NXP i.MX RT1170 1GHz Crossover MCU](https://www.nxp.com/products/i.MX-RT1170) with Arm® Cortex® cores
- Hardware secure element [NXP EdgeLock SE051](https://www.nxp.com/products/SE051) an extension to the widely trusted EdgeLock SE050 Plug & Trust secure element family, supports applet updates in the field and delivers proven security certified to CC EAL 6+, with AVA_VAN.5 up to the OS level, for strong protection against the most recent attack scenarios. E.g, to securely store operator ID or certificates.
- 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
- Triple redundancy domains: Completely isolated sensor domains with separate buses and separate power control
@@ -163,7 +163,7 @@ Notes:
## Voltage Ratings
_Pixhawk 6X-RT_ can be triple-redundant on the power supply if three power sources are supplied. The three power rails are: **POWER1**, **POWER2** and **USB**.
The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670).
The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670).
**Normal Operation Maximum Ratings**
+1 -2
View File
@@ -142,7 +142,6 @@ The Pixhawk®​ 6X is perfect for developers at corporate research labs, startu
- 2 CAN Buses for CAN peripheral
- CAN Bus has individual silent controls or ESC RX-MUX control
- 2 Power input ports with SMBus
- 1 AD & IO port
- 2 additional analog input
- 1 PWM/Capture input
@@ -195,7 +194,7 @@ Notes:
## Voltage Ratings
_Pixhawk 6X_ can be triple-redundant on the power supply if three power sources are supplied. The three power rails are: **POWER1**, **POWER2** and **USB**.
The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670).
The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670).
**Normal Operation Maximum Ratings**
+1 -1
View File
@@ -161,7 +161,7 @@ Notes:
_Pixhawk 6X Pro_ can be triple-redundant on the power supply if three power sources are supplied.
The three power rails are: **POWER1**, **POWER2** and **USB**.
The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670).
The **POWER1** & **POWER2** ports on the Pixhawk 6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670).
**Normal Operation Maximum Ratings**
+2 -2
View File
@@ -32,12 +32,12 @@ This autopilot is [supported](../flight_controller/autopilot_pixhawk_standard.md
## Where to Buy
Pixracer is available from the [mRobotics.io](https://store.mrobotics.io/mRo-PixRacer-R15-Official-p/m10023a.htm).
Pixracer Pro is available from the [store.3dr.com](https://store.3dr.com/pixracer-pro/).
Accessories include:
- [Digital airspeed sensor](https://hobbyking.com/en_us/hkpilot-32-digital-air-speed-sensor-and-pitot-tube-set.html)
- [Hobbyking<sup>&reg;</sup> OSD + EU Telemetry (433 MHz)](https://hobbyking.com/en_us/micro-hkpilot-telemetry-radio-module-with-on-screen-display-osd-unit-433mhz.html)
- Hobbyking<sup>&reg;</sup> OSD + EU Telemetry (433 MHz) (Discontinued)
## Kit
@@ -116,7 +116,7 @@ This autopilot is [supported](../flight_controller/autopilot_pixhawk_standard.md
_RaccoonLab FMUv6X_ can be triple-redundant on the power supply if three power sources are supplied.
The three power rails are: **POWER1**, **POWER2** and **USB**.
The **POWER1** & **POWER2** ports on the RaccoonLab FMUv6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/molex/products/part-detail/pcb_receptacles/5024430670).
The **POWER1** & **POWER2** ports on the RaccoonLab FMUv6X uses the 6 circuit [2.00mm Pitch CLIK-Mate Wire-to-Board PCB Receptacle](https://www.molex.com/en-us/products/part-detail/5024430670).
**Normal Operation Maximum Ratings**
@@ -14,7 +14,7 @@ It allows you to build PX4 and transfer to the RPi, or build natively.
## OS Image
Use the preconfigured [Emlid Raspberry Pi OS image for Navio 2](https://docs.emlid.com/navio2/configuring-raspberry-pi).
Use the preconfigured [Emlid Raspberry Pi OS image for Navio 2](https://docs.emlid.com/navio2/configuring-raspberry-pi/).
The default image will have most of the setup procedures shown below already done.
:::warning
@@ -48,7 +48,7 @@ First install required package:
sudo apt-get install crda
```
Edit the file `/etc/default/crda` to change the correct WiFi region. [Reference List](https://www.arubanetworks.com/techdocs/InstantWenger_Mobile/Advanced/Content/Instant%20User%20Guide%20-%20volumes/Country_Codes_List.htm)
Edit the file `/etc/default/crda` to change the correct WiFi region. [Reference List](https://arubanetworking.hpe.com/techdocs/InstantWenger_Mobile/Advanced/Content/Instant%20User%20Guide%20-%20volumes/Country_Codes_List.htm)
```sh
sudo nano /etc/default/crda
@@ -1,16 +0,0 @@
# Snapdragon Flight Autopilot (Discontinued)
<Badge type="info" text="Discontinued" />
:::warning
The Snapdragon Flight Autopilot has been [discontinued](../flight_controller/autopilot_experimental.md) and is no longer commercially available.
For information about how it is/was used see [PX4 User Guide v1.11](https://docs.px4.io/v1.11/en/flight_controller/snapdragon_flight.html)
PX4 does not manufacture this (or any) autopilot.
Contact the [manufacturer](https://www.intrinsyc.com/) for hardware support or compliance issues.
:::
The _Qualcomm Snapdragon Flight_ platform is a high-end autopilot / onboard computer which runs the PX4 Flight Stack on the DSP on the QuRT real time operating system using the [DSPAL API](https://github.com/ATLFlight/dspal) for POSIX compatibility.
In comparison to [Pixhawk](../flight_controller/pixhawk.md) it adds a camera and WiFi and high-end processing power, and different IO.
![Snapdragon Hero Doc](../../assets/hardware/snapdragon/hardware-snapdragon.jpg)
@@ -83,7 +83,7 @@ Select the PX4 edition when purchasing!
## Manual, Pinouts and Connection Diagrams
The manual with pinouts can be downloaded from [here](http://seriouslypro.com/files/SPRacingH7EXTREME-Manual-latest.pdf).
See the [SPRacingH7EXTREME website](http://seriouslypro.com/spracingh7extreme) for other diagrams.
See the [SPRacingH7EXTREME website](http://seriouslypro.com/products/spracingh7extreme) for other diagrams.
## Credits
+4 -4
View File
@@ -84,7 +84,7 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding
### Copter
- [px4_msgs::msg::TrajectorySetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/TrajectorySetpoint.msg)
- [px4_msgs::msg::TrajectorySetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/TrajectorySetpoint.msg)
- The following input combinations are supported:
- Position setpoint (`position` different from `NaN`). Non-`NaN` values of velocity and acceleration are used as feedforward terms for the inner loop controllers.
- Velocity setpoint (`velocity` different from `NaN` and `position` set to `NaN`). Non-`NaN` values acceleration are used as feedforward terms for the inner loop controllers.
@@ -92,14 +92,14 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding
- All values are interpreted in NED (Nord, East, Down) coordinate system and the units are \[m\], \[m/s\] and \[m/s^2\] for position, velocity and acceleration, respectively.
- [px4_msgs::msg::VehicleAttitudeSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleAttitudeSetpoint.msg)
- [px4_msgs::msg::VehicleAttitudeSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg)
- The following input combination is supported:
- quaternion `q_d` + thrust setpoint `thrust_body`.
Non-`NaN` values of `yaw_sp_move_rate` are used as feedforward terms expressed in Earth frame and in \[rad/s\].
- The quaternion represents the rotation between the drone body FRD (front, right, down) frame and the NED frame. The thrust is in the drone body FRD frame and expressed in normalized \[-1, 1\] values.
- [px4_msgs::msg::VehicleRatesSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/VehicleRatesSetpoint.msg)
- [px4_msgs::msg::VehicleRatesSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg)
- The following input combination is supported:
- `roll`, `pitch`, `yaw` and `thrust_body`.
@@ -114,7 +114,7 @@ The following offboard control modes bypass all internal PX4 control loops and s
- `xyz` for thrust and `xyz` for torque.
- All the values are in the drone body FRD frame and normalized in \[-1, 1\].
- [px4_msgs::msg::ActuatorMotors](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorMotors.msg) + [px4_msgs::msg::ActuatorServos](https://github.com/PX4/PX4-Autopilot/blob/main/msg/ActuatorServos.msg)
- [px4_msgs::msg::ActuatorMotors](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + [px4_msgs::msg::ActuatorServos](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg)
- You directly control the motor outputs and/or servo outputs.
- Currently works at lower level than then `control_allocator` module. Do not publish these messages when not in offboard mode.
- All the values normalized in \[-1, 1\]. For outputs that do not support negative values, negative entries map to `NaN`.
+54 -34
View File
@@ -9,10 +9,10 @@ Vehicles are [hand or catapult launched](#catapult-hand-launch) by default, but
::: info
- Mode is automatic - no user intervention is _required_ to control the vehicle.
- Mode requires at least a valid local position estimate (does not require a global position).
- Flying vehicles can't switch to this mode without valid local position.
- Flying vehicles will failsafe if they lose the position estimate.
- Disarmed vehicles can switch to mode without valid position estimate but can't arm.
- Mode requires at least a valid altitude estimation.
- Flying vehicles can't switch to this mode without valid altitude.
- Flying vehicles will failsafe if they lose the altitude estimate.
- Disarmed vehicles can switch to mode without valid altitude estimate but can't arm.
- RC control switches can be used to change flight modes.
- RC stick movement is ignored in catapult takeoff but can can be used to nudge the vehicle in runway takeoff.
- The [Failure Detector](../config/safety.md#failure-detector) will automatically stop the engines if there is a problem on takeoff.
@@ -26,39 +26,61 @@ Vehicles are [hand or catapult launched](#catapult-hand-launch) by default, but
Takeoff mode (and [fixed wing mission takeoff](../flight_modes_fw/mission.md#mission-takeoff)) has two modalities: [catapult/hand-launch](#catapult-hand-launch) or [runway takeoff](#runway-takeoff) (hardware-dependent).
The mode defaults to catapult/hand launch, but can be set to runway takeoff by setting [RWTO_TKOFF](#RWTO_TKOFF) to 1.
To use _Takeoff mode_ you first switch to the mode, and then arm the vehicle.
To use _Takeoff mode_ you first switch to the mode, and then arm the vehicle (or send the [MAV_CMD_NAV_TAKEOFF](https://mavlink.io/en/messages/common.html#MAV_CMD_NAV_TAKEOFF) command which does both).
The acceleration of hand/catapult launch triggers the motors to start.
For runway launch, motors ramp up automatically once the vehicle has been armed.
Irrespective of the modality, a flight path (starting point and takeoff course) and clearance altitude are defined:
- The starting point is the vehicle position when the takeoff mode is first entered.
- The course is set to the vehicle heading on arming
- The clearance altitude is set to [MIS_TAKEOFF_ALT](#MIS_TAKEOFF_ALT).
- The course is set to the vehicle heading on arming by default.
If a valid waypoint latitude/longitude is set the vehicle will instead track towards the waypoint.
- The clearance altitude is set to [MIS_TAKEOFF_ALT](#MIS_TAKEOFF_ALT) by default.
If a valid waypoint altitude is set is set the vehicle will instead use it as the clearance altitude.
On takeoff, the aircraft will follow line defined by the starting point and course, climbing at the maximum climb rate ([FW_T_CLMB_MAX](../advanced_config/parameter_reference.md#FW_T_CLMB_MAX)) until reaching the clearance altitude.
By default, on takeoff the aircraft will follow the line defined by the starting point and course, climbing at the maximum climb rate ([FW_T_CLMB_MAX](../advanced_config/parameter_reference.md#FW_T_CLMB_MAX)) until reaching the clearance altitude.
Reaching the clearance altitude causes the vehicle to enter [Hold mode](../flight_modes_fw/takeoff.md).
If a valid waypoint target is set, using `MAV_CMD_NAV_TAKEOFF` or the [VehicleCommand](../msg_docs/VehicleCommand.md) uORB topic, the vehicle will instead track towards the waypoint, and enter [Hold mode](../flight_modes_fw/takeoff.md) after reaching the waypoint altitude (within the acceptance radius).
::: tip
If the local position is invalid or becomes invalid while executing the takeoff, the controller is not able to track a course setpoint and will instead proceed climbing while keeping the wings level until the clearance altitude is reached.
:::
::: info
- Takeoff towards a target position was added in <Badge type="tip" text="main (planned for: PX4 v1.17)" />.
- Holding wings level and ascending to clearance attitude when local position is invalid during takeoff was added in <Badge type="tip" text="main (planned for: PX4 v1.17)" />.
- QGroundControl does not support `MAV_CMD_NAV_TAKEOFF` (at time of writing).
:::
### Parameters
Parameters that affect both catapult/hand-launch and runway takeoffs:
| Parameter | Description |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| <a id="MIS_TAKEOFF_ALT"></a>[MIS_TAKEOFF_ALT](../advanced_config/parameter_reference.md#MIS_TAKEOFF_ALT) | Minimum altitude setpoint above Home that the vehicle will climb to during takeoff. |
| <a id="FW_TKO_AIRSPD"></a>[FW_TKO_AIRSPD](../advanced_config/parameter_reference.md#FW_TKO_AIRSPD) | Takeoff airspeed (is set to [FW_AIRSPD_MIN](../advanced_config/parameter_reference.md#FW_AIRSPD_MIN) if not defined by operator) |
| <a id="FW_TKO_PITCH_MIN"></a>[FW_TKO_PITCH_MIN](../advanced_config/parameter_reference.md#FW_TKO_PITCH_MIN) | This is the minimum pitch angle setpoint during the climbout phase |
| <a id="FW_T_CLMB_MAX"></a>[FW_T_CLMB_MAX](../advanced_config/parameter_reference.md#FW_T_CLMB_MAX) | Maximum climb rate. |
| <a id="FW_FLAPS_TO_SCL"></a>[FW_FLAPS_TO_SCL](../advanced_config/parameter_reference.md#FW_FLAPS_TO_SCL) | Flaps setpoint during takeoff |
| <a id="FW_AIRSPD_FLP_SC"></a>[FW_AIRSPD_FLP_SC](../advanced_config/parameter_reference.md#FW_AIRSPD_FLP_SC) | Factor applied to the minimum airspeed when flaps are fully deployed. Necessary if FW_TKO_AIRSPD is below FW_AIRSPD_MIN. |
| Parameter | Description |
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="MIS_TAKEOFF_ALT"></a>[MIS_TAKEOFF_ALT][MIS_TAKEOFF_ALT] | This is the relative altitude (above launch altitude) the system will take off to if not otherwise specified. takeoff. |
| <a id="FW_TKO_AIRSPD"></a>[FW_TKO_AIRSPD][FW_TKO_AIRSPD] | Takeoff airspeed (is set to [FW_AIRSPD_MIN][FW_AIRSPD_MIN] if not defined by operator) |
| <a id="FW_TKO_PITCH_MIN"></a>[FW_TKO_PITCH_MIN][FW_TKO_PITCH_MIN] | This is the minimum pitch angle setpoint during the climbout phase |
| <a id="FW_T_CLMB_MAX"></a>[FW_T_CLMB_MAX][FW_T_CLMB_MAX] | Climb rate setpoint during climbout to takeoff altitude. |
| <a id="FW_FLAPS_TO_SCL"></a>[FW_FLAPS_TO_SCL][FW_FLAPS_TO_SCL] | Flaps setpoint during takeoff |
| <a id="FW_AIRSPD_FLP_SC"></a>[FW_AIRSPD_FLP_SC][FW_AIRSPD_FLP_SC] | Factor applied to the minimum airspeed when flaps are fully deployed. Needed if [FW_TKO_AIRSPD](#FW_TKO_AIRSPD) is below [FW_AIRSPD_MIN][FW_AIRSPD_MIN]. |
[FW_AIRSPD_MIN]: ../advanced_config/parameter_reference.md#FW_AIRSPD_MIN
[FW_FLAPS_TO_SCL]: ../advanced_config/parameter_reference.md#FW_FLAPS_TO_SCL
[FW_AIRSPD_FLP_SC]: ../advanced_config/parameter_reference.md#FW_AIRSPD_FLP_SC
[FW_TKO_AIRSPD]: ../advanced_config/parameter_reference.md#FW_TKO_AIRSPD
[MIS_TAKEOFF_ALT]: ../advanced_config/parameter_reference.md#MIS_TAKEOFF_ALT
[FW_TKO_PITCH_MIN]: ../advanced_config/parameter_reference.md#FW_TKO_PITCH_MIN
[FW_T_CLMB_MAX]: ../advanced_config/parameter_reference.md#FW_T_CLMB_MAX
::: info
The vehicle always respects normal FW max/min throttle settings during takeoff ([FW_THR_MIN](../advanced_config/parameter_reference.md#FW_THR_MIN), [FW_THR_MAX](../advanced_config/parameter_reference.md#FW_THR_MAX)).
:::
<a id="hand_launch"></a>
## Catapult/Hand Launch
## Catapult/Hand Launch {#hand_launch}
In _catapult/hand-launch mode_ the vehicle waits to detect launch (based on acceleration trigger).
On launch it enables the motor(s) and climbs with the maximum climb rate [FW_T_CLMB_MAX](#FW_T_CLMB_MAX) while keeping the pitch setpoint above [FW_TKO_PITCH_MIN](#FW_TKO_PITCH_MIN).
@@ -84,9 +106,7 @@ The _launch detector_ is affected by the following parameters:
| <a id="FW_LAUN_AC_T"></a>[FW_LAUN_AC_T](../advanced_config/parameter_reference.md#FW_LAUN_AC_T) | Trigger time (acceleration must be above threshold for this amount of seconds) |
| <a id="FW_LAUN_MOT_DEL"></a>[FW_LAUN_MOT_DEL](../advanced_config/parameter_reference.md#FW_LAUN_MOT_DEL) | Delay from launch detection to motor spin up |
<a id="runway_launch"></a>
## Runway Takeoff
## Runway Takeoff {#runway_launch}
Runway takeoffs can be used by vehicles with landing gear and and steerable wheel (only).
You will first need to enable the wheel controller using the parameter [FW_W_EN](#FW_W_EN).
@@ -109,18 +129,18 @@ It consists of a rate controller (P-I-FF-controller with the parameters [FW_WR_P
Runway takeoff is affected by the following parameters:
| Parameter | Description |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| <a id="RWTO_TKOFF"></a>[RWTO_TKOFF](../advanced_config/parameter_reference.md#RWTO_TKOFF) | Enable runway takeoff |
| <a id="FW_W_EN"></a>[FW_W_EN](../advanced_config/parameter_reference.md#FW_W_EN) | Enable wheel controller |
| <a id="RWTO_MAX_THR"></a>[RWTO_MAX_THR](../advanced_config/parameter_reference.md#RWTO_MAX_THR) | Max throttle during runway takeoff |
| <a id="RWTO_RAMP_TIME"></a>[RWTO_RAMP_TIME](../advanced_config/parameter_reference.md#RWTO_RAMP_TIME) | Throttle ramp up time |
| <a id="RWTO_ROT_AIRSPD"></a>[RWTO_ROT_AIRSPD](../advanced_config/parameter_reference.md#RWTO_ROT_AIRSPD) | Airspeed threshold to start rotation (pitching up). If not configured by operator is set to 0.9\*FW_TKO_AIRSPD. |
| <a id="RWTO_ROT_TIME"></a>[RWTO_ROT_TIME](../advanced_config/parameter_reference.md#RWTO_ROT_TIME) | This is the time desired to linearly ramp in takeoff pitch constraints during the takeoff rotation. |
| <a id="FW_TKO_AIRSPD"></a>[FW_TKO_AIRSPD](../advanced_config/parameter_reference.md#FW_TKO_AIRSPD) | Airspeed setpoint during the takeoff climbout phase (after rotation). If not configured by operator is set to FW_AIRSPD_MIN. |
| <a id="RWTO_NUDGE"></a>[RWTO_NUDGE](../advanced_config/parameter_reference.md#RWTO_NUDGE) | Enable wheel controller nudging while on the runway |
| <a id="FW_WING_SPAN"></a>[FW_WING_SPAN](../advanced_config/parameter_reference.md#FW_WING_SPAN) | The wingspan of the vehicle. Used to prevent wingstrikes. |
| <a id="FW_WING_HEIGHT"></a>[FW_WING_HEIGHT](../advanced_config/parameter_reference.md#FW_WING_HEIGHT) | The height of the wings above ground (ground clearance). Used to prevent wingstrikes. |
| Parameter | Description |
| -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| <a id="RWTO_TKOFF"></a>[RWTO_TKOFF](../advanced_config/parameter_reference.md#RWTO_TKOFF) | Enable runway takeoff |
| <a id="FW_W_EN"></a>[FW_W_EN](../advanced_config/parameter_reference.md#FW_W_EN) | Enable wheel controller |
| <a id="RWTO_MAX_THR"></a>[RWTO_MAX_THR](../advanced_config/parameter_reference.md#RWTO_MAX_THR) | Max throttle during runway takeoff |
| <a id="RWTO_RAMP_TIME"></a>[RWTO_RAMP_TIME](../advanced_config/parameter_reference.md#RWTO_RAMP_TIME) | Throttle ramp up time |
| <a id="RWTO_ROT_AIRSPD"></a>[RWTO_ROT_AIRSPD](../advanced_config/parameter_reference.md#RWTO_ROT_AIRSPD) | Airspeed threshold to start rotation (pitching up). If not configured by operator is set to 0.9\*FW_TKO_AIRSPD. |
| <a id="RWTO_ROT_TIME"></a>[RWTO_ROT_TIME](../advanced_config/parameter_reference.md#RWTO_ROT_TIME) | This is the time desired to linearly ramp in takeoff pitch constraints during the takeoff rotation. |
| <a id="FW_TKO_AIRSPD"></a>[FW_TKO_AIRSPD](../advanced_config/parameter_reference.md#FW_TKO_AIRSPD) | Airspeed setpoint during the takeoff climbout phase (after rotation). If not configured by operator is set to FW_AIRSPD_MIN. |
| <a id="RWTO_NUDGE"></a>[RWTO_NUDGE](../advanced_config/parameter_reference.md#RWTO_NUDGE) | Enable wheel controller nudging while on the runway |
| <a id="FW_WING_SPAN"></a>[FW_WING_SPAN](../advanced_config/parameter_reference.md#FW_WING_SPAN) | The wingspan of the vehicle. Used to prevent wingstrikes. |
| <a id="FW_WING_HEIGHT"></a>[FW_WING_HEIGHT](../advanced_config/parameter_reference.md#FW_WING_HEIGHT) | The height of the wings above ground (ground clearance). Used to prevent wingstrikes. |
## See Also
+17 -11
View File
@@ -38,13 +38,16 @@ RC control cannot be used to start the mode (if you switch to the mode via RC it
RC control can be used to change the orbit altitude, radius, speed, and orbit direction:
- **Left stick:**
- _up/down:_ controls speed of ascent/descent, as in [Position mode](../flight_modes_mc/position.md). When in center deadzone, altitude is locked.
- _up/down:_ controls speed of ascent/descent, as in [Position mode](../flight_modes_mc/position.md).
When in center deadzone, altitude is locked.
- _left/right:_ no effect.
- **Right stick:**
- _left/right:_ controls acceleration of orbit in clockwise/counter-clockwise directions. When centered the current speed is locked.
- Maximum velocity is 10m/s and further limited to keep the centripetal acceleration below 2m/s^2.
- _left/right:_ controls acceleration of orbit in clockwise/counter-clockwise directions.
When centered the current speed is locked.
- Maximum velocity is [MPC_XY_VEL_MAX](#MPC_XY_VEL_MAX) and further limited to keep the centripetal acceleration below 2m/s^2.
- _up/down:_ controls orbit radius (smaller/bigger). When centered the current radius is locked.
- Minimum radius is 1m. Maximum radius is 100m.
- Minimum radius is 1m.
Maximum radius is [MC_ORBIT_RAD_MAX](#MC_ORBIT_RAD_MAX).
The diagram below shows the mode behaviour visually (for a [mode 2 transmitter](../getting_started/rc_transmitter_receiver.md#transmitter_modes)).
@@ -56,19 +59,22 @@ The mode can be stopped by switching to any other flight mode (using RC or QGC).
The mode is affected by the following parameters:
| Parameter | Description |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| <a id="MC_ORBIT_RAD_MAX"></a>[MC_ORBIT_RAD_MAX](../advanced_config/parameter_reference.md#MC_ORBIT_RAD_MAX) | Maximum radius of orbit. Default: 1000m. |
| <a id="MC_ORBIT_YAW_MOD"></a>[MC_ORBIT_YAW_MOD](../advanced_config/parameter_reference.md#MC_ORBIT_YAW_MOD) | Yaw behaviour during orbit flight. Default: Front to Circle Center. |
| Parameter | Description |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| <a id="MC_ORBIT_RAD_MAX"></a>[MC_ORBIT_RAD_MAX](../advanced_config/parameter_reference.md#MC_ORBIT_RAD_MAX) | Maximum radius of orbit. Default: 1000m. |
| <a id="MC_ORBIT_YAW_MOD"></a>[MC_ORBIT_YAW_MOD](../advanced_config/parameter_reference.md#MC_ORBIT_YAW_MOD) | Yaw behaviour during orbit flight. Default: Front to Circle Center. |
| <a id="MPC_XY_VEL_MAX"></a>[MPC_XY_VEL_MAX](../advanced_config/parameter_reference.md#MPC_XY_VEL_MAX) | Tangential speed limit. Stick input won't accelerate beyond this limit. Higher commands are accepted but capped. |
The following limits are hard coded:
- Initial/default rotation is 1 m/s in a clockwise direction.
- The maximum acceleration is limited to 2 m/s^2, with priority on keeping the commanded circle trajectory rather than commanded ground speed (i.e. the vehicle will slow down in order to achieve the correct circle if the acceleration exceeds 2m/s^2).
- Initial/default rotation is 1m/s in a clockwise direction.
- The maximum acceleration is limited to 2m/s^2, with priority on keeping the commanded circle trajectory rather than commanded ground speed (i.e. the vehicle will slow down in order to achieve the correct circle if the acceleration exceeds 2m/s^2).
## MAVLink Messages (Developers)
Orbit mode uses the following MAVLink commands:
- [MAV_CMD_DO_ORBIT](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_ORBIT) - Start an orbit with specified center point, radius, direction, altitude, speed and [yaw direction](https://mavlink.io/en/messages/common.html#ORBIT_YAW_BEHAVIOUR) (vehicle defaults to faceing centre of orbit).
- [MAV_CMD_DO_ORBIT](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_ORBIT) - Start an orbit with specified center point, radius, direction, altitude, speed and [yaw direction](https://mavlink.io/en/messages/common.html#ORBIT_YAW_BEHAVIOUR).
The same defaults and limits apply.
When exceeding limits the command is accepted but velocity and radius capped.
- [ORBIT_EXECUTION_STATUS](https://mavlink.io/en/messages/common.html#ORBIT_EXECUTION_STATUS) - Orbit status emitted during orbit to update GCS of current orbit parameters (these may be changed by the RC controller).
+39 -40
View File
@@ -1,6 +1,6 @@
# ThunderFly Auto-G2 Autogyro
The *ThunderFly Auto-G2* is an autopilot-controlled autogyro based on the [
The _ThunderFly Auto-G2_ is an autopilot-controlled autogyro based on the [
Durafly™ Auto-G2 Gyrocopter](https://hobbyking.com/en_us/duraflytm-auto-g2-gyrocopter-w-auto-start-system-821mm-pnf.html) RC model, with several parts of the original model substituted for 3D printable ones.
![Auto-G2](../../assets/airframes/autogyro/auto-g2/autog2_title.jpg)
@@ -11,8 +11,7 @@ Check out our site for more information on the current [TF-G2 commercial airfram
:::
All the added parts are available on [GitHub](https://github.com/ThunderFly-aerospace/Auto-G2) as an open-source project.
Printed parts are designed in [OpenSCAD](https://www.openscad.org/).
Printed parts are designed in [OpenSCAD](https://openscad.org/).
## Modifications
@@ -22,10 +21,11 @@ Autogyro is controlled by a rudder and an elevator.
Durafly Auto-G2 autogyro box contains the autogyro polystyrene body, ESC, motor (probably 800kV), 4 servos, tail airfoils, 3 blades with rotor center parts, wire chassis and a prerotator.
Modification of the Durafly model are as follows:
* Addition of an autopilot
* Rotor head with two axes of freedom (pitch, roll)
* Two-blade rotor with safely breakable rotor plate
* Larger landing gears
- Addition of an autopilot
- Rotor head with two axes of freedom (pitch, roll)
- Two-blade rotor with safely breakable rotor plate
- Larger landing gears
### Autopilot
@@ -35,7 +35,6 @@ Therefore a low-weight flight controller is recommended (e.g. [Holybro pix32](..
The autopilot should be mounted on the bottom side of the autogyro on a 3D-printed damping pad.
We have used the damping platform found on [thingiverse](https://www.thingiverse.com/thing:160655)
### Rotor-head
The rotor head is (compared to the original autogyro) modified so that it allows a motion in both roll and pitch axes.
@@ -62,15 +61,16 @@ The reasons are reduced vibration and easier construction.
Printed central parts are designed to be used both with Chinese Durafly blades or 3D printed blades.
The rotor's central part consists of several components, which have the following roles:
* They enable blade flapping.
* They have deformation zones that break upon impact with the ground.
Thanks to this, the rotor can usually be repaired quickly by replacing only one component.
* Easy setup of blades' angle-of-attack.
- They enable blade flapping.
- They have deformation zones that break upon impact with the ground.
Thanks to this, the rotor can usually be repaired quickly by replacing only one component.
- Easy setup of blades' angle-of-attack.
#### HobbyKing rotor blades
It is possible to use a printed central part of the rotor with the original blades.
These blades can be bought on [HobbyKing](https://hobbyking.com/en_us/duraflytm-auto-g-gyrocopter-821mm-replacement-main-blade-1pcs-bag.html).
The blades used were "Durafly™ Auto-G2 Gyrocopter 821mm - Replacement Main Blade" (Discontinued)
Hobbyking blades differ in the position of the center of gravity, and it is therefore necessary to balance them properly.
#### 3D printed rotor blades
@@ -104,44 +104,43 @@ It can be handled, for example, by nulling the engines output in the transmit
### Electronic
* Autopilot ([Holybro pix32](../flight_controller/holybro_pix32.md), [CUAV nano](../flight_controller/cuav_v5_nano.md))
* GPS (GPS Module NEO-6M, with patch antenna)
* Airspeed sensor ([SDP3x](https://www.sensirion.com/en/flow-sensors/differential-pressure-sensors/worlds-smallest-differential-pressure-sensor/))
* Stronger servos as a substitution for the original ones (optional), ([BlueBird BMS-125WV](https://www.blue-bird-model.com/products_detail/411.htm))
* Additional servo for release device (optional)
- Autopilot ([Holybro pix32](../flight_controller/holybro_pix32.md), [CUAV nano](../flight_controller/cuav_v5_nano.md))
- GPS (GPS Module NEO-6M, with patch antenna)
- Airspeed sensor ([SDP3x series](https://sensirion.com/products/catalog?categories=differential-pressure&series=SDP3x&page=1&page_size=12))
- Stronger servos as a substitution for the original ones (optional), ([BlueBird BMS-125WV](https://www.blue-bird-model.com/products_detail/411.htm))
- Additional servo for release device (optional)
### Mechanical parts
* Rotor head Bearing (623 2Z C3)
* Propeller ([APC 10x7](https://www.apcprop.com/product/10x7e/))
* [Prop adapter](https://mpjet.com/shop/gb/prop-adapters/184-collet-prop-adapter-19-mm-4-mm-shaft-m629-standard.html)
- Rotor head Bearing (623 2Z C3)
- Propeller ([APC 10x7](https://www.apcprop.com/product/10x7e/))
- [Prop adapter](https://mpjet.com/shop/gb/prop-adapters/184-collet-prop-adapter-19-mm-4-mm-shaft-m629-standard.html)
### Printable parts
* Rotor head:
* [Pylon end](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1001.stl)
* [Pitch part](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1002.stl)
* [Roll part](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1003.stl)
- Rotor head:
- [Pylon end](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1001.stl)
- [Pitch part](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1002.stl)
- [Roll part](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1003.stl)
* Rotor:
* [center part washer top](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1008.stl)
* [center part washer bottom](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1004.stl)
* [center plate with deformation zones](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1001.stl)
* [washers for setting AoA of blades](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1005.stl)
* [Rotor nut](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1002.stl)
- Rotor:
- [center part washer top](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1008.stl)
- [center part washer bottom](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1004.stl)
- [center plate with deformation zones](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1001.stl)
- [washers for setting AoA of blades](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/111_1005.stl)
- [Rotor nut](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1002.stl)
* Rotor blades (optional)
* Autopilot holder
* [Release device](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1010.stl)
* [Front wheels](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1011.stl)
- Rotor blades (optional)
- Autopilot holder
- [Release device](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1010.stl)
- [Front wheels](https://github.com/ThunderFly-aerospace/Auto-G2/blob/master/CAD/stl/888_1011.stl)
### Recommended spare parts
* Servos with improved quality (recommended [BlueBird BMS-125WV](https://www.blue-bird-model.com/products_detail/411.htm), original servos are not very durable))
* Propeller ([APC 10x7](https://www.apcprop.com/product/10x7e/))
* Rotor centre plate with deformation zones (3D printed)
* Rotor blades ([HobbyKing](https://hobbyking.com/en_us/duraflytm-auto-g-gyrocopter-821mm-replacement-main-blade-1pcs-bag.html) or 3D printed)
- Servos with improved quality (recommended [BlueBird BMS-125WV](https://www.blue-bird-model.com/products_detail/411.htm), original servos are not very durable))
- Propeller ([APC 10x7](https://www.apcprop.com/product/10x7e/))
- Rotor centre plate with deformation zones (3D printed)
- Rotor blades ("Durafly™ Auto-G2 Gyrocopter 821mm" (Discontinued on HobbyKing), similar blades, or 3D printed)
## Video
@@ -14,8 +14,8 @@ Key information
The components needed for this build are:
- Flight controller: [CUAV V5+](https://store.cuav.net/index.php?id_product=95&id_product_attribute=0&rewrite=cuav-new-pixhack-v5-autopilot-m8n-gps-for-fpv-rc-drone-quadcopter-helicopter-flight-simulator-free-shipping-whole-sale&controller=product&id_lang=1):
- GPS: [CUAV NEO V2 GPS](https://store.cuav.net/index.php?id_product=97&id_product_attribute=0&rewrite=cuav-new-ublox-neo-m8n-gps-module-with-shell-stand-holder-for-flight-controller-gps-compass-for-pixhack-v5-plus-rc-parts-px4&controller=product&id_lang=1)
- Flight controller: [CUAV V5+](https://store.cuav.net/uav-flight-controller/):
- GPS: CUAV NEO V2 GPS (Discontined)
- Power Module
- Frame: [DJI F450](https://www.amazon.com/Flame-Wheel-Basic-Quadcopter-Drone/dp/B00HNMVQHY)
- Propellers: [DJI Phantom Built-in Nut Upgrade Propellers 9.4x5](https://www.masterairscrew.com/products/dji-phantom-built-in-nut-upgrade-propellers-in-black-mr-9-4x5-prop-set-x4-phantom)
+4 -4
View File
@@ -18,8 +18,8 @@ The components needed for this build are:
::: info
You can select your own flight controller of choice, it just needs to support 8 DShot outputs.
:::
- GPS: [ZED-F9P](https://www.gnss.store/gnss-gps-modules/105-ublox-zed-f9p-rtk-gnss-receiver-board-with-sma-base-or-rover.html?search_query=ZED-F9P&results=11)
- [GPS helix antenna](https://www.gnss.store/rf-gps-antennas/28-high-performance-multi-band-gnss-active-quad-helix-antenna-for-rtk.html)
- GPS: [ZED-F9P](https://gnss.store/zed-f9p-gnss-modules/105-elt0092.html)
- [GPS helix antenna](https://gnss.store/gnss-rtk-multiband-antennas/28-elt0014.html)
::: info
Any other GPS may work as well, however a helix antenna is expected to perform better for inverted flights.
:::
@@ -32,8 +32,8 @@ The components needed for this build are:
- Battery: we used a 6S 3300mAh LiPo. Make sure to check the dimensions so it fits the frame.
- Battery strap
- Frame:
- Carbon square tube R 8mm X 7mm X 1000mm, e.g. [here](https://shop.swiss-composite.ch/pi/Halbfabrikate/Rohre/Vierkant-Rohre/CFK-Vierkantrohr-8x8-7x7mm.html)
- Carbon Rods R 3mm X 2mm X 1000mm, e.g. [here](https://shop.swiss-composite.ch/pi/Halbfabrikate/Rohre/CFK-Rohre-pultrudiert-pullwinding/Carbon-Microtubes-100cm-x-20-3mm.html)
- Carbon square tube R 8mm X 7mm X 1000mm, e.g. [here on shop.swiss-composite.ch](https://shop.swiss-composite.ch/pi.php/Halbfabrikate/Rohre/Vierkant-Rohre/CFK-Vierkantrohr-8x8-7x7mm.html)
- Carbon Rods R 3mm X 2mm X 1000mm, e.g. [here on shop.swiss-composite.ch](https://shop.swiss-composite.ch/pi.php/Halbfabrikate/Rohre/CFK-Rohre-pultrudiert-pullwinding/Carbon-Microtubes-100cm-x-20-3mm.html)
- Required lengths:
- square tube: 8 pieces with length of 248mm
- rods: 12x328mm, 6x465mm
+1 -1
View File
@@ -49,7 +49,7 @@ Key build features
- [Holybro M9N GPS module](https://holybro.com/products/m9n-gps)
- Holybro PWM breakout board
- MS4525DO differential pressure module and pitot tube
- [Caddx Vista FPV air unit](https://caddxfpv.com/products/caddx-vista-kit)
- [Caddx Vista FPV air unit](https://caddxfpv.com/collections/vista-kit)
- [Emax ES08MA ii](https://emaxmodel.com/products/emax-es08ma-ii-12g-mini-metal-gear-analog-servo-for-rc-model-robot-pwm-servo)
- [DJI FPV Goggles](https://www.dji.com/fpv)
- [ExpressLRS Matek Diversity RX](https://www.mateksys.com/?portfolio=elrs-r24)
@@ -44,7 +44,7 @@ Key Build Features:
- [SIK telemetry radio](../telemetry/sik_radio.md)
- MS4525DO differential pressure module and pitot tube
- [Caddx Vista FPV air unit](https://caddxfpv.com/products/caddx-vista-kit)
- [Caddx Vista FPV air unit](https://caddxfpv.com/collections/vista-kit)
- [DJI FPV Goggles](https://www.dji.com/fpv)
- [ExpressLRS Matek Diversity RX](https://www.mateksys.com/?portfolio=elrs-r24)
- [Custom designed 3D printed parts](https://github.com/PX4/PX4-Autopilot/raw/main/docs/assets/airframes/fw/turbo_timber_evolution/3d_printed_parts.zip)
+10 -16
View File
@@ -14,21 +14,17 @@ Key information:
### Z-84 Plug n' Fly (PNF/PNP) or Kit
One of these:
- [Banggood](https://www.banggood.com/Wing-Wing-Z-84-Z84-EPO-845mm-Wingspan-Flying-Wing-PNP-p-973125.html)
- [Hobbyking US Warehouse](https://hobbyking.com/en_us/wing-wing-z-84-epo-845mm-kit.html)
:::tip
PNF (or "PNP") versions include motor, propeller and electronic speed controller.
The "kit" version does not include these components, which must be purchased separately.
:::
### Electronic Speed Controller (ESC)
One of these (any small (>=12A) ESC will do):
Any small (>=12A) ESC will do:
- [Turnigy 20A Brushed ESC ESC](https://hobbyking.com/en_us/turnigy-20a-brushed-esc.html) (Hobbyking)
- [Lumenier Regler 30A BLHeli_S ESC OPTO](https://www.getfpv.com/lumenier-30a-blheli-s-esc-opto-2-4s.html) (GetFPV)
### Autopilot and Essential Components
@@ -39,7 +35,6 @@ One of these (any small (>=12A) ESC will do):
- [Digital airspeed sensor](../flight_controller/pixfalcon.md#availability) for Holybro pix32 / Pixfalcon
- 1800 mAh 2S LiPo Battery - e.g. [Team Orion 1800mAh 7.4V 50C 2S1P](https://teamorion.com/en/batteries-en/lipo/soft-case/team-orion-lipo-1800-2s-7-4v-50c-xt60-en/)
### Recommended spare parts
- 1 cm diameter O-ring for prop saver ([Hobbyking](https://hobbyking.com/en_us/wing-wing-z-84-o-ring-10pcs.html))
@@ -51,14 +46,13 @@ Wire the servos and motors as shown.
Use the `MAIN` outputs (not the ones labeled with AUX).
The motor controller needs to have an in-built BEC, as the autopilot is not powering the servo rail.
Port | Connection
--- | ---
RC IN | PPM or S.BUS / S.BUS2 input
MAIN 1 | Left Aileron
MAIN 2 | Right Aileron
MAIN 3 | Empty
MAIN 4 | Motor 1
| Port | Connection |
| ------ | --------------------------- |
| RC IN | PPM or S.BUS / S.BUS2 input |
| MAIN 1 | Left Aileron |
| MAIN 2 | Right Aileron |
| MAIN 3 | Empty |
| MAIN 4 | Motor 1 |
## Build Log
@@ -75,9 +69,9 @@ The images below give a rough idea about the assembly process, which is simple a
### Airframe Configuration
Select **Flying Wing > Generic Flying Wing** in the QGroundControl [Airframe Configuration](../config/airframe.md):
Select **Flying Wing > Generic Flying Wing** in the QGroundControl [Airframe Configuration](../config/airframe.md):
![QGC - select firmware for West Wing](../../assets/airframes/fw/wing_wing/qgc_firmware_flying_wing_west_wing.png)
![QGC - select firmware for West Wing](../../assets/airframes/fw/wing_wing/qgc_firmware_flying_wing_west_wing.png)
### Actuator Mapping
@@ -264,7 +264,6 @@ Flight controllers that do not include an SD Card slot may:
- Disable notification beeps are disabled using the parameter [CBRK_BUZZER](../advanced_config/parameter_reference.md#CBRK_BUZZER).
- [Stream logs](../dev_log/logging.md#log-streaming) to another component (companion).
- Store missions in RAM/FLASH.
<!-- Too low-level for this. But see FLASH_BASED_DATAMAN in Intel Aero: https://github.com/PX4/PX4-Autopilot/blob/main/boards/intel/aerofc-v1/src/board_config.h#L115 -->
## Payloads
+1 -1
View File
@@ -66,7 +66,7 @@ You then need to ensure that the parachute pin will be set to a value that will
The output is automatically set to the maximum PWM value when a failsafe is triggered.
::: info
For the spring-loaded launcher from [Fruity Chutes](https://fruitychutes.com/buyachute/drone-and-uav-parachute-recovery-c-21/harrier-drone-parachute-launcher-c-21_33/) the minimum PWM value should be between 700 and 1000ms, and the maximum value between 1800 and 2200ms.
For the spring-loaded launcher from [Fruity Chutes](https://fruitychutes.com/uav_rpv_drone_recovery_parachutes/drone_multicopter_quadcopter_recovery_parachutes#Harrier) the minimum PWM value should be between 700 and 1000ms, and the maximum value between 1800 and 2200ms.
:::
### MAVLink Parachute Setup
+2 -2
View File
@@ -54,8 +54,8 @@ The release includes new hardware support for the following boards, peripherals,
- CUAV X7 / X7Pro
- CUAV Nora
- CUAV CAN GPS (Neo-3-2)
- SP Racing H7 Extreme ([Read more about this product on the manufacturers site](http://seriouslypro.com/spracingh7extreme))
- Bitcraze Crazyflie v2.1 ([Read more about this product on the manufacturers site](https://www.bitcraze.io/products/crazyflie-2-1/))
- SP Racing H7 Extreme ([Read more about this product on the manufacturers site](http://seriouslypro.com/products/spracingh7extreme))
- Bitcraze Crazyflie v2.1 ([Read more about this product on the manufacturers site](https://www.bitcraze.io/products/crazyflie-2-1-brushless/))
- ARK CAN Flow ([Read more about this product on the manufacturers site](https://arkelectron.com/product/ark-flow/))
- mRo Ctrl Zero H7 (Experimental) ([Read more about this product on the manufacturers site](https://store.mrobotics.io/mRo-Control-Zero-F7-p/mro-ctrl-zero-f7.htm))
+2 -1
View File
@@ -80,7 +80,8 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
### Fixed-wing
- TBD
- [Fixed Wing Takeoff mode](../flight_modes_fw/takeoff.md) will now keep climbing with level wings on position loss.
A target takeoff waypoint can be set to control takeoff course and loiter altitude. ([PX4-Autopilot#25083](https://github.com/PX4/PX4-Autopilot/pull/25083)).
### Rover
+4 -10
View File
@@ -90,9 +90,7 @@ You can also disable GNSS, baro and range finder fusion using [EKF2_GPS_CTRL](..
Reboot the flight controller in order for parameter changes to take effect.
:::
<a id="tuning-EKF2_EV_DELAY"></a>
#### Tuning EKF2_EV_DELAY
#### Tuning EKF2_EV_DELAY {#tuning-EKF2_EV_DELAY}
[EKF2_EV_DELAY](../advanced_config/parameter_reference.md#EKF2_EV_DELAY) is the _Vision Position Estimator delay relative to IMU measurements_.
@@ -171,9 +169,7 @@ VIO and MoCap systems have different ways of obtaining pose data, and have their
The setup for specific systems is covered [below](#setup_specific_systems).
For other systems consult the vendor setup documentation.
<a id="relaying_pose_data_to_px4"></a>
### Relaying Pose Data to PX4
### Relaying Pose Data to PX4 {#relaying_pose_data_to_px4}
MAVROS has plugins to relay a visual estimation from a VIO or MoCap system using the following pipelines:
@@ -253,13 +249,11 @@ When using the MAVROS _odom_ plugin, it is important that no other node is publi
This might break the _tf_ tree.
:::
<a id="setup_specific_systems"></a>
## Specific System Setups
## Specific System Setups {#setup_specific_systems}
### OptiTrack MoCap
The following steps explain how to feed position estimates from an [OptiTrack](https://optitrack.com/motion-capture-robotics/) system to PX4.
The following steps explain how to feed position estimates from an [OptiTrack](https://optitrack.com/applications/robotics/) system to PX4.
It is assumed that the MoCap system is calibrated.
See [this video](https://www.youtube.com/watch?v=cNZaFEghTBU) for a tutorial on the calibration process.
+70
View File
@@ -0,0 +1,70 @@
# Fuzz Tests
Fuzz tests are a generalised form of [unit test](../test_and_ci/unit_tests.md) that run code against a large number of random inputs.
This helps to ensure that the code is robust against any input, not just those expected by the developer.
They can be written like unit tests with possible assertions (`EXPECT_EQ`, etc), and have a set of input parameters.
The fuzzer then tries to find inputs that cause the code to crash (with [Address Sanitizer](https://clang.llvm.org/docs/AddressSanitizer.html) enabled automatically) or trigger an assertion.
The tests are run as part of normal unit tests, and in a more comprehensive fuzzing mode test.
For more information see [Running Fuzz Tests](#running-fuzz-tests) below.
## Writing a Fuzz Test
To write a fuzz test:
1. Start by writing a "normal" [functional test](../test_and_ci/unit_tests.md#functional-test).
1. Make sure the file name contains `fuzz` (lower case).
For example `my_driver_fuzz_tests.cpp`.
1. Add one or more fuzz tests to the file.
For example:
```cpp
#include <gtest/gtest.h>
#include <fuzztest/fuzztest.h>
void myDriverNeverCrashes(const std::string& s) {
MyDriver driver;
driver.handleInput(s);
}
FUZZ_TEST(MyDriverFuzzTests, myDriverNeverCrashes);
```
The file can also contain normal tests.
For more information, see https://github.com/google/fuzztest.
A complete example in the PX4 repository can be found in the [septentrio driver](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/gnss/septentrio/septentrio_fuzz_tests.cpp).
## Running Fuzz Tests
Fuzz tests can be run in two modes:
- As part of normal unit tests with `make tests`.
This will only create a small number of inputs and not use coverage information.
- In fuzzing mode: this runs a single fuzz test with coverage information over a longer period of time (either fixed or indefinitely).
The fuzzer will try to find inputs that cover all reachable code paths.
It requires compilation with Clang and can be run with the following commands:
```sh
rm -rf build/px4_sitl_tests
export CC=clang
export CXX=clang++
make tests TESTFILTER=__no_tests__
cd build/px4_sitl_tests
./functional-<my-test> --fuzz=<test-name>
```
## Seeds
Depending on the code complexity, it might be hard for the fuzzer to find inputs that pass certain conditions.
For this it is possible to provide one or more seeds, which the fuzzer will use as first inputs.
[The google documentation](https://github.com/google/fuzztest/blob/main/doc/fuzz-test-macro.md#initial-seeds-initial-seeds) contains more details.
You can also use the `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` macro for conditional code compilation, for example to exclude CRC checks.
More information about efficient fuzzing can be found on [this page](https://chromium.googlesource.com/chromium/src/+/main/testing/libfuzzer/efficient_fuzzing.md).
## CI
Fuzz tests are run as part of the normal unit tests in CI for each pull request.
In addition, the fuzz tests are run daily for 15 minutes on the main branch.
+8 -1
View File
@@ -23,7 +23,7 @@ The steps to create new unit tests are as follows:
Tests can be run via `make tests`, after which you will find the binary in `build/px4_sitl_test/unit-MyNewUnit`.
It can be run directly in a debugger.
## Writing a GTest Functional Test
## Writing a GTest Functional Test {#functional-test}
GTest functional tests should be used when the test or the components being tested depend on parameters, uORB messages and/or advanced GTest functionality.
Additionally, functional tests can contain local usage of STL data structures (although be careful of platform differences between e.g. macOS and Linux).
@@ -170,3 +170,10 @@ For example:
- `make tests TESTFILTER=unit` only run GTest unit tests
- `make tests TESTFILTER=sitl` only run simulation tests
- `make tests TESTFILTER=Attitude` only run the `AttitudeControl` test
## Fuzz Testing
Fuzz tests are a generalised form of unit test that ensures code is robust against any input.
They are run as part of the unit tests, and also more extensively in their own testing mode.
For more information see [Fuzz Tests](../test_and_ci/fuzz_tests.md).
+3 -2
View File
@@ -179,8 +179,6 @@
- [Wiring Quickstart](assembly/quick_start_durandal.md)
- [Holybro Pix32 v5](flight_controller/holybro_pix32_v5.md)
- [Wiring Quickstart](assembly/quick_start_holybro_pix32_v5.md)
- [ModalAI Flight Core v1](flight_controller/modalai_fc_v1.md)
- [ModalAI VOXL Flight](flight_controller/modalai_voxl_flight.md)
- [ModalAI VOXL 2](flight_controller/modalai_voxl_2.md)
- [mRo Control Zero F7](flight_controller/mro_control_zero_f7.md)
- [Sky-Drones AIRLink](flight_controller/airlink.md)
@@ -205,6 +203,8 @@
- [Holybro Kakute F7](flight_controller/kakutef7.md)
- [Holybro Pixfalcon](flight_controller/pixfalcon.md)
- [Holybro pix32 (FMUv2)](flight_controller/holybro_pix32.md)
- [ModalAI Flight Core v1](flight_controller/modalai_fc_v1.md)
- [ModalAI VOXL Flight](flight_controller/modalai_voxl_flight.md)
- [mRo X2.1 (FMUv2)](flight_controller/mro_x2.1.md)
- [mRo AUAV-X2](flight_controller/auav_x2.md)
- [NXP RDDRONE-FMUK66 FMU](flight_controller/nxp_rddrone_fmuk66.md)
@@ -833,6 +833,7 @@
- [시험 MC_04 - 안전 장치 시험](test_cards/mc_04_failsafe_testing.md)
- [시험 MC_05 - 실내 비행 (수동 모드)](test_cards/mc_05_indoor_flight_manual_modes.md)
- [단위 테스트](test_and_ci/unit_tests.md)
- [Fuzz Tests](test_and_ci/fuzz_tests.md)
- [지속 통합](test_and_ci/continous_integration.md)
- [Integration Testing](test_and_ci/integration_testing.md)
- [MAVSDK 통합 테스트](test_and_ci/integration_testing_mavsdk.md)
@@ -389,7 +389,6 @@ It is further configured using the `EKF2_RNG_A_` parameters:
- [EKF2_RNG_A_VMAX](../advanced_config/parameter_reference.md#EKF2_RNG_A_VMAX): Maximum horizontal speed, above which range aid is disabled.
- [EKF2_RNG_A_HMAX](../advanced_config/parameter_reference.md#EKF2_RNG_A_HMAX): Maximum height, above which range aid is disabled.
- [EKF2_RNG_A_IGATE](../advanced_config/parameter_reference.md#EKF2_RNG_A_IGATE): Range aid consistency checks "gate" (a measure of the error before range aid is disabled).
#### Range height fusion
+1 -1
View File
@@ -246,7 +246,7 @@ Note that Pic2Map is limited to only 40 images.
### Reconstruction
We use [Pix4D](https://pix4d.com/) for 3D reconstruction.
We use [Pix4D](https://www.pix4d.com/) for 3D reconstruction.
![GeoTag](../../assets/camera/geotag.jpg)
@@ -20,7 +20,7 @@ This guide walks through the process of setting up the board and connecting to P
You will temporarily need the following hardware in order to log into your Jetson and get its IP address, after which you will be able to log in via SSH:
- External display.
If your display doesn't have a mini HDMI connector you will also need a [Mini HDMI to HDMI converter](https://a.co/d/6N815N9) if your external display has HDMI input
If your display doesn't have a mini HDMI connector you will also need a [Mini HDMI to HDMI converter](https://www.amazon.com/dp/B014I8UEGY/) if your external display has HDMI input
- Ethernet cable
- Mouse and keyboard (the baseboard has 4 USB ports exposed from Jetson, two of which are USB 3.0)
+2 -2
View File
@@ -36,7 +36,7 @@ The main hardware documentation is here: https://wiki.bitcraze.io/projects:crazy
## 구매처
- [Crazyflie 2.0](https://store.bitcraze.io/collections/kits/products/crazyflie-2-0).
- [Crazyradio PA 2.4 GHz USB dongle](https://store.bitcraze.io/collections/kits/products/crazyradio-pa): used for wireless communication between _QGroundControl_ and Crazyflie 2.0.
- [Crazyradio PA 2.4 GHz USB dongle](https://store.bitcraze.io/products/crazyradio-pa): used for wireless communication between _QGroundControl_ and Crazyflie 2.0.
- [Breakout deck](https://store.bitcraze.io/collections/decks/products/breakout-deck): breakout expansion board for connecting new peripherals.
- [Flow deck](https://store.bitcraze.io/collections/decks/products/flow-deck): contains an optical flow sensor to measure movements of the ground and a distance sensor to measure the distance to the ground.
This will be useful for precise altitude and position control.
@@ -203,7 +203,7 @@ python cfbridge.py
:::info
_Cfbridge_ by default tries to initiate the radio link communication on channel 80 and with crazyflie address 0xE7E7E7E7E7.
If you are using [multiple crazyflies and/or crazyradios](https://github.com/dennisss/cfbridge/blob/master/index.md#advanced-swarming) in the same room and want to use a different channel and/or address for each, first connect the crazyflie with QGroundControl via a USB cable and change the syslink parameters (channel, address) in QGroundControl.
If you are using [multiple crazyflies and/or crazyradios](https://github.com/dennisss/cfbridge/blob/master/README.md#advanced-swarming) in the same room and want to use a different channel and/or address for each, first connect the crazyflie with QGroundControl via a USB cable and change the syslink parameters (channel, address) in QGroundControl.
Next, launch the cfbridge by giving the same channel and address as the first and second arguments respectively, e.g: `python cfbridge.py 90 0x0202020202`
:::

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