mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-09 04:00:05 +08:00
Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f2f71d99b | |||
| 8edc071e8c | |||
| 2ce745568f | |||
| 2d0eedc71d | |||
| e5b2584da7 | |||
| b23a7fc314 | |||
| 78a2a3d0dd | |||
| 8e0f223b3a | |||
| 06d25b9400 | |||
| bfbc76189e | |||
| 80febaf0f0 | |||
| f0ecd9e757 | |||
| 168d99cd18 | |||
| b8dacf5ae4 | |||
| 54f2652329 | |||
| f9b811b0c5 | |||
| a755dfa07f | |||
| b4bfbbb5e0 | |||
| 35a3f519f2 | |||
| a3f1fb2e01 | |||
| f224d27e4d | |||
| 7d33df4650 | |||
| 3c0a0ed129 | |||
| 7f5119f402 | |||
| 4896099232 | |||
| fcbe017221 | |||
| b326714d7c | |||
| 782e510105 | |||
| e9e5c45bf3 | |||
| b1af09d391 | |||
| bdf1895145 | |||
| 84cdc05195 | |||
| a5920edbb1 | |||
| a01f39707e | |||
| ce4dfaf39a | |||
| 09ebd21e55 | |||
| 6a1cefd7a6 | |||
| 572a06b2f3 | |||
| 3cfaaf73b4 | |||
| 8721269c78 | |||
| d5942bd631 | |||
| c801fd36d3 | |||
| 9ba2ac4e10 | |||
| 7594a270f7 | |||
| e50f1774ae | |||
| d31f227f15 | |||
| 9472b4b1f7 | |||
| 6ce1634dea | |||
| 8370ae1701 | |||
| fd2ded08e4 | |||
| d9743cc0ef | |||
| 3d1cace7b7 |
@@ -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/
|
||||
@@ -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 +0,0 @@
|
||||
language: c++
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
#
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Executable
+19
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
)
|
||||
@@ -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}")
|
||||
@@ -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})
|
||||
@@ -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
@@ -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
|
||||

|
||||
|
||||
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).
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -110,9 +110,7 @@ The other radio is connected to your ground station computer or mobile device (u
|
||||
|
||||

|
||||
|
||||
<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).
|
||||
|
||||
|
||||
@@ -110,9 +110,7 @@ The other radio is connected to your ground station computer or mobile device (u
|
||||
|
||||

|
||||
|
||||
<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).
|
||||
|
||||
|
||||
@@ -147,9 +147,7 @@ The vehicle-based radio should be connected to the **TELEM1** port as shown belo
|
||||
|
||||

|
||||
|
||||
<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)
|
||||
|
||||
@@ -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**.
|
||||
|
||||
|
||||
@@ -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**.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||

|
||||
|
||||
## 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"/>
|
||||
@@ -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:
|
||||
|
||||

|
||||
@@ -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_.
|
||||
|
||||
|
||||
@@ -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/).
|
||||
|
||||

|
||||
|
||||
@@ -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)).
|
||||
:::
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
:::
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
:::
|
||||
|
||||
@@ -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).
|
||||
|
||||

|
||||
|
||||
@@ -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).
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||

|
||||
|
||||
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)
|
||||
:::
|
||||
|
||||
<!--
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>®</sup>](https://holybro.c
|
||||
|
||||
## Availability:
|
||||
|
||||
From distributor [Hobbyking<sup>®</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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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>®</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>®</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.
|
||||
|
||||

|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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.
|
||||
|
||||

|
||||
@@ -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 engine’s 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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||

|
||||

|
||||
|
||||
### 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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user