최예리

Squashed 'code/modify/' content from commit e52c0ceca5

git-subtree-dir: code/modify
git-subtree-split: e52c0ceca5e63d98481ea7a4ed0fe2b2d3600f10
Showing 1000 changed files with 4219 additions and 0 deletions

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

1 +--ignore-dir=Documentation
1 +#!/usr/bin/env groovy
2 +
3 +pipeline {
4 + agent none
5 + stages {
6 +
7 + stage('Build') {
8 + steps {
9 + script {
10 + def build_nodes = [:]
11 + def docker_images = [
12 + armhf: "px4io/px4-dev-armhf:2021-04-29",
13 + arm64: "px4io/px4-dev-aarch64:2021-04-29",
14 + base: "px4io/px4-dev-base-bionic:2021-04-29",
15 + nuttx: "px4io/px4-dev-nuttx-focal:2021-04-29",
16 + snapdragon: "lorenzmeier/px4-dev-snapdragon:2020-04-01"
17 + ]
18 +
19 + def armhf_builds = [
20 + target: ["beaglebone_blue_default", "emlid_navio2_default", "px4_raspberrypi_default", "scumaker_pilotpi_default"],
21 + image: docker_images.armhf,
22 + archive: false
23 + ]
24 +
25 + def arm64_builds = [
26 + target: ["scumaker_pilotpi_arm64"],
27 + image: docker_images.arm64,
28 + archive: false
29 + ]
30 +
31 + def base_builds = [
32 + target: ["px4_sitl_rtps"],
33 + image: docker_images.base,
34 + archive: false
35 + ]
36 +
37 + def nuttx_builds_archive = [
38 + target: [
39 + "airmind_mindpx-v2_default",
40 + "ark_can-flow_canbootloader",
41 + "ark_can-flow_default",
42 + "av_x-v1_default",
43 + "bitcraze_crazyflie_default",
44 + "bitcraze_crazyflie21_default",
45 + "cuav_can-gps-v1_canbootloader",
46 + "cuav_can-gps-v1_default",
47 + "cuav_nora_default",
48 + "cuav_x7pro_default",
49 + "cubepilot_cubeorange_default",
50 + "cubepilot_cubeyellow_default",
51 + "freefly_can-rtk-gps_canbootloader",
52 + "freefly_can-rtk-gps_default",
53 + "holybro_can-gps-v1_canbootloader",
54 + "holybro_can-gps-v1_default",
55 + "holybro_durandal-v1_default",
56 + "holybro_kakutef7_default",
57 + "holybro_pix32v5_default",
58 + "modalai_fc-v1_default",
59 + "modalai_fc-v1_rtps",
60 + "modalai_fc-v2_default",
61 + "mro_ctrl-zero-f7_default",
62 + "mro_ctrl-zero-f7-oem_default",
63 + "mro_ctrl-zero-h7_default",
64 + "mro_ctrl-zero-h7-oem_default",
65 + "mro_pixracerpro_default",
66 + "mro_x21-777_default",
67 + "mro_x21_default",
68 + "nxp_fmuk66-e_default",
69 + "nxp_fmuk66-e_rtps",
70 + "nxp_fmuk66-e_socketcan",
71 + "nxp_fmuk66-v3_default",
72 + "nxp_fmuk66-v3_rtps",
73 + "nxp_fmuk66-v3_socketcan",
74 + "nxp_fmurt1062-v1_default",
75 + "nxp_ucans32k146_default",
76 + "nxp_ucans32k146_canbootloader",
77 + "omnibus_f4sd_default",
78 + "px4_fmu-v2_default",
79 + "px4_fmu-v2_fixedwing",
80 + "px4_fmu-v2_multicopter",
81 + "px4_fmu-v2_rover",
82 + "px4_fmu-v3_default",
83 + "px4_fmu-v4_cannode",
84 + "px4_fmu-v4_default",
85 + "px4_fmu-v4pro_default",
86 + "px4_fmu-v5_ctrlalloc",
87 + "px4_fmu-v5_debug",
88 + "px4_fmu-v5_default",
89 + "px4_fmu-v5_fixedwing",
90 + "px4_fmu-v5_multicopter",
91 + "px4_fmu-v5_optimized",
92 + "px4_fmu-v5_rover",
93 + "px4_fmu-v5_rtps",
94 + "px4_fmu-v5_stackcheck",
95 + "px4_fmu-v5_uavcanv0periph",
96 + "px4_fmu-v5_uavcanv1",
97 + "px4_fmu-v5x_base_phy_DP83848C",
98 + "px4_fmu-v5x_default",
99 + "px4_fmu-v6u_default",
100 + "px4_fmu-v6x_default",
101 + "px4_io-v2_default",
102 + "spracing_h7extreme_default",
103 + "uvify_core_default"
104 + ],
105 + image: docker_images.nuttx,
106 + archive: true
107 + ]
108 +
109 + def snapdragon_builds = [
110 + target: ["atlflight_eagle_qurt", "atlflight_eagle_default"],
111 + image: docker_images.snapdragon,
112 + archive: false
113 + ]
114 +
115 + def docker_builds = [
116 + armhf_builds, base_builds, nuttx_builds_archive//, snapdragon_builds
117 + ]
118 +
119 + for (def build_type = 0; build_type < docker_builds.size(); build_type++) {
120 + for (def build_target = 0; build_target < docker_builds[build_type].target.size(); build_target++) {
121 + build_nodes.put(docker_builds[build_type].target[build_target],
122 + createBuildNode(docker_builds[build_type].archive, docker_builds[build_type].image, docker_builds[build_type].target[build_target])
123 + )
124 + }
125 + }
126 +
127 + parallel build_nodes
128 +
129 + } // script
130 + } // steps
131 + } // stage Build
132 +
133 + // TODO: actually upload artifacts to S3
134 + // stage('S3 Upload') {
135 + // agent {
136 + // docker { image 'px4io/px4-dev-base-focal:2021-04-29' }
137 + // }
138 + // options {
139 + // skipDefaultCheckout()
140 + // }
141 + // when {
142 + // anyOf {
143 + // branch 'master'
144 + // branch 'beta'
145 + // branch 'stable'
146 + // branch 'pr-jenkins' // for testing
147 + // }
148 + // }
149 + // steps {
150 + // sh 'echo "uploading to S3"'
151 + // }
152 + // }
153 +
154 + } // stages
155 + environment {
156 + CCACHE_DIR = '/tmp/ccache'
157 + CI = true
158 + }
159 + options {
160 + buildDiscarder(logRotator(numToKeepStr: '5', artifactDaysToKeepStr: '14'))
161 + timeout(time: 90, unit: 'MINUTES')
162 + }
163 +}
164 +
165 +def createBuildNode(Boolean archive, String docker_image, String target) {
166 + return {
167 +
168 + // TODO: fix the snapdragon image
169 + bypass_entrypoint = ''
170 + if (docker_image == 'lorenzmeier/px4-dev-snapdragon:2020-04-01') {
171 + bypass_entrypoint = ' --entrypoint=""'
172 + }
173 +
174 + node {
175 + docker.withRegistry('https://registry.hub.docker.com', 'docker_hub_dagar') {
176 + docker.image(docker_image).inside('-e CCACHE_BASEDIR=${WORKSPACE} -v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + bypass_entrypoint) {
177 + stage(target) {
178 + try {
179 + sh('export')
180 + checkout(scm)
181 + sh('make distclean')
182 + sh('git fetch --tags')
183 + sh('ccache -s')
184 + sh('make ' + target)
185 + sh('ccache -s')
186 + sh('make sizes')
187 + if (archive) {
188 + archiveArtifacts(allowEmptyArchive: false, artifacts: 'build/*/*.px4, build/*/*.elf, build/*/*.bin', fingerprint: true, onlyIfSuccessful: true)
189 + }
190 + sh('make ' + target + ' package')
191 + archiveArtifacts(allowEmptyArchive: true, artifacts: 'build/*/*.tar.bz2', fingerprint: true, onlyIfSuccessful: true)
192 + archiveArtifacts(allowEmptyArchive: true, artifacts: 'build/*/*.deb', fingerprint: true, onlyIfSuccessful: true)
193 + }
194 + catch (exc) {
195 + throw (exc)
196 + }
197 + finally {
198 + sh('make distclean')
199 + }
200 + }
201 + }
202 + }
203 + }
204 + }
205 +}
This diff is collapsed. Click to expand it.
1 +---
2 +Checks: '*,
3 + -android*,
4 + -bugprone-integer-division,
5 + -cert-dcl50-cpp,
6 + -cert-env33-c,
7 + -cert-err34-c,
8 + -cert-err58-cpp,
9 + -cert-msc30-c,
10 + -cert-msc50-cpp,
11 + -clang-analyzer-core.CallAndMessage,
12 + -clang-analyzer-core.NullDereference,
13 + -clang-analyzer-core.UndefinedBinaryOperatorResult,
14 + -clang-analyzer-core.uninitialized.Assign,
15 + -clang-analyzer-core.VLASize,
16 + -clang-analyzer-cplusplus.NewDelete,
17 + -clang-analyzer-cplusplus.NewDeleteLeaks,
18 + -clang-analyzer-deadcode.DeadStores,
19 + -clang-analyzer-optin.cplusplus.VirtualCall,
20 + -clang-analyzer-optin.performance.Padding,
21 + -clang-analyzer-security.insecureAPI.strcpy,
22 + -clang-analyzer-unix.API,
23 + -clang-analyzer-unix.cstring.BadSizeArg,
24 + -clang-analyzer-unix.Malloc,
25 + -clang-analyzer-unix.MallocSizeof,
26 + -cppcoreguidelines-c-copy-assignment-signature,
27 + -cppcoreguidelines-interfaces-global-init,
28 + -cppcoreguidelines-no-malloc,
29 + -cppcoreguidelines-owning-memory,
30 + -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
31 + -cppcoreguidelines-pro-bounds-constant-array-index,
32 + -cppcoreguidelines-pro-bounds-pointer-arithmetic,
33 + -cppcoreguidelines-pro-type-const-cast,
34 + -cppcoreguidelines-pro-type-cstyle-cast,
35 + -cppcoreguidelines-pro-type-member-init,
36 + -cppcoreguidelines-pro-type-reinterpret-cast,
37 + -cppcoreguidelines-pro-type-union-access,
38 + -cppcoreguidelines-pro-type-vararg,
39 + -cppcoreguidelines-special-member-functions,
40 + -fuchsia-default-arguments,
41 + -fuchsia-overloaded-operator,
42 + -google-build-using-namespace,
43 + -google-explicit-constructor,
44 + -google-global-names-in-headers,
45 + -google-readability-casting,
46 + -google-readability-function-size,
47 + -google-readability-namespace-comments,
48 + -google-readability-todo,
49 + -google-runtime-int,
50 + -google-runtime-references,
51 + -hicpp-deprecated-headers,
52 + -hicpp-explicit-conversions,
53 + -hicpp-function-size,
54 + -hicpp-member-init,
55 + -hicpp-no-array-decay,
56 + -hicpp-no-assembler,
57 + -hicpp-no-malloc,
58 + -hicpp-signed-bitwise,
59 + -hicpp-special-member-functions,
60 + -hicpp-use-auto,
61 + -hicpp-use-equals-default,
62 + -hicpp-use-equals-delete,
63 + -hicpp-use-override,
64 + -hicpp-vararg,
65 + -llvm-header-guard,
66 + -llvm-include-order,
67 + -llvm-namespace-comment,
68 + -misc-incorrect-roundings,
69 + -misc-macro-parentheses,
70 + -misc-misplaced-widening-cast,
71 + -misc-redundant-expression,
72 + -misc-unconventional-assign-operator,
73 + -misc-unused-parameters,
74 + -modernize-deprecated-headers,
75 + -modernize-loop-convert,
76 + -modernize-pass-by-value,
77 + -modernize-return-braced-init-list,
78 + -modernize-use-auto,
79 + -modernize-use-bool-literals,
80 + -modernize-use-default-member-init,
81 + -modernize-use-equals-default,
82 + -modernize-use-equals-delete,
83 + -modernize-use-override,
84 + -modernize-use-using,
85 + -performance-inefficient-string-concatenation,
86 + -readability-avoid-const-params-in-decls,
87 + -readability-container-size-empty,
88 + -readability-else-after-return,
89 + -readability-function-size,
90 + -readability-implicit-bool-cast,
91 + -readability-implicit-bool-conversion,
92 + -readability-inconsistent-declaration-parameter-name,
93 + -readability-named-parameter,
94 + -readability-non-const-parameter,
95 + -readability-redundant-declaration,
96 + -readability-static-accessed-through-instance,
97 + -readability-static-definition-in-anonymous-namespace,
98 + '
99 +WarningsAsErrors: '*'
100 +CheckOptions:
101 + - key: google-readability-function-size.BranchThreshold
102 + value: '600'
103 + - key: google-readability-function-size.LineThreshold
104 + value: '4000'
105 + - key: google-readability-function-size.StatementThreshold
106 + value: '4000'
107 +...
1 +// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
2 +// https://github.com/microsoft/vscode-dev-containers/tree/v0.134.0/containers/cpp
3 +{
4 + "name": "px4-dev-nuttx",
5 + "image": "px4io/px4-dev-nuttx-focal:2021-04-29",
6 +
7 + "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
8 +
9 + // Set *default* container specific settings.json values on container create.
10 + "settings": {
11 + "terminal.integrated.shell.linux": "/bin/bash"
12 + },
13 +
14 + // Add the IDs of extensions you want installed when the container is created.
15 + "extensions": [
16 + "chiehyu.vscode-astyle",
17 + "dan-c-underwood.arm",
18 + "fredericbonnet.cmake-test-adapter",
19 + "github.vscode-pull-request-github",
20 + "marus25.cortex-debug",
21 + "ms-azuretools.vscode-docker",
22 + "ms-iot.vscode-ros",
23 + "ms-python.python",
24 + "ms-vscode.cmake-tools",
25 + "ms-vscode.cpptools",
26 + "ms-vscode.cpptools-extension-pack",
27 + "redhat.vscode-yaml",
28 + "streetsidesoftware.code-spell-checker",
29 + "twxs.cmake",
30 + "uavcan.dsdl",
31 + "wholroyd.jinja",
32 + "zixuanwang.linkerscript"
33 + ],
34 +
35 + "containerUser": "user",
36 + "containerEnv": {
37 + "LOCAL_USER_ID": "${localEnv:UID}"
38 + },
39 +
40 + // Use 'forwardPorts' to make a list of ports inside the container available locally.
41 + "forwardPorts": [14556],
42 +}
1 +* text=auto eol=lf
2 +
3 +*.cmake text eol=lf
4 +*.c text eol=lf
5 +*.cc text eol=lf
6 +*.cpp text eol=lf
7 +*.h text eol=lf
8 +*.hh text eol=lf
9 +*.hpp text eol=lf
10 +*.hxx text eol=lf
11 +*.S text eol=lf
12 +
13 +*.ipynb text eol=lf
14 +*.m text eol=lf
15 +*.mat binary
16 +*.py text eol=lf
17 +
18 +*.java text eol=lf
19 +*.jar binary
20 +*.xml text eol=lf
21 +
22 +# PX4 mixers, msgs, etc
23 +*.bin binary
24 +*.mix text eol=lf
25 +*.msg text eol=lf
26 +*.config text eol=lf
27 +*.sdf text eol=lf
28 +*.uavcan text eol=lf
29 +
30 +# NuttX
31 +Makefile.* text eol=lf
32 +*.defs text eol=lf
33 +*.ld text eol=lf
34 +
35 +*.csv text eol=lf
36 +*.md text eol=lf
37 +*.txt text eol=lf
38 +
39 +# Scripts
40 +*.bash text eol=lf
41 +*.sh text eol=lf
42 +*.zsh text eol=lf
43 +# These are explicitly windows files and should use crlf
44 +*.ps1 text eol=crlf
45 +*.{cmd,[cC][mM][dD]} text eol=crlf
46 +*.{bat,[bB][aA][tT]} text eol=crlf
47 +
48 +# Serialisation
49 +*.json text eol=lf
50 +*.toml text eol=lf
51 +*.xml text eol=lf
52 +*.yaml text eol=lf
53 +*.yml text eol=lf
54 +
55 +# Graphics
56 +*.png binary
57 +*.jpg binary
58 +*.jpeg binary
59 +*.gif binary
60 +*.tif binary
61 +*.tiff binary
62 +*.ico binary
63 +*.pdf binary
64 +# SVG treated as an asset (binary) by default.
65 +*.svg text eol=lf
66 +
67 +# Text files where line endings should be preserved
68 +*.patch -text
69 +
70 +# Archives
71 +*.7z binary
72 +*.gz binary
73 +*.tar binary
74 +*.tgz binary
75 +*.zip binary
76 +
77 +# everything else
78 +.gitattributes text eol=lf
79 +.gitignore text eol=lf
80 +Makefile text eol=lf
1 +---
2 +name: Bug report
3 +about: Create a report to help us improve
4 +
5 +---
6 +
7 +**Describe the bug**
8 +A clear and concise description of the bug.
9 +
10 +**To Reproduce**
11 +Steps to reproduce the behavior:
12 +1. Drone switched on '...'
13 +2. Uploaded mission '....' (attach QGC mission file)
14 +3. Took off '....'
15 +4. See error
16 +
17 +**Expected behavior**
18 +A clear and concise description of what you expected to happen.
19 +
20 +**Log Files and Screenshots**
21 +*Always* provide a link to the flight log file:
22 +- Download the flight log file from the vehicle ([tutorial](https://docs.px4.io/master/en/getting_started/flight_reporting.html)).
23 +- Share the link to a log showing the problem on [PX4 Flight Review](http://logs.px4.io/).
24 +
25 +Add screenshots to help explain your problem.
26 +
27 +**Drone (please complete the following information):**
28 +- Describe the type of drone.
29 +- Photo of the IMU / autopilot setup if possible.
30 +
31 +**Additional context**
32 +Add any other context about the problem here.
1 +---
2 +name: 🚀 Feature Request
3 +about: Suggest an idea for this project
4 +
5 +---
6 +
7 +For general questions please use [PX4 Discuss](http://discuss.px4.io/) or [Slack](http://slack.px4.io/).
8 +
9 +**Describe problem solved by the proposed feature**
10 +A clear and concise description of the problem, if any, this feature will solve. E.g. I'm always frustrated when ...
11 +
12 +**Describe your preferred solution**
13 +A clear and concise description of what you want to happen.
14 +
15 +**Describe possible alternatives**
16 +A clear and concise description of alternative solutions or features you've considered.
17 +
18 +**Additional context**
19 +Add any other context or screenshots for the feature request here.
1 +---
2 +name: ⛔ Support Question
3 +about: See [PX4 Discuss](http://discuss.px4.io/) for questions about using PX4.
4 +
5 +---
6 +
7 +We use GitHub issues only to discuss PX4 bugs and new features. For
8 +questions about using PX4 or related components, please use [PX4 Discuss](http://discuss.px4.io/).
9 +
10 +Thanks!
1 +---
2 +name: ⛔ Documentation Issue
3 +about: See https://github.com/PX4/Devguide for documentation issues
4 +
5 +---
6 +
7 +PX4 has dedicated repositories for developer documentation (https://github.com/PX4/Devguide) and user documentation (https://github.com/PX4/px4_user_guide).
8 +
9 +Thanks!
1 +# Number of days of inactivity before an issue becomes stale
2 +daysUntilStale: 90
3 +# Number of days of inactivity before a stale issue is closed, or `false` to disable
4 +daysUntilClose: false
5 +# Issues with these labels will never be considered stale
6 +exemptLabels:
7 + - pinned
8 +# Label to use when marking an issue as stale
9 +staleLabel: stale
10 +# Comment to post when marking an issue as stale. Set to `false` to disable
11 +markComment: >
12 + This issue has been automatically marked as stale because it has not had
13 + recent activity. Thank you for your contributions.
14 +# Comment to post when closing a stale issue. Set to `false` to disable
15 +closeComment: false
1 +name: Checks
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + strategy:
15 + fail-fast: false
16 + matrix:
17 + check: [
18 + "check_format",
19 + "tests",
20 + "tests_coverage",
21 + "px4_fmu-v2_default stack_check",
22 + "validate_module_configs",
23 + "shellcheck_all",
24 + "NO_NINJA_BUILD=1 px4_fmu-v5_default",
25 + "NO_NINJA_BUILD=1 px4_sitl_default",
26 + "airframe_metadata",
27 + "module_documentation",
28 + "parameters_metadata",
29 + ]
30 + container:
31 + image: px4io/px4-dev-nuttx-focal:2021-04-29
32 + options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
33 + steps:
34 + - uses: actions/checkout@v1
35 + with:
36 + token: ${{ secrets.ACCESS_TOKEN }}
37 +
38 + - name: Prepare ccache timestamp
39 + id: ccache_cache_timestamp
40 + shell: cmake -P {0}
41 + run: |
42 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
43 + message("::set-output name=timestamp::${current_date}")
44 + - name: ccache cache files
45 + uses: actions/cache@v2
46 + with:
47 + path: ~/.ccache
48 + key: tests_${{matrix.ubuntu_release}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
49 + restore-keys: tests_${{matrix.ubuntu_release}}-ccache-
50 + - name: setup ccache
51 + run: |
52 + mkdir -p ~/.ccache
53 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
54 + echo "compression = true" >> ~/.ccache/ccache.conf
55 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
56 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
57 + ccache -s
58 + ccache -z
59 + - name: check environment
60 + run: |
61 + export
62 + ulimit -a
63 + - name: ${{matrix.check}}
64 + run: make ${{matrix.check}}
65 + - name: upload coverage
66 + if: contains(matrix.check, 'coverage')
67 + uses: codecov/codecov-action@v1
68 + with:
69 + token: ${{ secrets.CODECOV_TOKEN }}
70 + flags: unittests
71 + file: coverage/lcov.info
1 +name: Clang Tidy
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + container: px4io/px4-dev-clang:2021-04-29
15 + steps:
16 + - uses: actions/checkout@v1
17 + with:
18 + token: ${{secrets.ACCESS_TOKEN}}
19 +
20 + - name: Prepare ccache timestamp
21 + id: ccache_cache_timestamp
22 + shell: cmake -P {0}
23 + run: |
24 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
25 + message("::set-output name=timestamp::${current_date}")
26 + - name: ccache cache files
27 + uses: actions/cache@v2
28 + with:
29 + path: ~/.ccache
30 + key: clang-tidy-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
31 + restore-keys: clang-tidy-ccache-
32 + - name: setup ccache
33 + run: |
34 + mkdir -p ~/.ccache
35 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
36 + echo "compression = true" >> ~/.ccache/ccache.conf
37 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
38 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
39 + ccache -s
40 + ccache -z
41 +
42 + - name: make clang-tidy-quiet
43 + run: |
44 + ccache -z
45 + make clang-tidy-quiet
46 + ccache -s
1 +name: Linux Targets
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + container: px4io/px4-dev-armhf:2021-04-29
15 + strategy:
16 + matrix:
17 + config: [
18 + beaglebone_blue_default,
19 + emlid_navio2_default,
20 + px4_raspberrypi_default,
21 + scumaker_pilotpi_default,
22 + ]
23 + steps:
24 + - uses: actions/checkout@v1
25 + with:
26 + token: ${{secrets.ACCESS_TOKEN}}
27 +
28 + - name: Prepare ccache timestamp
29 + id: ccache_cache_timestamp
30 + shell: cmake -P {0}
31 + run: |
32 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
33 + message("::set-output name=timestamp::${current_date}")
34 + - name: ccache cache files
35 + uses: actions/cache@v2
36 + with:
37 + path: ~/.ccache
38 + key: ${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
39 + restore-keys: ${{matrix.config}}-ccache-
40 + - name: setup ccache
41 + run: |
42 + mkdir -p ~/.ccache
43 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
44 + echo "compression = true" >> ~/.ccache/ccache.conf
45 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
46 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
47 + ccache -s
48 + ccache -z
49 +
50 + - name: make ${{matrix.config}}
51 + run: make ${{matrix.config}}
52 + - name: ccache post-run
53 + run: ccache -s
1 +name: Linux ARM64 Targets
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + container: px4io/px4-dev-aarch64:2021-04-29
15 + strategy:
16 + matrix:
17 + config: [
18 + scumaker_pilotpi_arm64,
19 + ]
20 + steps:
21 + - uses: actions/checkout@v1
22 + with:
23 + token: ${{secrets.ACCESS_TOKEN}}
24 +
25 + - name: Prepare ccache timestamp
26 + id: ccache_cache_timestamp
27 + shell: cmake -P {0}
28 + run: |
29 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
30 + message("::set-output name=timestamp::${current_date}")
31 + - name: ccache cache files
32 + uses: actions/cache@v2
33 + with:
34 + path: ~/.ccache
35 + key: ${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
36 + restore-keys: ${{matrix.config}}-ccache-
37 + - name: setup ccache
38 + run: |
39 + mkdir -p ~/.ccache
40 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
41 + echo "compression = true" >> ~/.ccache/ccache.conf
42 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
43 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
44 + ccache -s
45 + ccache -z
46 +
47 + - name: make ${{matrix.config}}
48 + run: make ${{matrix.config}}
49 + - name: ccache post-run
50 + run: ccache -s
1 +name: MacOS build
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: macos-10.15
14 + strategy:
15 + matrix:
16 + config: [
17 + px4_fmu-v5_default,
18 + px4_sitl
19 + #tests, # includes px4_sitl
20 + ]
21 + steps:
22 + - uses: actions/checkout@v1
23 + with:
24 + token: ${{secrets.ACCESS_TOKEN}}
25 +
26 + - name: setup
27 + run: ./Tools/setup/macos.sh; ./Tools/setup/macos.sh
28 +
29 + - name: Prepare ccache timestamp
30 + id: ccache_cache_timestamp
31 + shell: cmake -P {0}
32 + run: |
33 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
34 + message("::set-output name=timestamp::${current_date}")
35 + - name: ccache cache files
36 + uses: actions/cache@v2
37 + with:
38 + path: ~/.ccache
39 + key: macos_${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
40 + restore-keys: macos_${{matrix.config}}-ccache-
41 + - name: setup ccache
42 + run: |
43 + mkdir -p ~/.ccache
44 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
45 + echo "compression = true" >> ~/.ccache/ccache.conf
46 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
47 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
48 + ccache -s
49 + ccache -z
50 +
51 + - name: make ${{matrix.config}}
52 + run: |
53 + ccache -z
54 + make ${{matrix.config}}
55 + ccache -s
1 +name: Nuttx Targets
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + container: px4io/px4-dev-nuttx-focal:2021-04-29
15 + strategy:
16 + matrix:
17 + config: [
18 + airmind_mindpx-v2_default,
19 + ark_can-flow_canbootloader,
20 + ark_can-flow_debug,
21 + ark_can-flow_default,
22 + ark_can-gps_canbootloader,
23 + ark_can-gps_debug,
24 + ark_can-gps_default,
25 + av_x-v1_default,
26 + bitcraze_crazyflie21_default,
27 + bitcraze_crazyflie_default,
28 + cuav_can-gps-v1_canbootloader,
29 + cuav_can-gps-v1_debug,
30 + cuav_can-gps-v1_default,
31 + cuav_nora_default,
32 + cuav_x7pro_default,
33 + cubepilot_cubeorange_default,
34 + cubepilot_cubeorange_test,
35 + cubepilot_cubeyellow_default,
36 + cubepilot_cubeyellow_test,
37 + cubepilot_io-v2_default,
38 + freefly_can-rtk-gps_canbootloader,
39 + freefly_can-rtk-gps_default,
40 + holybro_can-gps-v1_canbootloader,
41 + holybro_can-gps-v1_debug,
42 + holybro_can-gps-v1_default,
43 + holybro_durandal-v1_default,
44 + holybro_kakutef7_default,
45 + holybro_pix32v5_default,
46 + modalai_fc-v1_default,
47 + modalai_fc-v1_rtps,
48 + modalai_fc-v2_default,
49 + mro_ctrl-zero-f7-oem_default,
50 + mro_ctrl-zero-f7_default,
51 + mro_ctrl-zero-h7-oem_default,
52 + mro_ctrl-zero-h7_default,
53 + mro_pixracerpro_default,
54 + mro_x21-777_default,
55 + mro_x21_default,
56 + nxp_fmuk66-e_default,
57 + nxp_fmuk66-e_rtps,
58 + nxp_fmuk66-e_socketcan,
59 + nxp_fmuk66-v3_default,
60 + nxp_fmuk66-v3_rtps,
61 + nxp_fmuk66-v3_socketcan,
62 + nxp_fmurt1062-v1_default,
63 + nxp_ucans32k146_canbootloader,
64 + nxp_ucans32k146_default,
65 + omnibus_f4sd_default,
66 + px4_fmu-v2_default,
67 + px4_fmu-v2_fixedwing,
68 + px4_fmu-v2_multicopter,
69 + px4_fmu-v2_rover,
70 + px4_fmu-v3_default,
71 + px4_fmu-v4_cannode,
72 + px4_fmu-v4_default,
73 + px4_fmu-v4pro_default,
74 + px4_fmu-v5_ctrlalloc,
75 + px4_fmu-v5_debug,
76 + px4_fmu-v5_default,
77 + px4_fmu-v5_fixedwing,
78 + px4_fmu-v5_multicopter,
79 + px4_fmu-v5_optimized,
80 + px4_fmu-v5_rover,
81 + px4_fmu-v5_rtps,
82 + px4_fmu-v5_stackcheck,
83 + px4_fmu-v5_uavcanv0periph,
84 + px4_fmu-v5_uavcanv1,
85 + px4_fmu-v5x_base_phy_DP83848C,
86 + px4_fmu-v5x_default,
87 + px4_fmu-v6u_default,
88 + px4_fmu-v6x_default,
89 + px4_io-v2_default,
90 + spracing_h7extreme_default,
91 + uvify_core_default
92 + ]
93 + steps:
94 + - uses: actions/checkout@v1
95 + with:
96 + token: ${{secrets.ACCESS_TOKEN}}
97 +
98 + - name: Prepare ccache timestamp
99 + id: ccache_cache_timestamp
100 + shell: cmake -P {0}
101 + run: |
102 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
103 + message("::set-output name=timestamp::${current_date}")
104 + - name: ccache cache files
105 + uses: actions/cache@v2
106 + with:
107 + path: ~/.ccache
108 + key: ${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
109 + restore-keys: ${{matrix.config}}-ccache-
110 + - name: setup ccache
111 + run: |
112 + mkdir -p ~/.ccache
113 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
114 + echo "compression = true" >> ~/.ccache/ccache.conf
115 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
116 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
117 + ccache -s
118 + ccache -z
119 +
120 + - name: make ${{matrix.config}}
121 + run: make ${{matrix.config}}
122 + - name: make ${{matrix.config}} bloaty_compileunits
123 + run: make ${{matrix.config}} bloaty_compileunits || true
124 + - name: make ${{matrix.config}} bloaty_inlines
125 + run: make ${{matrix.config}} bloaty_inlines || true
126 + - name: make ${{matrix.config}} bloaty_segments
127 + run: make ${{matrix.config}} bloaty_segments || true
128 + - name: make ${{matrix.config}} bloaty_symbols
129 + run: make ${{matrix.config}} bloaty_symbols || true
130 + - name: make ${{matrix.config}} bloaty_templates
131 + run: make ${{matrix.config}} bloaty_templates || true
132 + - name: make ${{matrix.config}} bloaty_ram
133 + run: make ${{matrix.config}} bloaty_ram || true
134 + - name: make ${{matrix.config}} bloaty_compare_master
135 + run: make ${{matrix.config}} bloaty_compare_master || true
136 + - name: ccache post-run
137 + run: ccache -s
138 +
139 + - name: Upload px4 package
140 + uses: actions/upload-artifact@v1
141 + with:
142 + name: px4_package_${{matrix.config}}
143 + path: build/${{matrix.config}}/${{matrix.config}}.px4
1 +name: NuttX UAVCAN firmware
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + container: px4io/px4-dev-nuttx-focal:2021-04-29
15 + strategy:
16 + matrix:
17 + config: [
18 + ark_can-flow_default,
19 + cuav_can-gps-v1_default,
20 + freefly_can-rtk-gps_default,
21 + holybro_can-gps-v1_default,
22 + #nxp_ucans32k146_default,
23 + px4_fmu-v4_cannode
24 + ]
25 + steps:
26 + - uses: actions/checkout@v1
27 + with:
28 + token: ${{secrets.ACCESS_TOKEN}}
29 +
30 + - name: Prepare ccache timestamp
31 + id: ccache_cache_timestamp
32 + shell: cmake -P {0}
33 + run: |
34 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
35 + message("::set-output name=timestamp::${current_date}")
36 + - name: ccache cache files
37 + uses: actions/cache@v2
38 + with:
39 + path: ~/.ccache
40 + key: ${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
41 + restore-keys: ${{matrix.config}}-ccache-
42 + - name: setup ccache
43 + run: |
44 + mkdir -p ~/.ccache
45 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
46 + echo "compression = true" >> ~/.ccache/ccache.conf
47 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
48 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
49 + ccache -s
50 + ccache -z
51 +
52 + - name: make ${{matrix.config}}
53 + run: make ${{matrix.config}}
54 +
55 + - name: ccache post-run
56 + run: ccache -s
57 +
58 + - name: Upload px4 package
59 + uses: actions/upload-artifact@v2
60 + with:
61 + name: px4_cannode_${{matrix.config}}
62 + path: build/${{matrix.config}}/*.uavcan.bin
1 +name: Deploy metadata for all targets
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + - 'release/*'
8 + - 'pr-metadata-test'
9 +
10 +jobs:
11 + enumerate_targets:
12 + runs-on: ubuntu-latest
13 + outputs:
14 + matrix: ${{ steps.set-matrix.outputs.matrix }}
15 + steps:
16 + - uses: actions/checkout@v1
17 + with:
18 + token: ${{secrets.ACCESS_TOKEN}}
19 + - id: set-matrix
20 + run: echo "::set-output name=matrix::$(./Tools/generate_board_targets_json.py)"
21 + build:
22 + runs-on: ubuntu-latest
23 + needs: enumerate_targets
24 + strategy:
25 + matrix: ${{fromJson(needs.enumerate_targets.outputs.matrix)}}
26 + container: px4io/px4-dev-${{ matrix.container }}:2021-04-29
27 + steps:
28 + - uses: actions/checkout@v1
29 + with:
30 + token: ${{secrets.ACCESS_TOKEN}}
31 +
32 + - name: Prepare ccache timestamp
33 + id: ccache_cache_timestamp
34 + shell: cmake -P {0}
35 + run: |
36 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
37 + message("::set-output name=timestamp::${current_date}")
38 + - name: ccache cache files
39 + uses: actions/cache@v2
40 + with:
41 + path: ~/.ccache
42 + key: ${{matrix.target}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
43 + restore-keys: ${{matrix.target}}-ccache-
44 + - name: setup ccache
45 + run: |
46 + mkdir -p ~/.ccache
47 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
48 + echo "compression = true" >> ~/.ccache/ccache.conf
49 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
50 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
51 + ccache -s
52 + ccache -z
53 +
54 + - name: make ${{matrix.target}}
55 + run: make ${{matrix.target}}
56 + - name: ccache post-run
57 + run: ccache -s
58 +
59 + - name: parameter metadata
60 + run: |
61 + make ${{matrix.target}} ver_gen
62 + ./src/lib/version/get_git_tag_or_branch_version.sh build/${{ matrix.target }} >> $GITHUB_ENV
63 + cd build/${{ matrix.target }}
64 + mkdir _metadata || true
65 + cp parameters.* _metadata
66 +
67 + - uses: jakejarvis/s3-sync-action@master
68 + with:
69 + args: --acl public-read
70 + env:
71 + AWS_S3_BUCKET: 'px4-travis'
72 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
73 + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
74 + AWS_REGION: 'us-west-1'
75 + SOURCE_DIR: 'build/${{ matrix.target }}/_metadata/'
76 + DEST_DIR: 'Firmware/${{ env.version }}/${{ matrix.target }}/'
77 +
1 +name: MAVROS Mission Tests
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + strategy:
15 + fail-fast: false
16 + matrix:
17 + config:
18 + - {vehicle: "iris", mission: "MC_mission_box", build_type: "RelWithDebInfo"}
19 + - {vehicle: "rover", mission: "rover_mission_1", build_type: "RelWithDebInfo"}
20 + #- {vehicle: "plane", mission: "FW_mission_1", build_type: "RelWithDebInfo"}
21 + #- {vehicle: "plane_catapult",mission: "FW_mission_1", build_type: "RelWithDebInfo"}
22 + #- {vehicle: "standard_vtol", mission: "VTOL_mission_1", build_type: "Coverage"}
23 + #- {vehicle: "standard_vtol", mission: "VTOL_mission_1", build_type: "AddressSanitizer"}
24 + #- {vehicle: "tailsitter", mission: "VTOL_mission_1", build_type: "RelWithDebInfo"}
25 + #- {vehicle: "tiltrotor", mission: "VTOL_mission_1", build_type: "RelWithDebInfo"}
26 +
27 + container:
28 + image: px4io/px4-dev-ros-melodic:2021-04-29
29 + options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
30 + steps:
31 + - uses: actions/checkout@v1
32 + with:
33 + token: ${{ secrets.ACCESS_TOKEN }}
34 +
35 + - name: Prepare ccache timestamp
36 + id: ccache_cache_timestamp
37 + shell: cmake -P {0}
38 + run: |
39 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
40 + message("::set-output name=timestamp::${current_date}")
41 + - name: ccache cache files
42 + uses: actions/cache@v2
43 + with:
44 + path: ~/.ccache
45 + key: sitl_tests-${{matrix.config.build_type}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
46 + restore-keys: sitl_tests-${{matrix.config.build_type}}-ccache-
47 + - name: setup ccache
48 + run: |
49 + mkdir -p ~/.ccache
50 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
51 + echo "compression = true" >> ~/.ccache/ccache.conf
52 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
53 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
54 + ccache -s
55 + ccache -z
56 +
57 + - name: check environment
58 + run: |
59 + export
60 + ulimit -a
61 + - name: Build PX4 and sitl_gazebo
62 + env:
63 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
64 + run: |
65 + ccache -z
66 + make px4_sitl_default
67 + make px4_sitl_default sitl_gazebo
68 + ccache -s
69 +
70 + - name: Core dump settings
71 + run: |
72 + ulimit -c unlimited
73 + echo "`pwd`/%e.core" > /proc/sys/kernel/core_pattern
74 +
75 + - name: Run SITL tests
76 + env:
77 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
78 + run: |
79 + export
80 + ./test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=${{matrix.config.mission}} vehicle:=${{matrix.config.vehicle}}
81 +
82 + - name: Look at core files
83 + if: failure()
84 + run: gdb build/px4_sitl_default/bin/px4 px4.core -ex "thread apply all bt" -ex "quit"
85 + - name: Upload px4 coredump
86 + if: failure()
87 + uses: actions/upload-artifact@v2-preview
88 + with:
89 + name: coredump
90 + path: px4.core
91 +
92 + - name: ecl EKF analysis
93 + if: always()
94 + run: ./Tools/ecl_ekf/process_logdata_ekf.py ~/.ros/log/*/*.ulg || true
95 +
96 + - name: Upload logs to flight review
97 + if: always()
98 + run: ./Tools/upload_log.py -q --description "${GITHUB_WORKFLOW} ${GITHUB_RUN_ID}" --feedback "${GITHUB_WORKFLOW} ${GITHUB_RUN_ID} ${GITHUB_REPOSITORY} ${GITHUB_REF}" --source CI ~/.ros/log/*/*.ulg
99 +
100 + - name: Upload px4 binary
101 + if: failure()
102 + uses: actions/upload-artifact@v2
103 + with:
104 + name: binary
105 + path: build/px4_sitl_default/bin/px4
106 +
107 + - name: Store PX4 log
108 + if: failure()
109 + uses: actions/upload-artifact@v2
110 + with:
111 + name: px4_log
112 + path: ~/.ros/log/*/*.ulg
113 +
114 + - name: Store ROS log
115 + if: failure()
116 + uses: actions/upload-artifact@v2
117 + with:
118 + name: ros_log
119 + path: ~/.ros/**/rostest-*.log
120 +
121 + # Report test coverage
122 + - name: Upload coverage
123 + if: contains(matrix.config.build_type, 'Coverage')
124 + run: |
125 + git config --global credential.helper "" # disable the keychain credential helper
126 + git config --global --add credential.helper store # enable the local store credential helper
127 + echo "https://x-access-token:${{ secrets.ACCESS_TOKEN }}@github.com" >> ~/.git-credentials # add credential
128 + git config --global url."https://github.com/".insteadof git@github.com: # credentials add credential
129 + mkdir -p coverage
130 + lcov --directory build/px4_sitl_default --base-directory build/px4_sitl_default --gcov-tool gcov --capture -o coverage/lcov.info
131 + - name: Upload coverage information to Codecov
132 + if: contains(matrix.config.build_type, 'Coverage')
133 + uses: codecov/codecov-action@v1
134 + with:
135 + token: ${{ secrets.CODECOV_TOKEN }}
136 + flags: mavros_mission
137 + file: coverage/lcov.info
1 +name: MAVROS Offboard Tests
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + strategy:
15 + fail-fast: false
16 + matrix:
17 + config:
18 + - {test_file: "mavros_posix_tests_offboard_posctl.test", vehicle: "iris", build_type: "RelWithDebInfo"}
19 + #- {test_file: "mavros_posix_tests_offboard_attctl.test", vehicle: "iris", build_type: "RelWithDebInfo"}
20 + #- {test_file: "mavros_posix_tests_offboard_rpyrt_ctl.test", vehicle: "iris", build_type: "RelWithDebInfo"}
21 +
22 + container:
23 + image: px4io/px4-dev-ros-melodic:2021-04-29
24 + options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
25 + steps:
26 + - uses: actions/checkout@v1
27 + with:
28 + token: ${{ secrets.ACCESS_TOKEN }}
29 +
30 + - name: Prepare ccache timestamp
31 + id: ccache_cache_timestamp
32 + shell: cmake -P {0}
33 + run: |
34 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
35 + message("::set-output name=timestamp::${current_date}")
36 + - name: ccache cache files
37 + uses: actions/cache@v2
38 + with:
39 + path: ~/.ccache
40 + key: sitl_tests-${{matrix.config.build_type}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
41 + restore-keys: sitl_tests-${{matrix.config.build_type}}-ccache-
42 + - name: setup ccache
43 + run: |
44 + mkdir -p ~/.ccache
45 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
46 + echo "compression = true" >> ~/.ccache/ccache.conf
47 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
48 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
49 + ccache -s
50 + ccache -z
51 +
52 + - name: check environment
53 + run: |
54 + export
55 + ulimit -a
56 + - name: Build PX4 and sitl_gazebo
57 + env:
58 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
59 + run: |
60 + ccache -z
61 + make px4_sitl_default
62 + make px4_sitl_default sitl_gazebo
63 + ccache -s
64 +
65 + - name: Core dump settings
66 + run: |
67 + ulimit -c unlimited
68 + echo "`pwd`/%e.core" > /proc/sys/kernel/core_pattern
69 +
70 + - name: Run SITL tests
71 + env:
72 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
73 + run: |
74 + export
75 + ./test/rostest_px4_run.sh ${{matrix.config.test_file}} vehicle:=${{matrix.config.vehicle}}
76 +
77 + - name: Look at core files
78 + if: failure()
79 + run: gdb build/px4_sitl_default/bin/px4 px4.core -ex "thread apply all bt" -ex "quit"
80 + - name: Upload px4 coredump
81 + if: failure()
82 + uses: actions/upload-artifact@v2-preview
83 + with:
84 + name: coredump
85 + path: px4.core
86 +
87 + - name: ecl EKF analysis
88 + if: always()
89 + run: ./Tools/ecl_ekf/process_logdata_ekf.py ~/.ros/log/*/*.ulg || true
90 +
91 + - name: Upload logs to flight review
92 + if: always()
93 + run: ./Tools/upload_log.py -q --description "${GITHUB_WORKFLOW} ${GITHUB_RUN_ID}" --feedback "${GITHUB_WORKFLOW} ${GITHUB_RUN_ID} ${GITHUB_REPOSITORY} ${GITHUB_REF}" --source CI ~/.ros/log/*/*.ulg
94 +
95 + - name: Upload px4 binary
96 + if: failure()
97 + uses: actions/upload-artifact@v2
98 + with:
99 + name: binary
100 + path: build/px4_sitl_default/bin/px4
101 +
102 + - name: Store PX4 log
103 + if: failure()
104 + uses: actions/upload-artifact@v2
105 + with:
106 + name: px4_log
107 + path: ~/.ros/log/*/*.ulg
108 +
109 + - name: Store ROS log
110 + if: failure()
111 + uses: actions/upload-artifact@v2
112 + with:
113 + name: ros_log
114 + path: ~/.ros/**/rostest-*.log
115 +
116 + # Report test coverage
117 + - name: Upload coverage
118 + if: contains(matrix.config.build_type, 'Coverage')
119 + run: |
120 + git config --global credential.helper "" # disable the keychain credential helper
121 + git config --global --add credential.helper store # enable the local store credential helper
122 + echo "https://x-access-token:${{ secrets.ACCESS_TOKEN }}@github.com" >> ~/.git-credentials # add credential
123 + git config --global url."https://github.com/".insteadof git@github.com: # credentials add credential
124 + mkdir -p coverage
125 + lcov --directory build/px4_sitl_default --base-directory build/px4_sitl_default --gcov-tool gcov --capture -o coverage/lcov.info
126 + - name: Upload coverage information to Codecov
127 + if: contains(matrix.config.build_type, 'Coverage')
128 + uses: codecov/codecov-action@v1
129 + with:
130 + token: ${{ secrets.CODECOV_TOKEN }}
131 + flags: mavros_offboard
132 + file: coverage/lcov.info
1 +name: Metadata
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + - 'release/*'
8 + - 'pr-metadata-test'
9 +
10 +jobs:
11 +
12 + airframe:
13 + runs-on: ubuntu-latest
14 + container: px4io/px4-dev-base-focal:2021-04-29
15 + steps:
16 + - uses: actions/checkout@v1
17 + with:
18 + token: ${{ secrets.ACCESS_TOKEN }}
19 +
20 + - name: airframe metadata
21 + run: |
22 + make airframe_metadata
23 + cd build/px4_sitl_default/docs
24 + ls -ls *
25 + # TODO: deploy to userguide gitbook and s3
26 +
27 + module:
28 + runs-on: ubuntu-latest
29 + container: px4io/px4-dev-base-focal:2021-04-29
30 + steps:
31 + - uses: actions/checkout@v1
32 + with:
33 + token: ${{ secrets.ACCESS_TOKEN }}
34 +
35 + - name: module documentation
36 + run: |
37 + make module_documentation
38 + cd build/px4_sitl_default/docs
39 + ls -ls *
40 + # TODO: deploy to userguide gitbook and s3
41 +
42 + parameter:
43 + runs-on: ubuntu-latest
44 + container: px4io/px4-dev-base-focal:2021-04-29
45 + steps:
46 + - uses: actions/checkout@v1
47 + with:
48 + token: ${{ secrets.ACCESS_TOKEN }}
49 +
50 + - name: parameter metadata
51 + run: |
52 + make parameters_metadata
53 + ./src/lib/version/get_git_tag_or_branch_version.sh build/px4_sitl_default >> $GITHUB_ENV
54 +
55 + - uses: jakejarvis/s3-sync-action@master
56 + with:
57 + args: --acl public-read
58 + env:
59 + AWS_S3_BUCKET: 'px4-travis'
60 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
61 + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
62 + AWS_REGION: 'us-west-1'
63 + SOURCE_DIR: 'build/px4_sitl_default/docs/'
64 + DEST_DIR: 'Firmware/${{ env.version }}/_general/'
65 +
66 + uorb_graph:
67 + runs-on: ubuntu-latest
68 + container: px4io/px4-dev-nuttx-focal:2021-04-29
69 + steps:
70 + - uses: actions/checkout@v1
71 + with:
72 + token: ${{ secrets.ACCESS_TOKEN }}
73 +
74 + - name: uORB graph
75 + run: |
76 + make uorb_graphs
77 + cd Tools/uorb_graph
78 + ls -ls *
79 + # TODO: deploy graph_px4_sitl.json to S3 px4-travis:Firmware/master/
80 +
81 + micrortps_agent:
82 + runs-on: ubuntu-latest
83 + container: px4io/px4-dev-base-focal:2021-04-29
84 + steps:
85 + - uses: actions/checkout@v1
86 + with:
87 + token: ${{ secrets.ACCESS_TOKEN }}
88 +
89 + - name: microRTPS agent
90 + run: |
91 + make px4_sitl_rtps
92 + git clone https://github.com/PX4/micrortps_agent.git
93 + cp -R build/px4_sitl_rtps/src/modules/micrortps_bridge/micrortps_agent/* micrortps_agent
94 +
95 + ROS_msgs:
96 + runs-on: ubuntu-latest
97 + container: px4io/px4-dev-base-focal:2021-04-29
98 + steps:
99 + - uses: actions/checkout@v1
100 + with:
101 + token: ${{ secrets.ACCESS_TOKEN }}
102 +
103 + - name: PX4 ROS msgs
104 + run: |
105 + git clone https://github.com/PX4/px4_msgs.git
106 + python3 msg/tools/uorb_to_ros_msgs.py msg/ px4_msgs/msg/
107 +
108 + ROS2_bridge:
109 + runs-on: ubuntu-latest
110 + container: px4io/px4-dev-base-focal:2021-04-29
111 + steps:
112 + - uses: actions/checkout@v1
113 + with:
114 + token: ${{ secrets.ACCESS_TOKEN }}
115 +
116 + - name: PX4 ROS2 bridge
117 + run: |
118 + git clone https://github.com/PX4/px4_ros_com.git
119 + ./msg/tools/uorb_to_ros_rtps_ids.py -i msg/tools/uorb_rtps_message_ids.yaml -o px4_ros_com/templates/uorb_rtps_message_ids.yaml
1 +name: Python CI Checks
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + steps:
15 + - uses: actions/checkout@v1
16 + with:
17 + token: ${{ secrets.ACCESS_TOKEN }}
18 + - name: Install Python3
19 + run: sudo apt-get install python3 python3-setuptools python3-pip -y
20 + - name: Install tools
21 + run: pip3 install --user mypy flake8
22 + - name: Check MAVSDK test scripts with mypy
23 + run: $HOME/.local/bin/mypy --strict test/mavsdk_tests/*.py
24 + - name: Check MAVSDK test scripts with flake8
25 + run: $HOME/.local/bin/flake8 test/mavsdk_tests/*.py
1 +name: SITL Tests
2 +
3 +on:
4 + push:
5 + branches:
6 + - 'master'
7 + pull_request:
8 + branches:
9 + - '*'
10 +
11 +jobs:
12 + build:
13 + runs-on: ubuntu-latest
14 + strategy:
15 + fail-fast: false
16 + matrix:
17 + config:
18 + - {latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo", model: "iris" } # Alaska
19 + - {latitude: "-38.071235", longitude: "145.281220", altitude: "31", build_type: "RelWithDebInfo", model: "standard_vtol" } # Australia
20 + - {latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo", model: "tailsitter" } # Florida
21 + - {latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage", model: "standard_vtol" } # Zurich
22 + container:
23 + image: px4io/px4-dev-simulation-focal:2021-04-29
24 + options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
25 + steps:
26 + - uses: actions/checkout@v1
27 + with:
28 + token: ${{ secrets.ACCESS_TOKEN }}
29 +
30 + - name: Download MAVSDK
31 + run: wget "https://github.com/mavlink/MAVSDK/releases/download/v$(cat test/mavsdk_tests/MAVSDK_VERSION)/mavsdk_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
32 + - name: Install MAVSDK
33 + run: dpkg -i "mavsdk_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
34 +
35 + - name: Prepare ccache timestamp
36 + id: ccache_cache_timestamp
37 + shell: cmake -P {0}
38 + run: |
39 + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
40 + message("::set-output name=timestamp::${current_date}")
41 + - name: ccache cache files
42 + uses: actions/cache@v2
43 + with:
44 + path: ~/.ccache
45 + key: sitl_tests-${{matrix.config.build_type}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
46 + restore-keys: sitl_tests-${{matrix.config.build_type}}-ccache-
47 + - name: setup ccache
48 + run: |
49 + mkdir -p ~/.ccache
50 + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
51 + echo "compression = true" >> ~/.ccache/ccache.conf
52 + echo "compression_level = 5" >> ~/.ccache/ccache.conf
53 + echo "max_size = 100M" >> ~/.ccache/ccache.conf
54 + ccache -s
55 + ccache -z
56 +
57 + - name: check environment
58 + env:
59 + PX4_HOME_LAT: ${{matrix.config.latitude}}
60 + PX4_HOME_LON: ${{matrix.config.longitude}}
61 + PX4_HOME_ALT: ${{matrix.config.altitude}}
62 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
63 + run: |
64 + export
65 + ulimit -a
66 + - name: Build PX4
67 + env:
68 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
69 + run: make px4_sitl_default
70 + - name: ccache post-run px4/firmware
71 + run: ccache -s
72 + - name: Build SITL Gazebo
73 + env:
74 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
75 + run: make px4_sitl_default sitl_gazebo
76 + - name: ccache post-run sitl_gazebo
77 + run: ccache -s
78 + - name: Build MAVSDK tests
79 + env:
80 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
81 + DONT_RUN: 1
82 + run: make px4_sitl_default gazebo mavsdk_tests
83 + - name: ccache post-run mavsdk_tests
84 + run: ccache -s
85 +
86 + - name: Core dump settings
87 + run: |
88 + ulimit -c unlimited
89 + echo "`pwd`/%e.core" > /proc/sys/kernel/core_pattern
90 +
91 + - name: Run SITL tests
92 + env:
93 + PX4_HOME_LAT: ${{matrix.config.latitude}}
94 + PX4_HOME_LON: ${{matrix.config.longitude}}
95 + PX4_HOME_ALT: ${{matrix.config.altitude}}
96 + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
97 + run: test/mavsdk_tests/mavsdk_test_runner.py --speed-factor 20 --abort-early --model ${{matrix.config.model}} --upload test/mavsdk_tests/configs/sitl.json
98 +
99 + - name: Look at core files
100 + if: failure()
101 + run: gdb build/px4_sitl_default/bin/px4 px4.core -ex "thread apply all bt" -ex "quit"
102 + - name: Upload px4 coredump
103 + if: failure()
104 + uses: actions/upload-artifact@v2-preview
105 + with:
106 + name: coredump
107 + path: px4.core
108 +
109 + - name: Upload px4 binary
110 + if: failure()
111 + uses: actions/upload-artifact@v2-preview
112 + with:
113 + name: binary
114 + path: build/px4_sitl_default/bin/px4
115 +
116 + # Report test coverage
117 + - name: Upload coverage
118 + if: contains(matrix.config.build_type, 'Coverage')
119 + run: |
120 + git config --global credential.helper "" # disable the keychain credential helper
121 + git config --global --add credential.helper store # enable the local store credential helper
122 + echo "https://x-access-token:${{ secrets.ACCESS_TOKEN }}@github.com" >> ~/.git-credentials # add credential
123 + git config --global url."https://github.com/".insteadof git@github.com: # credentials add credential
124 + mkdir -p coverage
125 + lcov --directory build/px4_sitl_default --base-directory build/px4_sitl_default --gcov-tool gcov --capture -o coverage/lcov.info
126 + - name: Upload coverage information to Codecov
127 + if: contains(matrix.config.build_type, 'Coverage')
128 + uses: codecov/codecov-action@v1
129 + with:
130 + token: ${{ secrets.CODECOV_TOKEN }}
131 + flags: mavsdk
132 + file: coverage/lcov.info
1 +# How to install:
2 +# gem install github_changelog_generator
3 +# How to run:
4 +# github_changelog_generator -u PX4 -p Firmware
5 +# Description:
6 +# The following params are sensible defaults for the PX4 project,
7 +# if you want to do a changelog before a release you need to update since-tag and future-releases,
8 +
9 +# Params:
10 +# github_changelog_generator --help for all options
11 +
12 +# max-issues
13 +# max threshold for github api queries
14 +# make sure you set your CHANGELOG_GITHUB_TOKEN before
15 +# running
16 +max-issues=1500
17 +
18 +# exclude-tags-regex
19 +# excludes release candidates
20 +exclude-tags-regex=rc[0-9]{1,}|beta[0-9]{1,}
21 +
22 +# since-tag
23 +# version of last stable release
24 +# you need to change this depending on what you need
25 +# if you want a changelog between versions this is the lowest version
26 +since-tag=1.6.5
27 +
28 +# future-release
29 +# version you are about to release
30 +# if you want a changelog between a version and all unreleased changes grouped as a release
31 +# eg: v1.6.5 to v1.7.0
32 +future-release=v1.7.0
33 +
1 +*.dSYM
2 +*.o
3 +*.gch
4 +*.pyc
5 +*~
6 +.*.swp
7 +.context
8 +.cproject
9 +.DS_Store
10 +.gdbinit
11 +.gdb_history
12 +.project
13 +.settings
14 +.swp
15 +.~lock.*
16 +Testing/
17 +Packages/*
18 +build/*
19 +build_*/
20 +cscope.out
21 +cscope.in.out
22 +cscope.po.out
23 +Firmware.sublime-workspace
24 +user.sublime*
25 +/Documentation/doxy.log
26 +/Documentation/html/
27 +/Documentation/doxygen*objdb*tmp
28 +.tags
29 +tags
30 +.tags_sorted_by_file
31 +.pydevproject
32 +.ropeproject
33 +*.orig
34 +Firmware.zip
35 +*.generated.h
36 +.vagrant
37 +*.pretty
38 +xcode
39 +rootfs/
40 +*.autosave
41 +CMakeLists.txt.user
42 +GPATH
43 +GRTAGS
44 +GTAGS
45 +*.creator
46 +*.creator.user
47 +*.files
48 +*.includes
49 +
50 +# CLion ignores
51 +.idea
52 +cmake-build-*/
53 +
54 +posix-configs/SITL/init/test/*_generated
55 +
56 +/airframes.md
57 +/airframes.xml
58 +/parameters.md
59 +/parameters.xml
60 +/modules
61 +/msg/ros/*.msg
62 +
63 +*.gcov
64 +.coverage
65 +.coverage.*
66 +
67 +# KDevelop ignores
68 +.kdev4/*
69 +*.kdev4
70 +
71 +# cmake in tree (ninja)
72 +.ninja_deps
73 +.ninja_log
74 +bin/
75 +build.ninja
76 +cmake_install.cmake
77 +CMakeCache.txt
78 +CMakeFiles
79 +compile_commands.json
80 +CPackConfig.cmake
81 +CPackSourceConfig.cmake
82 +CTestTestfile.cmake
83 +external/
84 +rules.ninja
85 +
86 +# in tree build
87 +**/*.a
88 +**/*.px4mod
89 +**/*.stamp
90 +/coverage*
91 +/functional-*
92 +/generated_params/
93 +/googletest-*/
94 +/logs
95 +/mavsdk_tests
96 +/test_mixer_multirotor
97 +/unit-*
98 +/uORB/
99 +DartConfiguration.tcl
100 +msg/tmp/
101 +msg/topics_sources/
102 +platforms/posix/apps.cpp
103 +platforms/posix/apps.h
104 +src/lib/version/build_git_version.h
105 +src/modules/simulator/simulator_config.h
106 +src/systemcmds/topic_listener/listener_generated.cpp
107 +
108 +# SITL
109 +dataman
110 +eeprom/
1 +[submodule "mavlink/include/mavlink/v2.0"]
2 + path = mavlink/include/mavlink/v2.0
3 + url = https://github.com/mavlink/c_library_v2.git
4 + branch = master
5 +[submodule "src/drivers/uavcan/libuavcan"]
6 + path = src/drivers/uavcan/libuavcan
7 + url = https://github.com/PX4/libuavcan.git
8 + branch = px4
9 +[submodule "Tools/jMAVSim"]
10 + path = Tools/jMAVSim
11 + url = https://github.com/PX4/jMAVSim.git
12 + branch = master
13 +[submodule "Tools/sitl_gazebo"]
14 + path = Tools/sitl_gazebo
15 + url = https://github.com/PX4/PX4-SITL_gazebo.git
16 + branch = master
17 +[submodule "src/lib/matrix"]
18 + path = src/lib/matrix
19 + url = https://github.com/PX4/PX4-Matrix.git
20 + branch = master
21 +[submodule "src/lib/ecl"]
22 + path = src/lib/ecl
23 + url = https://github.com/PX4/PX4-ECL.git
24 + branch = master
25 +[submodule "boards/atlflight/cmake_hexagon"]
26 + path = boards/atlflight/cmake_hexagon
27 + url = https://github.com/PX4/cmake_hexagon.git
28 + branch = px4
29 +[submodule "src/drivers/gps/devices"]
30 + path = src/drivers/gps/devices
31 + url = https://github.com/PX4/PX4-GPSDrivers.git
32 + branch = master
33 +[submodule "src/modules/micrortps_bridge/micro-CDR"]
34 + path = src/modules/micrortps_bridge/micro-CDR
35 + url = https://github.com/PX4/Micro-CDR.git
36 + branch = master
37 +[submodule "platforms/nuttx/NuttX/nuttx"]
38 + path = platforms/nuttx/NuttX/nuttx
39 + url = https://github.com/PX4/NuttX.git
40 + branch = px4_firmware_nuttx-10.0.0+
41 +[submodule "platforms/nuttx/NuttX/apps"]
42 + path = platforms/nuttx/NuttX/apps
43 + url = https://github.com/PX4/NuttX-apps.git
44 + branch = px4_firmware_nuttx-10.0.0+
45 +[submodule "platforms/qurt/dspal"]
46 + path = platforms/qurt/dspal
47 + url = https://github.com/ATLFlight/dspal.git
48 +[submodule "Tools/flightgear_bridge"]
49 + path = Tools/flightgear_bridge
50 + url = https://github.com/PX4/PX4-FlightGear-Bridge.git
51 +[submodule "Tools/jsbsim_bridge"]
52 + path = Tools/jsbsim_bridge
53 + url = https://github.com/PX4/px4-jsbsim-bridge.git
54 +[submodule "src/drivers/uavcan_v1/libcanard"]
55 + path = src/drivers/uavcan_v1/libcanard
56 + url = https://github.com/UAVCAN/libcanard.git
57 +[submodule "src/drivers/uavcan_v1/public_regulated_data_types"]
58 + path = src/drivers/uavcan_v1/public_regulated_data_types
59 + url = https://github.com/UAVCAN/public_regulated_data_types.git
60 +[submodule "src/drivers/uavcannode_gps_demo/public_regulated_data_types"]
61 + path = src/drivers/uavcannode_gps_demo/public_regulated_data_types
62 + url = https://github.com/UAVCAN/public_regulated_data_types.git
63 +[submodule "src/drivers/uavcannode_gps_demo/libcanard"]
64 + path = src/drivers/uavcannode_gps_demo/libcanard
65 + url = https://github.com/UAVCAN/libcanard.git
66 +[submodule "src/drivers/uavcan_v1/legacy_data_types"]
67 + path = src/drivers/uavcan_v1/legacy_data_types
68 + url = https://github.com/PX4/public_regulated_data_types.git
69 + branch = legacy
1 +language: cpp
2 +
3 +git:
4 + depth: 100
5 + submodules: false
6 +
7 +matrix:
8 + fast_finish: true
9 + include:
10 + - os: linux
11 + dist: xenial
12 + # In order to stay under the coverity rate limit, we only run this weekly
13 + # and not on push which is configured in travis-ci settings.
14 + if: branch = master
15 +
16 +before_install:
17 + - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
18 +
19 +install:
20 + - export PATH=$HOME/.local/bin:$PATH
21 + - pip install --user --upgrade pip
22 + - pip install --user -r Tools/setup/requirements.txt
23 +
24 +script:
25 + - make
26 +
27 +addons:
28 + coverity_scan:
29 + project:
30 + name: "PX4/Firmware"
31 + description: "Build submitted via Travis CI"
32 + notification_email: ci@px4.io
33 + build_command_prepend: "make distclean"
34 + build_command: "make px4_sitl_default"
35 + branch_pattern: coverity_scan
1 +.cortex-debug.peripherals.state.json
2 +.cortex-debug.registers.state.json
3 +compile_commands.json
4 +
5 +# generated by cmake
6 +launch.json
7 +
8 +# C/C++ extension does some local caching in this folder
9 +ipch/
10 +
11 +browse.vc.db*
1 +{
2 + "configurations": [
3 + {
4 + "name": "PX4",
5 + "includePath": [
6 + "${workspaceFolder}/**"
7 + ],
8 + "defines": [],
9 + "macFrameworkPath": [],
10 + "configurationProvider": "ms-vscode.cmake-tools",
11 + "cppStandard": "c++14",
12 + "cStandard": "c11"
13 + }
14 + ],
15 + "version": 4
16 +}
...\ No newline at end of file ...\ No newline at end of file
1 +[
2 + {
3 + "name": "PX4 detect"
4 + }
5 +]
...\ No newline at end of file ...\ No newline at end of file
1 +CONFIG:
2 + default: px4_sitl_default
3 + choices:
4 + px4_sitl_default:
5 + short: px4_sitl
6 + buildType: RelWithDebInfo
7 + settings:
8 + CONFIG: px4_sitl_default
9 + px4_sitl_replay:
10 + short: px4_sitl_replay
11 + buildType: RelWithDebInfo
12 + settings:
13 + CONFIG: px4_sitl_replay
14 + px4_sitl_test:
15 + short: px4_sitl_test
16 + buildType: RelWithDebInfo
17 + settings:
18 + CONFIG: px4_sitl_test
19 + px4_io-v2_default:
20 + short: px4_io-v2
21 + buildType: MinSizeRel
22 + settings:
23 + CONFIG: px4_io-v2_default
24 + px4_fmu-v2_default:
25 + short: px4_fmu-v2
26 + buildType: MinSizeRel
27 + settings:
28 + CONFIG: px4_fmu-v2_default
29 + px4_fmu-v3_default:
30 + short: px4_fmu-v3
31 + buildType: MinSizeRel
32 + settings:
33 + CONFIG: px4_fmu-v3_default
34 + px4_fmu-v4_default:
35 + short: px4_fmu-v4
36 + buildType: MinSizeRel
37 + settings:
38 + CONFIG: px4_fmu-v4_default
39 + px4_fmu-v4pro_default:
40 + short: px4_fmu-v4pro
41 + buildType: MinSizeRel
42 + settings:
43 + CONFIG: px4_fmu-v4pro_default
44 + px4_fmu-v5_default:
45 + short: px4_fmu-v5
46 + buildType: MinSizeRel
47 + settings:
48 + CONFIG: px4_fmu-v5_default
49 + px4_fmu-v5x_default:
50 + short: px4_fmu-v5x
51 + buildType: MinSizeRel
52 + settings:
53 + CONFIG: px4_fmu-v5x_default
54 + airmind_mindpx-v2_default:
55 + short: airmind_mindpx-v2
56 + buildType: MinSizeRel
57 + settings:
58 + CONFIG: airmind_mindpx-v2_default
59 + ark_can-flow_default:
60 + short: ark_can-flow_default
61 + buildType: MinSizeRel
62 + settings:
63 + CONFIG: ark_can-flow_default
64 + ark_can-flow_canbootloader:
65 + short: ark_can-flow_canbootloader
66 + buildType: MinSizeRel
67 + settings:
68 + CONFIG: ark_can-flow_canbootloader
69 + ark_can-gps_default:
70 + short: ark_can-gps_default
71 + buildType: MinSizeRel
72 + settings:
73 + CONFIG: ark_can-gps_default
74 + ark_can-gps_canbootloader:
75 + short: ark_can-gps_canbootloader
76 + buildType: MinSizeRel
77 + settings:
78 + CONFIG: ark_can-gps_canbootloader
79 + av_x-v1_default:
80 + short: av_x-v1
81 + buildType: MinSizeRel
82 + settings:
83 + CONFIG: av_x-v1_default
84 + bitcraze_crazyflie_default:
85 + short: bitcraze_crazyflie
86 + buildType: MinSizeRel
87 + settings:
88 + CONFIG: bitcraze_crazyflie_default
89 + cuav_can-gps-v1_default:
90 + short: cuav_can-gps-v1_default
91 + buildType: MinSizeRel
92 + settings:
93 + CONFIG: cuav_can-gps-v1_default
94 + cuav_can-gps-v1_canbootloader:
95 + short: cuav_can-gps-v1_canbootloader
96 + buildType: MinSizeRel
97 + settings:
98 + CONFIG: cuav_can-gps-v1_canbootloader
99 + cuav_nora_default:
100 + short: cuav_nora
101 + buildType: MinSizeRel
102 + settings:
103 + CONFIG: cuav_nora_default
104 + cuav_x7pro_default:
105 + short: cuav_x7pro
106 + buildType: MinSizeRel
107 + settings:
108 + CONFIG: cuav_x7pro_default
109 + cubepilot_cubeorange_test:
110 + short: cubepilot_cubeorange
111 + buildType: MinSizeRel
112 + settings:
113 + CONFIG: cubepilot_orange_test
114 + emlid_navio2_default:
115 + short: emlid_navio2
116 + buildType: MinSizeRel
117 + settings:
118 + CONFIG: emlid_navio2_default
119 + freefly_can-rtk-gps_default:
120 + short: freefly_can-rtk-gps_default
121 + buildType: MinSizeRel
122 + settings:
123 + CONFIG: freefly_can-rtk-gps_default
124 + freefly_can-rtk-gps_canbootloader:
125 + short: freefly_can-rtk-gps_canbootloader
126 + buildType: MinSizeRel
127 + settings:
128 + CONFIG: freefly_can-rtk-gps_canbootloader
129 + holybro_can-gps-v1_canbootloader:
130 + short: holybro_can-gps-v1_canbootloader
131 + buildType: MinSizeRel
132 + settings:
133 + CONFIG: holybro_can-gps-v1_canbootloader
134 + holybro_can-gps-v1_default:
135 + short: holybro_can-gps-v1_default
136 + buildType: MinSizeRel
137 + settings:
138 + CONFIG: holybro_can-gps-v1_default
139 + holybro_durandal-v1_default:
140 + short: holybro_durandal-v1
141 + buildType: MinSizeRel
142 + settings:
143 + CONFIG: holybro_durandal-v1_default
144 + modalai_fc-v1_default:
145 + short: modalai_fc-v1
146 + buildType: MinSizeRel
147 + settings:
148 + CONFIG: modalai_fc-v1_default
149 + modalai_fc-v2_default:
150 + short: modalai_fc-v2
151 + buildType: MinSizeRel
152 + settings:
153 + CONFIG: modalai_fc-v2_default
154 + mro_ctrl-zero-f7_default:
155 + short: mro_ctrl-zero-f7
156 + buildType: MinSizeRel
157 + settings:
158 + CONFIG: mro_ctrl-zero-f7_default
159 + mro_pixracerpro_bootloader:
160 + short: mro_pixracerpro_bootloader
161 + buildType: MinSizeRel
162 + settings:
163 + CONFIG: mro_pixracerpro_bootloader
164 + mro_pixracerpro_default:
165 + short: mro_pixracerpro_default
166 + buildType: MinSizeRel
167 + settings:
168 + CONFIG: mro_pixracerpro_default
169 + mro_x21-777_default:
170 + short: mro_x2.1-777
171 + buildType: MinSizeRel
172 + settings:
173 + CONFIG: mro_x21-777_default
174 + nxp_fmuk66-v3_default:
175 + short: nxp_fmuk66-v3
176 + buildType: MinSizeRel
177 + settings:
178 + CONFIG: nxp_fmuk66-v3_default
1 +{
2 + // See http://go.microsoft.com/fwlink/?LinkId=827846
3 + // for the documentation about the extensions.json format
4 + "recommendations": [
5 + "chiehyu.vscode-astyle",
6 + "dan-c-underwood.arm",
7 + "fredericbonnet.cmake-test-adapter",
8 + "github.vscode-pull-request-github",
9 + "marus25.cortex-debug",
10 + "ms-azuretools.vscode-docker",
11 + "ms-iot.vscode-ros",
12 + "ms-python.python",
13 + "ms-vscode.cmake-tools",
14 + "ms-vscode.cpptools",
15 + "ms-vscode.cpptools-extension-pack",
16 + "redhat.vscode-yaml",
17 + "streetsidesoftware.code-spell-checker",
18 + "twxs.cmake",
19 + "uavcan.dsdl",
20 + "wholroyd.jinja",
21 + "zixuanwang.linkerscript"
22 + ]
23 +}
1 +{
2 + "astyle.astylerc": "${workspaceFolder}/Tools/astyle/astylerc",
3 + "astyle.c.enable": true,
4 + "astyle.cpp.enable": true,
5 + "breadcrumbs.enabled": true,
6 + "C_Cpp.autoAddFileAssociations": false,
7 + "C_Cpp.clang_format_fallbackStyle": "none",
8 + "C_Cpp.default.browse.limitSymbolsToIncludedHeaders": true,
9 + "C_Cpp.default.cppStandard": "c++14",
10 + "C_Cpp.default.cStandard": "c11",
11 + "C_Cpp.formatting": "Disabled",
12 + "C_Cpp.intelliSenseEngine": "Default",
13 + "C_Cpp.vcpkg.enabled": false,
14 + "C_Cpp.workspaceParsingPriority": "low",
15 + "cmake.buildBeforeRun": true,
16 + "cmake.buildDirectory": "${workspaceFolder}/build/${variant:CONFIG}",
17 + "cmake.buildTask": true,
18 + "cmake.configureOnOpen": true,
19 + "cmake.ctest.parallelJobs": 1,
20 + "cmake.skipConfigureIfCachePresent": true,
21 + "cmakeExplorer.buildDir": "${workspaceFolder}/build/px4_sitl_test",
22 + "cmakeExplorer.parallelJobs": 1,
23 + "cmakeExplorer.suiteDelimiter": "-",
24 + "cortex-debug.enableTelemetry": false,
25 + "cSpell.allowCompoundWords": true,
26 + "cSpell.diagnosticLevel": "Hint",
27 + "cSpell.showStatus": false,
28 + "cSpell.words": [
29 + "acro",
30 + "nuttx",
31 + "esc"
32 + ],
33 + "debug.toolBarLocation": "docked",
34 + "editor.acceptSuggestionOnEnter": "off",
35 + "editor.defaultFormatter": "chiehyu.vscode-astyle",
36 + "editor.dragAndDrop": false,
37 + "editor.insertSpaces": false,
38 + "editor.minimap.maxColumn": 120,
39 + "editor.minimap.renderCharacters": false,
40 + "editor.minimap.showSlider": "always",
41 + "editor.suggest.localityBonus": true,
42 + "editor.tabSize": 8,
43 + "editor.wordWrapColumn": 120,
44 + "explorer.openEditors.visible": 0,
45 + "files.insertFinalNewline": true,
46 + "files.trimTrailingWhitespace": true,
47 + "files.watcherExclude": {
48 + "**/build/**": true
49 + },
50 + "git.detectSubmodulesLimit": 20,
51 + "git.ignoreLimitWarning": true,
52 + "githubPullRequests.defaultMergeMethod": "squash",
53 + "githubPullRequests.telemetry.enabled": false,
54 + "files.associations": {
55 + "*.jinja": "jinja",
56 + "algorithm": "cpp",
57 + "array": "cpp",
58 + "atomic": "cpp",
59 + "bitset": "cpp",
60 + "cctype": "cpp",
61 + "cfenv": "cpp",
62 + "chrono": "cpp",
63 + "cinttypes": "cpp",
64 + "clocale": "cpp",
65 + "cmath": "cpp",
66 + "codecvt": "cpp",
67 + "complex": "cpp",
68 + "condition_variable": "cpp",
69 + "csignal": "cpp",
70 + "cstdarg": "cpp",
71 + "cstddef": "cpp",
72 + "cstdint": "cpp",
73 + "cstdio": "cpp",
74 + "cstdlib": "cpp",
75 + "cstring": "cpp",
76 + "ctime": "cpp",
77 + "cwchar": "cpp",
78 + "cwctype": "cpp",
79 + "deque": "cpp",
80 + "exception": "cpp",
81 + "forward_list": "cpp",
82 + "fstream": "cpp",
83 + "functional": "cpp",
84 + "future": "cpp",
85 + "hash_map": "cpp",
86 + "hash_set": "cpp",
87 + "initializer_list": "cpp",
88 + "iomanip": "cpp",
89 + "iosfwd": "cpp",
90 + "iostream": "cpp",
91 + "istream": "cpp",
92 + "iterator": "cpp",
93 + "limits": "cpp",
94 + "list": "cpp",
95 + "map": "cpp",
96 + "memory": "cpp",
97 + "memory_resource": "cpp",
98 + "mutex": "cpp",
99 + "new": "cpp",
100 + "numeric": "cpp",
101 + "optional": "cpp",
102 + "ostream": "cpp",
103 + "random": "cpp",
104 + "ratio": "cpp",
105 + "regex": "cpp",
106 + "set": "cpp",
107 + "sstream": "cpp",
108 + "stdexcept": "cpp",
109 + "streambuf": "cpp",
110 + "string": "cpp",
111 + "string_view": "cpp",
112 + "strstream": "cpp",
113 + "system_error": "cpp",
114 + "thread": "cpp",
115 + "tuple": "cpp",
116 + "type_traits": "cpp",
117 + "typeindex": "cpp",
118 + "typeinfo": "cpp",
119 + "unordered_map": "cpp",
120 + "unordered_set": "cpp",
121 + "utility": "cpp",
122 + "valarray": "cpp",
123 + "variant": "cpp",
124 + "vector": "cpp"
125 + },
126 + "search.exclude": {
127 + "${workspaceFolder}/build": true
128 + },
129 + "search.showLineNumbers": true,
130 + "telemetry.enableTelemetry": false,
131 + "terminal.integrated.copyOnSelection": true,
132 + "terminal.integrated.rightClickBehavior": "paste",
133 + "terminal.integrated.scrollback": 5000,
134 + "window.title": "${dirty} ${activeEditorMedium}${separator}${rootName}",
135 + "workbench.editor.highlightModifiedTabs": true,
136 + "workbench.enableExperiments": false,
137 + "workbench.settings.enableNaturalLanguageSearch": false,
138 + "yaml.schemas": {
139 + "${workspaceFolder}/validation/module_schema.yaml": "${workspaceFolder}/src/modules/*/module.yaml"
140 + }
141 +}
This diff is collapsed. Click to expand it.
1 +# This file is NOT licensed under the GPLv3, which is the license for the rest
2 +# of YouCompleteMe.
3 +#
4 +# Here's the license text for this file:
5 +#
6 +# This is free and unencumbered software released into the public domain.
7 +#
8 +# Anyone is free to copy, modify, publish, use, compile, sell, or
9 +# distribute this software, either in source code form or as a compiled
10 +# binary, for any purpose, commercial or non-commercial, and by any
11 +# means.
12 +#
13 +# In jurisdictions that recognize copyright laws, the author or authors
14 +# of this software dedicate any and all copyright interest in the
15 +# software to the public domain. We make this dedication for the benefit
16 +# of the public at large and to the detriment of our heirs and
17 +# successors. We intend this dedication to be an overt act of
18 +# relinquishment in perpetuity of all present and future rights to this
19 +# software under copyright law.
20 +#
21 +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 +# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25 +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26 +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 +# OTHER DEALINGS IN THE SOFTWARE.
28 +#
29 +# For more information, please refer to <http://unlicense.org/>
30 +
31 +import os
32 +import ycm_core
33 +
34 +# These are the compilation flags that will be used in case there's no
35 +# compilation database set (by default, one is not set).
36 +# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
37 +flags = [
38 +'-Wall',
39 +'-Wextra',
40 +'-Werror',
41 +#'-Wc++98-compat',
42 +'-Wno-long-long',
43 +'-Wno-variadic-macros',
44 +'-fexceptions',
45 +'-DNDEBUG',
46 +# You 100% do NOT need -DUSE_CLANG_COMPLETER in your flags; only the YCM
47 +# source code needs it.
48 +#'-DUSE_CLANG_COMPLETER',
49 +# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
50 +# language to use when compiling headers. So it will guess. Badly. So C++
51 +# headers will be compiled as C headers. You don't want that so ALWAYS specify
52 +# a "-std=<something>".
53 +# For a C project, you would set this to something like 'c99' instead of
54 +# 'c++14'.
55 +'-std=c++14',
56 +# ...and the same thing goes for the magic -x option which specifies the
57 +# language that the files to be compiled are written in. This is mostly
58 +# relevant for c++ headers.
59 +# For a C project, you would set this to 'c' instead of 'c++'.
60 +'-x',
61 +'c++',
62 +'-undef', # get rid of standard definitions to allow us to include arm math header
63 +'-I', os.path.join(os.path.expanduser("~"),'gcc-arm-none-eabi-4_7-2013q3/arm-none-eabi/include'),
64 +'-I', 'Build/px4_io-v2_default.build/nuttx-export/include/',
65 +'-I', './NuttX/nuttx/arch/arm/include',
66 +'-include', './src/include/visibility.h',
67 +'-I', './src',
68 +'-I', './src/modules',
69 +'-I', './src/include',
70 +'-I', './src/lib',
71 +'-I', './NuttX',
72 +]
73 +
74 +
75 +# Set this to the absolute path to the folder (NOT the file!) containing the
76 +# compile_commands.json file to use that instead of 'flags'. See here for
77 +# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
78 +#
79 +# Most projects will NOT need to set this to anything; you can just change the
80 +# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
81 +compilation_database_folder = ''
82 +
83 +if os.path.exists( compilation_database_folder ):
84 + database = ycm_core.CompilationDatabase( compilation_database_folder )
85 +else:
86 + database = None
87 +
88 +SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
89 +
90 +def DirectoryOfThisScript():
91 + return os.path.dirname( os.path.abspath( __file__ ) )
92 +
93 +
94 +def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
95 + if not working_directory:
96 + return list( flags )
97 + new_flags = []
98 + make_next_absolute = False
99 + path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
100 + for flag in flags:
101 + new_flag = flag
102 +
103 + if make_next_absolute:
104 + make_next_absolute = False
105 + if not flag.startswith( '/' ):
106 + new_flag = os.path.join( working_directory, flag )
107 +
108 + for path_flag in path_flags:
109 + if flag == path_flag:
110 + make_next_absolute = True
111 + break
112 +
113 + if flag.startswith( path_flag ):
114 + path = flag[ len( path_flag ): ]
115 + new_flag = path_flag + os.path.join( working_directory, path )
116 + break
117 +
118 + if new_flag:
119 + new_flags.append( new_flag )
120 + return new_flags
121 +
122 +
123 +def IsHeaderFile( filename ):
124 + extension = os.path.splitext( filename )[ 1 ]
125 + return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
126 +
127 +
128 +def GetCompilationInfoForFile( filename ):
129 + # The compilation_commands.json file generated by CMake does not have entries
130 + # for header files. So we do our best by asking the db for flags for a
131 + # corresponding source file, if any. If one exists, the flags for that file
132 + # should be good enough.
133 + if IsHeaderFile( filename ):
134 + basename = os.path.splitext( filename )[ 0 ]
135 + for extension in SOURCE_EXTENSIONS:
136 + replacement_file = basename + extension
137 + if os.path.exists( replacement_file ):
138 + compilation_info = database.GetCompilationInfoForFile(
139 + replacement_file )
140 + if compilation_info.compiler_flags_:
141 + return compilation_info
142 + return None
143 + return database.GetCompilationInfoForFile( filename )
144 +
145 +
146 +def FlagsForFile( filename, **kwargs ):
147 + if database:
148 + # Bear in mind that compilation_info.compiler_flags_ does NOT return a
149 + # python list, but a "list-like" StringVec object
150 + compilation_info = GetCompilationInfoForFile( filename )
151 + if not compilation_info:
152 + return None
153 +
154 + final_flags = MakeRelativePathsInFlagsAbsolute(
155 + compilation_info.compiler_flags_,
156 + compilation_info.compiler_working_dir_ )
157 +
158 + # NOTE: This is just for YouCompleteMe; it's highly likely that your project
159 + # does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR
160 + # ycm_extra_conf IF YOU'RE NOT 100% SURE YOU NEED IT.
161 + #try:
162 + # final_flags.remove( '-stdlib=libc++' )
163 + #except ValueError:
164 + # pass
165 + else:
166 + relative_to = DirectoryOfThisScript()
167 + final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
168 +
169 + return {
170 + 'flags': final_flags,
171 + 'do_cache': True
172 + }
This diff is collapsed. Click to expand it.
1 +# Contributor Covenant Code of Conduct
2 +
3 +## Our Pledge
4 +
5 +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6 +
7 +## Our Standards
8 +
9 +Examples of behavior that contributes to creating a positive environment include:
10 +
11 +* Using welcoming and inclusive language
12 +* Being respectful of differing viewpoints and experiences
13 +* Gracefully accepting constructive criticism
14 +* Focusing on what is best for the community
15 +* Showing empathy towards other community members
16 +
17 +Examples of unacceptable behavior by participants include:
18 +
19 +* The use of sexualized language or imagery and unwelcome sexual attention or advances
20 +* Trolling, insulting/derogatory comments, and personal or political attacks
21 +* Public or private harassment
22 +* Publishing others' private information, such as a physical or electronic address, without explicit permission
23 +* Other conduct which could reasonably be considered inappropriate in a professional setting
24 +
25 +## Our Responsibilities
26 +
27 +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28 +
29 +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
30 +
31 +## Scope
32 +
33 +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
34 +
35 +## Enforcement
36 +
37 +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at lorenz@px4.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38 +
39 +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40 +
41 +## Attribution
42 +
43 +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
44 +
45 +[homepage]: http://contributor-covenant.org
46 +[version]: http://contributor-covenant.org/version/1/4/
1 +# Contributing to PX4 Firmware
2 +
3 +We follow the [Github flow](https://guides.github.com/introduction/flow/) development model.
4 +
5 +### Fork the project, then clone your repo
6 +
7 +First [fork and clone](https://help.github.com/articles/fork-a-repo) the project project.
8 +
9 +### Create a feature branch
10 +
11 +*Always* branch off master for new features.
12 +
13 +```
14 +git checkout -b mydescriptivebranchname
15 +```
16 +
17 +### Edit and build the code
18 +
19 +The [developer guide](http://dev.px4.io/) explains how to set up the development environment on Mac OS, Linux or Windows. Please take note of our [coding style](https://dev.px4.io/master/en/contribute/code.html) when editing files.
20 +
21 +### Commit your changes
22 +
23 +Always write descriptive commit messages and add a fixes or relates note to them with an [issue number](https://github.com/px4/Firmware/issues) (Github will link these then conveniently)
24 +
25 +**Example:**
26 +
27 +```
28 +Change how the attitude controller works
29 +
30 +- Fixes rate feed forward
31 +- Allows a local body rate override
32 +
33 +Fixes issue #123
34 +```
35 +
36 +### Test your changes
37 +
38 +Since we care about safety, we will regularly ask you for test results. Best is to do a test flight (or bench test where it applies) and upload the logfile from it (on the microSD card in the logs directory) to Google Drive or Dropbox and share the link.
39 +
40 +### Push your changes
41 +
42 +Push changes to your repo and send a [pull request](https://github.com/PX4/Firmware/compare/).
43 +
44 +Make sure to provide some testing feedback and if possible the link to a flight log file. Upload flight log files to [Flight Review](http://logs.px4.io) and link the resulting report.
1 +## This file should be placed in the root directory of your project.
2 +## Then modify the CMakeLists.txt file in the root directory of your
3 +## project to incorporate the testing dashboard.
4 +##
5 +## # The following are required to submit to the CDash dashboard:
6 +## ENABLE_TESTING()
7 +## INCLUDE(CTest)
8 +
9 +set(CTEST_PROJECT_NAME "PX4 Firmware")
10 +set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
11 +
12 +set(CTEST_DROP_METHOD "http")
13 +set(CTEST_DROP_SITE "my.cdash.org")
14 +set(CTEST_DROP_LOCATION "/submit.php?project=PX4+Firmware")
15 +set(CTEST_DROP_SITE_CDASH TRUE)
This diff could not be displayed because it is too large.
1 +{
2 + "folders":
3 + [
4 + {
5 + "path": ".",
6 + "file_exclude_patterns":
7 + [
8 + "*.o",
9 + "*.a",
10 + "*.d",
11 + ".built",
12 + ".context",
13 + ".depend",
14 + ".config",
15 + ".version",
16 + "Make.dep",
17 + ".configured",
18 + "*.sublime-project",
19 + "*.sublime-workspace",
20 + ".project",
21 + ".cproject",
22 + "cscope.out"
23 + ],
24 + "folder_exclude_patterns":
25 + [
26 + ".settings",
27 + "nuttx/arch/arm/src/board",
28 + "nuttx/arch/arm/src/chip",
29 + "build_*"
30 + ]
31 + }
32 + ],
33 + "settings":
34 + {
35 + "tab_size": 8,
36 + "translate_tabs_to_spaces": false,
37 + "highlight_line": true,
38 + "AStyleFormatter":
39 + {
40 + "options_c":
41 + {
42 + "use_only_additional_options": true,
43 + "additional_options_file": "${project_path}/Tools/astyle/astylerc"
44 + },
45 + "options_c++":
46 + {
47 + "use_only_additional_options": true,
48 + "additional_options_file": "${project_path}/Tools/astyle/astylerc"
49 + }
50 + }
51 + },
52 + "build_systems":
53 + [
54 + {
55 + "name": "PX4: make all",
56 + "working_dir": "${project_path}",
57 + "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
58 + "cmd": ["make"],
59 + "shell": true
60 + },
61 + {
62 + "name": "PX4: make and upload",
63 + "working_dir": "${project_path}",
64 + "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
65 + "cmd": ["make upload px4_fmu-v2_default -j8"],
66 + "shell": true
67 + },
68 + {
69 + "name": "PX4: make posix",
70 + "working_dir": "${project_path}",
71 + "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
72 + "cmd": ["make posix"],
73 + "shell": true
74 + },
75 + {
76 + "name": "MindPX_V2: make and upload",
77 + "working_dir": "${project_path}",
78 + "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
79 + "cmd": ["make upload mindpx-v2_default -j8"],
80 + "shell": true
81 + }
82 + ]
83 +}
This diff is collapsed. Click to expand it.
1 +BSD 3-Clause License
2 +
3 +Copyright (c) 2012 - 2021, PX4 Development Team
4 +All rights reserved.
5 +
6 +Redistribution and use in source and binary forms, with or without
7 +modification, are permitted provided that the following conditions are met:
8 +
9 +* Redistributions of source code must retain the above copyright notice, this
10 + list of conditions and the following disclaimer.
11 +
12 +* Redistributions in binary form must reproduce the above copyright notice,
13 + this list of conditions and the following disclaimer in the documentation
14 + and/or other materials provided with the distribution.
15 +
16 +* Neither the name of the copyright holder nor the names of its
17 + contributors may be used to endorse or promote products derived from
18 + this software without specific prior written permission.
19 +
20 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This diff is collapsed. Click to expand it.
1 +Please use [PX4 Discuss](http://discuss.px4.io/) or [Slack](http://slack.px4.io/) to align on pull requests if necessary. You can then open draft pull requests to get early feedback.
2 +
3 +**Describe problem solved by this pull request**
4 +A clear and concise description of the problem this proposed change will solve.
5 +E.g. For this use case I ran into...
6 +
7 +**Describe your solution**
8 +A clear and concise description of what you have implemented.
9 +
10 +**Describe possible alternatives**
11 +A clear and concise description of alternative solutions or features you've considered.
12 +
13 +**Test data / coverage**
14 +How was it tested? What cases were covered? Logs uploaded to https://review.px4.io/ and screenshots of the important plot parts.
15 +
16 +**Additional context**
17 +Add any other related context or media.
1 +# PX4 Drone Autopilot
2 +
3 +[![Releases](https://img.shields.io/github/release/PX4/PX4-Autopilot.svg)](https://github.com/PX4/PX4-Autopilot/releases) [![DOI](https://zenodo.org/badge/22634/PX4/PX4-Autopilot.svg)](https://zenodo.org/badge/latestdoi/22634/PX4/PX4-Autopilot)
4 +
5 +[![Nuttx Targets](https://github.com/PX4/PX4-Autopilot/workflows/Nuttx%20Targets/badge.svg)](https://github.com/PX4/PX4-Autopilot/actions?query=workflow%3A%22Nuttx+Targets%22?branch=master) [![SITL Tests](https://github.com/PX4/PX4-Autopilot/workflows/SITL%20Tests/badge.svg?branch=master)](https://github.com/PX4/PX4-Autopilot/actions?query=workflow%3A%22SITL+Tests%22)
6 +
7 +[![Slack](https://px4-slack.herokuapp.com/badge.svg)](http://slack.px4.io)
8 +
9 +This repository holds the [PX4](http://px4.io) flight control solution for drones, with the main applications located in the [src/modules](https://github.com/PX4/PX4-Autopilot/tree/master/src/modules) directory. It also contains the PX4 Drone Middleware Platform, which provides drivers and middleware to run drones.
10 +
11 +PX4 is highly portable, OS-independent and supports Linux, NuttX and QuRT out of the box.
12 +
13 +* Official Website: http://px4.io (License: BSD 3-clause, [LICENSE](https://github.com/PX4/PX4-Autopilot/blob/master/LICENSE))
14 +* [Supported airframes](https://docs.px4.io/master/en/airframes/airframe_reference.html) ([portfolio](http://px4.io/#airframes)):
15 + * [Multicopters](https://docs.px4.io/master/en/frames_multicopter/)
16 + * [Fixed wing](https://docs.px4.io/master/en/frames_plane/)
17 + * [VTOL](https://docs.px4.io/master/en/frames_vtol/)
18 + * [Autogyro](https://docs.px4.io/master/en/frames_autogyro/)
19 + * [Rover](https://docs.px4.io/master/en/frames_rover/)
20 + * many more experimental types (Blimps, Boats, Submarines, High altitude balloons, etc)
21 +* Releases: [Downloads](https://github.com/PX4/PX4-Autopilot/releases)
22 +
23 +
24 +## Building a PX4 based drone, rover, boat or robot
25 +
26 +The [PX4 User Guide](https://docs.px4.io/master/en/) explains how to assemble [supported vehicles](https://docs.px4.io/master/en/airframes/airframe_reference.html) and fly drones with PX4.
27 +See the [forum and chat](https://docs.px4.io/master/en/#support) if you need help!
28 +
29 +
30 +## Changing code and contributing
31 +
32 +This [Developer Guide](https://docs.px4.io/master/en/development/development.html) is for software developers who want to modify the flight stack and middleware (e.g. to add new flight modes), hardware integrators who want to support new flight controller boards and peripherals, and anyone who wants to get PX4 working on a new (unsupported) airframe/vehicle.
33 +
34 +Developers should read the [Guide for Contributions](https://docs.px4.io/master/en/contribute/).
35 +See the [forum and chat](https://dev.px4.io/master/en/#support) if you need help!
36 +
37 +
38 +### Weekly Dev Call
39 +
40 +The PX4 Dev Team syncs up on a [weekly dev call](https://dev.px4.io/master/en/contribute/#dev_call).
41 +
42 +> **Note** The dev call is open to all interested developers (not just the core dev team). This is a great opportunity to meet the team and contribute to the ongoing development of the platform. It includes a QA session for newcomers. All regular calls are listed in the [Dronecode calendar](https://www.dronecode.org/calendar/).
43 +
44 +
45 +## Maintenance Team
46 +
47 + * Project: Founder
48 + * [Lorenz Meier](https://github.com/LorenzMeier)
49 + * Architecture
50 + * [Daniel Agar](https://github.com/dagar)
51 + * [Dev Call](https://github.com/PX4/PX4-Autopilot/labels/devcall)
52 + * [Ramon Roche](https://github.com/mrpollo)
53 + * Communication Architecture
54 + * [Beat Kueng](https://github.com/bkueng)
55 + * [Julian Oes](https://github.com/JulianOes)
56 + * UI in QGroundControl
57 + * [Gus Grubba](https://github.com/dogmaphobic)
58 + * [Multicopter Flight Control](https://github.com/PX4/PX4-Autopilot/labels/multicopter)
59 + * [Mathieu Bresciani](https://github.com/bresch)
60 + * [Multicopter Software Architecture](https://github.com/PX4/PX4-Autopilot/labels/multicopter)
61 + * [Matthias Grob](https://github.com/MaEtUgR)
62 + * [VTOL Flight Control](https://github.com/PX4/PX4-Autopilot/labels/vtol)
63 + * [Roman Bapst](https://github.com/RomanBapst)
64 + * [Fixed Wing Flight Control](https://github.com/PX4/PX4-Autopilot/labels/fixedwing)
65 + * [Roman Bapst](https://github.com/RomanBapst)
66 + * OS / NuttX
67 + * [David Sidrane](https://github.com/davids5)
68 + * Driver Architecture
69 + * [Daniel Agar](https://github.com/dagar)
70 + * Commander Architecture
71 + * [Julian Oes](https://github.com/julianoes)
72 + * [UAVCAN](https://github.com/PX4/PX4-Autopilot/labels/uavcan)
73 + * [Daniel Agar](https://github.com/dagar)
74 + * [State Estimation](https://github.com/PX4/PX4-Autopilot/issues?q=is%3Aopen+is%3Aissue+label%3A%22state+estimation%22)
75 + * [Paul Riseborough](https://github.com/priseborough)
76 + * Vision based navigation and Obstacle Avoidance
77 + * [Markus Achtelik](https://github.com/markusachtelik)
78 + * RTPS/ROS2 Interface
79 + * [Nuno Marques](https://github.com/TSC21)
80 +
81 +See also [maintainers list](https://px4.io/community/maintainers/) (px4.io) and the [contributors list](https://github.com/PX4/PX4-Autopilot/graphs/contributors) (Github).
82 +
83 +## Supported Hardware
84 +
85 +This repository contains code supporting Pixhawk standard boards (best supported, best tested, recommended choice) and proprietary boards.
86 +
87 +### Pixhawk Standard Boards
88 + * FMUv6X and FMUv6U (STM32H7, 2021)
89 + * Various vendors will provide FMUv6X and FMUv6U based designs Q3/2021
90 + * FMUv5 and FMUv5X (STM32F7, 2019/20)
91 + * [Pixhawk 4 (FMUv5)](https://docs.px4.io/master/en/flight_controller/pixhawk4.html)
92 + * [Pixhawk 4 mini (FMUv5)](https://docs.px4.io/master/en/flight_controller/pixhawk4_mini.html)
93 + * [CUAV V5+ (FMUv5)](https://docs.px4.io/master/en/flight_controller/cuav_v5_plus.html)
94 + * [CUAV V5 nano (FMUv5)](https://docs.px4.io/master/en/flight_controller/cuav_v5_nano.html)
95 + * [Auterion Skynode (FMUv5X)](https://docs.px4.io/master/en/flight_controller/auterion_skynode.html)
96 + * FMUv4 (STM32F4, 2015)
97 + * [Pixracer](https://docs.px4.io/master/en/flight_controller/pixracer.html)
98 + * [Pixhawk 3 Pro](https://docs.px4.io/master/en/flight_controller/pixhawk3_pro.html)
99 + * FMUv3 (STM32F4, 2014)
100 + * [Pixhawk 2](https://docs.px4.io/master/en/flight_controller/pixhawk-2.html)
101 + * [Pixhawk Mini](https://docs.px4.io/master/en/flight_controller/pixhawk_mini.html)
102 + * [CUAV Pixhack v3](https://docs.px4.io/master/en/flight_controller/pixhack_v3.html)
103 + * FMUv2 (STM32F4, 2013)
104 + * [Pixhawk](https://docs.px4.io/master/en/flight_controller/pixhawk.html)
105 + * [Pixfalcon](https://docs.px4.io/master/en/flight_controller/pixfalcon.html)
106 +
107 +### Manufacturer and Community supported
108 + * [Holybro Durandal](https://docs.px4.io/master/en/flight_controller/durandal.html)
109 + * [Hex Cube Orange](https://docs.px4.io/master/en/flight_controller/cubepilot_cube_orange.html)
110 + * [Hex Cube Yellow](https://docs.px4.io/master/en/flight_controller/cubepilot_cube_yellow.html)
111 + * [Airmind MindPX V2.8](http://www.mindpx.net/assets/accessories/UserGuide_MindPX.pdf)
112 + * [Airmind MindRacer V1.2](http://mindpx.net/assets/accessories/mindracer_user_guide_v1.2.pdf)
113 + * [Bitcraze Crazyflie 2.0](https://docs.px4.io/master/en/flight_controller/crazyflie2.html)
114 + * [Omnibus F4 SD](https://docs.px4.io/master/en/flight_controller/omnibus_f4_sd.html)
115 + * [Holybro Kakute F7](https://docs.px4.io/master/en/flight_controller/kakutef7.html)
116 + * [Raspberry PI with Navio 2](https://docs.px4.io/master/en/flight_controller/raspberry_pi_navio2.html)
117 +
118 +Additional information about supported hardware can be found in [PX4 user Guide > Autopilot Hardware](https://docs.px4.io/master/en/flight_controller/).
119 +
120 +## Project Roadmap
121 +
122 +A high level project roadmap is available [here](https://github.com/orgs/PX4/projects/25).
This diff is collapsed. Click to expand it.
1 +############################################################################
2 +#
3 +# Copyright (c) 2020 PX4 Development Team. All rights reserved.
4 +#
5 +# Redistribution and use in source and binary forms, with or without
6 +# modification, are permitted provided that the following conditions
7 +# are met:
8 +#
9 +# 1. Redistributions of source code must retain the above copyright
10 +# notice, this list of conditions and the following disclaimer.
11 +# 2. Redistributions in binary form must reproduce the above copyright
12 +# notice, this list of conditions and the following disclaimer in
13 +# the documentation and/or other materials provided with the
14 +# distribution.
15 +# 3. Neither the name PX4 nor the names of its contributors may be
16 +# used to endorse or promote products derived from this software
17 +# without specific prior written permission.
18 +#
19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26 +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 +# POSSIBILITY OF SUCH DAMAGE.
31 +#
32 +############################################################################
33 +
34 +add_subdirectory(init.d)
1 +############################################################################
2 +#
3 +# Copyright (c) 2020 PX4 Development Team. All rights reserved.
4 +#
5 +# Redistribution and use in source and binary forms, with or without
6 +# modification, are permitted provided that the following conditions
7 +# are met:
8 +#
9 +# 1. Redistributions of source code must retain the above copyright
10 +# notice, this list of conditions and the following disclaimer.
11 +# 2. Redistributions in binary form must reproduce the above copyright
12 +# notice, this list of conditions and the following disclaimer in
13 +# the documentation and/or other materials provided with the
14 +# distribution.
15 +# 3. Neither the name PX4 nor the names of its contributors may be
16 +# used to endorse or promote products derived from this software
17 +# without specific prior written permission.
18 +#
19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26 +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 +# POSSIBILITY OF SUCH DAMAGE.
31 +#
32 +############################################################################
33 +
34 +px4_add_romfs_files(
35 + rcS
36 +)
1 +#!/bin/sh
2 +# Un comment and use set +e to ignore and set -e to enable 'exit on error control'
3 +set +e
4 +# Un comment the line below to help debug scripts by printing a trace of the script commands
5 +#set -x
6 +# PX4FMU startup script.
7 +#
8 +# NOTE: environment variable references:
9 +# If the dollar sign ('$') is followed by a left bracket ('{') then the
10 +# variable name is terminated with the right bracket character ('}').
11 +# Otherwise, the variable name goes to the end of the argument.
12 +#
13 +#
14 +# NOTE: COMMENT LINES ARE REMOVED BEFORE STORED IN ROMFS.
15 +#
16 +#------------------------------------------------------------------------------
17 +set R /
18 +#
19 +# Mount the procfs.
20 +#
21 +mount -t procfs /proc
22 +
23 +#
24 +# Start CDC/ACM serial driver.
25 +#
26 +sercon
27 +
28 +#
29 +# Print full system version.
30 +#
31 +ver all
32 +
33 +if mft query -q -k MTD -s MTD_PARAMETERS -v /fs/mtd_params
34 +then
35 + set PARAM_FILE /fs/mtd_params
36 +fi
37 +
38 +if mft query -q -k MTD -s MTD_PARAMETERS -v /dev/eeeprom0
39 +then
40 + set PARAM_FILE /dev/eeeprom0
41 +fi
42 +
43 +#
44 +# Load parameters.
45 +#
46 +param select $PARAM_FILE
47 +if ! param load
48 +then
49 + param reset_all
50 +fi
51 +
52 +#
53 +# Optional board architecture defaults: rc.board_arch_defaults
54 +#
55 +set BOARD_ARCH_RC_DEFAULTS ${R}etc/init.d/rc.board_arch_defaults
56 +if [ -f $BOARD_ARCH_RC_DEFAULTS ]
57 +then
58 + echo "Board architecture defaults: ${BOARD_ARCH_RC_DEFAULTS}"
59 + . $BOARD_ARCH_RC_DEFAULTS
60 +fi
61 +unset BOARD_ARCH_RC_DEFAULTS
62 +
63 +#
64 +# Optional board defaults: rc.board_defaults
65 +#
66 +set BOARD_RC_DEFAULTS ${R}etc/init.d/rc.board_defaults
67 +if [ -f $BOARD_RC_DEFAULTS ]
68 +then
69 + echo "Board defaults: ${BOARD_RC_DEFAULTS}"
70 + . $BOARD_RC_DEFAULTS
71 +fi
72 +unset BOARD_RC_DEFAULTS
73 +
74 +#
75 +# Start system state indicator.
76 +#
77 +rgbled start -X -q
78 +rgbled_ncp5623c start -X -q
79 +
80 +#
81 +# board sensors: rc.sensors
82 +#
83 +set BOARD_RC_SENSORS ${R}etc/init.d/rc.board_sensors
84 +if [ -f $BOARD_RC_SENSORS ]
85 +then
86 + echo "Board sensors: ${BOARD_RC_SENSORS}"
87 + . $BOARD_RC_SENSORS
88 +fi
89 +unset BOARD_RC_SENSORS
90 +
91 +#
92 +# Start UART/Serial device drivers.
93 +# Note: rc.serial is auto-generated from Tools/serial/generate_config.py
94 +#
95 +. ${R}etc/init.d/rc.serial
96 +
97 +# Check for flow sensor
98 +if param compare SENS_EN_PX4FLOW 1
99 +then
100 + px4flow start -X
101 +fi
102 +
103 +uavcannode start
104 +unset R
1 +############################################################################
2 +#
3 +# Copyright (c) 2018 PX4 Development Team. All rights reserved.
4 +#
5 +# Redistribution and use in source and binary forms, with or without
6 +# modification, are permitted provided that the following conditions
7 +# are met:
8 +#
9 +# 1. Redistributions of source code must retain the above copyright
10 +# notice, this list of conditions and the following disclaimer.
11 +# 2. Redistributions in binary form must reproduce the above copyright
12 +# notice, this list of conditions and the following disclaimer in
13 +# the documentation and/or other materials provided with the
14 +# distribution.
15 +# 3. Neither the name PX4 nor the names of its contributors may be
16 +# used to endorse or promote products derived from this software
17 +# without specific prior written permission.
18 +#
19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26 +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 +# POSSIBILITY OF SUCH DAMAGE.
31 +#
32 +############################################################################
33 +
34 +add_subdirectory(init.d)
35 +add_subdirectory(mixers)
36 +# TODO: make this configurable from the board config, or better combine
37 +if("${PX4_BOARD}" MATCHES "sitl")
38 + add_subdirectory(mixers-sitl)
39 + add_subdirectory(init.d-posix)
40 +endif()
1 +############################################################################
2 +#
3 +# Copyright (c) 2020 PX4 Development Team. All rights reserved.
4 +#
5 +# Redistribution and use in source and binary forms, with or without
6 +# modification, are permitted provided that the following conditions
7 +# are met:
8 +#
9 +# 1. Redistributions of source code must retain the above copyright
10 +# notice, this list of conditions and the following disclaimer.
11 +# 2. Redistributions in binary form must reproduce the above copyright
12 +# notice, this list of conditions and the following disclaimer in
13 +# the documentation and/or other materials provided with the
14 +# distribution.
15 +# 3. Neither the name PX4 nor the names of its contributors may be
16 +# used to endorse or promote products derived from this software
17 +# without specific prior written permission.
18 +#
19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26 +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 +# POSSIBILITY OF SUCH DAMAGE.
31 +#
32 +############################################################################
33 +
34 +add_subdirectory(airframes)
35 +
36 +px4_add_romfs_files(
37 + px4-rc.params
38 + px4-rc.simulator
39 + px4-rc.mavlink
40 + rc.replay
41 + rcS
42 +)
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +# @maintainer Julian Oes <julian@oes.ch>
8 +#
9 +
10 +. ${R}etc/init.d/rc.mc_defaults
11 +
12 +set MIXER quad_w
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +# @maintainer Julian Oes <julian@oes.ch>
8 +#
9 +
10 +. ${R}etc/init.d/rc.mc_defaults
11 +. ${R}etc/init.d/rc.ctrlalloc
12 +
13 +param set-default MPC_USE_HTE 0
14 +
15 +param set-default VM_MASS 1.5
16 +param set-default VM_INERTIA_XX 0.03
17 +param set-default VM_INERTIA_YY 0.03
18 +param set-default VM_INERTIA_ZZ 0.05
19 +
20 +param set-default CA_AIRFRAME 0
21 +param set-default CA_METHOD 1
22 +param set-default CA_ACT0_MIN 0.0
23 +param set-default CA_ACT1_MIN 0.0
24 +param set-default CA_ACT2_MIN 0.0
25 +param set-default CA_ACT3_MIN 0.0
26 +param set-default CA_ACT0_MAX 1.0
27 +param set-default CA_ACT1_MAX 1.0
28 +param set-default CA_ACT2_MAX 1.0
29 +param set-default CA_ACT3_MAX 1.0
30 +
31 +param set-default CA_MC_R0_PX 0.1515
32 +param set-default CA_MC_R0_PY 0.245
33 +param set-default CA_MC_R0_CT 6.5
34 +param set-default CA_MC_R0_KM 0.05
35 +param set-default CA_MC_R1_PX -0.1515
36 +param set-default CA_MC_R1_PY -0.1875
37 +param set-default CA_MC_R1_CT 6.5
38 +param set-default CA_MC_R1_KM 0.05
39 +param set-default CA_MC_R2_PX 0.1515
40 +param set-default CA_MC_R2_PY -0.245
41 +param set-default CA_MC_R2_CT 6.5
42 +param set-default CA_MC_R2_KM -0.05
43 +param set-default CA_MC_R3_PX -0.1515
44 +param set-default CA_MC_R3_PY 0.1875
45 +param set-default CA_MC_R3_CT 6.5
46 +param set-default CA_MC_R3_KM -0.05
47 +
48 +set MIXER direct
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (foggy_lidar)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +param set-default EKF2_RNG_AID 1
11 +param set-default EKF2_RNG_A_HMAX 10
12 +
1 +#!/bin/sh
2 +#
3 +# @name IF750A SITL
4 +# InspiredFlight 750 Auterion edition. Gazebo Only.
5 +#
6 +# @type Quadrotor
7 +#
8 +
9 +. ${R}etc/init.d/rc.mc_defaults
10 +
11 +# EKF2: Multi GPS blending (as the model has 2 GPS's)
12 +param set-default SENS_GPS_MASK 7
13 +param set-default TRIG_INTERFACE 3
14 +param set-default TRIG_MODE 4
15 +param set-default MNT_MODE_IN 4
16 +param set-default MNT_MODE_OUT 2
17 +param set-default MNT_DO_STAB 2
18 +
19 +set MIXER quad_x
1 +#!/bin/sh
2 +#
3 +# @name PX4Vision SITL
4 +# Holybro px4vision. Gazebo Only.
5 +#
6 +# @type Quadrotor
7 +#
8 +
9 +. ${R}etc/init.d/airframes/4016_holybro_px4vision
10 +
11 +set MIXER quad_x
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (Optical Flow)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +# EKF2
11 +param set-default EKF2_AID_MASK 2
12 +param set-default EKF2_EVP_NOISE 0.05
13 +param set-default EKF2_EVA_NOISE 0.05
14 +
15 +# LPE: Flow-only mode
16 +param set-default LPE_FUSION 242
17 +param set-default LPE_FAKE_ORIGIN 1
18 +
19 +param set-default MPC_ALT_MODE 2
20 +
1 +
2 +# shellcheck disable=SC2154
3 +mavlink stream -r 50 -s DISTANCE_SENSOR -u $udp_gcs_port_local
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (irlock)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +# enable fusion of landing target velocity
11 +param set-default LTEST_MODE 1
12 +param set-default PLD_HACC_RAD 0.1
13 +
14 +# Start up Landing Target Estimator module
15 +landing_target_estimator start
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (rplidar)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +param set-default LPE_FUSION 242
11 +
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (Vision)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +# EKF2: Vision position and heading
11 +param set-default EKF2_AID_MASK 24
12 +param set-default EKF2_EV_DELAY 5
13 +
14 +# LPE: Vision + baro
15 +param set-default LPE_FUSION 132
16 +
17 +# AEQ: External heading set to use vision input
18 +param set-default ATT_EXT_HDG_M 1
19 +
1 +
2 +# shellcheck disable=SC2154
3 +mavlink stream -r 30 -s ODOMETRY -u $udp_gcs_port_local
1 +#!/bin/sh
2 +#
3 +# @name Solo
4 +#
5 +# @type Quadrotor
6 +#
7 +
8 +. ${R}etc/init.d/rc.mc_defaults
9 +
10 +param set-default MC_PITCHRATE_P 0.1
11 +param set-default MC_ROLLRATE_P 0.1
12 +
13 +set MIXER quad_x
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (Obstacle Avoidance)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +param set-default COM_OBS_AVOID 1
11 +param set-default MPC_XY_CRUISE 5.0
12 +
1 +# shellcheck disable=SC2154
2 +mavlink start -x -u 14558 -r 4000000 -m onboard -o 14541 -p # add mavlink stream for SDK
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (RTPS)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
1 +#!/bin/sh
2 +# shellcheck disable=SC2154
3 +
4 +micrortps_client start -t UDP -r $((2019+2*px4_instance)) -s $((2020+2*px4_instance))
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (Optical Flow)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +# EKF2
11 +param set-default EKF2_AID_MASK 2
12 +param set-default SENS_FLOW_ROT 0
13 +
14 +# LPE: Flow-only mode
15 +param set-default LPE_FUSION 242
16 +param set-default LPE_FAKE_ORIGIN 1
17 +
18 +param set-default MPC_ALT_MODE 2
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (Vision Velocity)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +# EKF2: Vision velocity and heading
11 +param set-default EKF2_AID_MASK 272
12 +param set-default EKF2_EV_DELAY 5
1 +#!/bin/sh
2 +#
3 +# @name 3DR Iris Quadrotor SITL (Dual GPS)
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +
8 +. ${R}etc/init.d-posix/airframes/10016_iris
9 +
10 +# EKF2: Multi GPS blending
11 +param set-default SENS_GPS_MASK 7
1 +#!/bin/sh
2 +#
3 +# @name UUV
4 +#
5 +
6 +. ${R}etc/init.d/rc.uuv_defaults
7 +
8 +#Set data link loss failsafe mode (0: disabled)
9 +param set-default NAV_DLL_ACT 0
10 +
11 +# disable circuit breaker for airspeed sensor
12 +param set-default CBRK_AIRSPD_CHK 162128
13 +
14 +#param set CBRK_GPSFAIL 240024
15 +
16 +set MAV_TYPE 12
17 +param set MAV_TYPE ${MAV_TYPE}
18 +
19 +set MIXER_FILE etc/mixers-sitl/uuv_x_sitl.main.mix
20 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Hippocampus UUV
4 +#
5 +
6 +. ${R}etc/init.d/rc.uuv_defaults
7 +
8 +#Set data link loss failsafe mode (0: disabled)
9 +param set-default NAV_DLL_ACT 0
10 +
11 +# disable circuit breaker for airspeed sensor
12 +param set-default CBRK_AIRSPD_CHK 162128
13 +
14 +#param set CBRK_GPSFAIL 240024
15 +
16 +set MAV_TYPE 12
17 +param set MAV_TYPE ${MAV_TYPE}
18 +
19 +set MIXER_FILE etc/mixers-sitl/uuv_x_sitl.main.mix
20 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name BlueROV2 Heavy Configuration
4 +#
5 +
6 +. ${R}etc/init.d/rc.uuv_defaults
7 +
8 +#Set data link loss failsafe mode (0: disabled)
9 +param set-default NAV_DLL_ACT 0
10 +
11 +# disable circuit breaker for airspeed sensor
12 +param set-default CBRK_AIRSPD_CHK 162128
13 +
14 +set PWM_OUT 12345678
15 +set MIXER_FILE etc/mixers-sitl/vectored6dof_sitl.main.mix
16 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL
4 +#
5 +
6 +. ${R}etc/init.d/rc.fw_defaults
7 +
8 +param set-default EKF2_ARSP_THR 8
9 +param set-default EKF2_FUSE_BETA 1
10 +param set-default EKF2_MAG_ACCLIM 0
11 +param set-default EKF2_MAG_YAWLIM 0
12 +
13 +param set-default FW_LND_AIRSPD_SC 1
14 +param set-default FW_LND_ANG 8
15 +param set-default FW_THR_LND_MAX 0
16 +
17 +param set-default FW_L1_PERIOD 12
18 +
19 +param set-default FW_MAN_P_MAX 30
20 +
21 +param set-default FW_PR_I 0.4
22 +param set-default FW_PR_P 0.9
23 +param set-default FW_PR_FF 0.2
24 +param set-default FW_PSP_OFF 2
25 +param set-default FW_P_LIM_MAX 32
26 +param set-default FW_P_LIM_MIN -15
27 +
28 +param set-default FW_RR_FF 0.1
29 +param set-default FW_RR_P 0.3
30 +
31 +param set-default FW_THR_MAX 0.6
32 +param set-default FW_THR_MIN 0.05
33 +param set-default FW_THR_CRUISE 0.25
34 +
35 +param set-default FW_T_ALT_TC 2
36 +param set-default FW_T_CLMB_MAX 8
37 +param set-default FW_T_HRATE_FF 0.5
38 +param set-default FW_T_SINK_MAX 2.7
39 +param set-default FW_T_SINK_MIN 2.2
40 +param set-default FW_T_TAS_TC 2
41 +
42 +param set-default FW_W_EN 1
43 +
44 +param set-default MIS_LTRMIN_ALT 30
45 +param set-default MIS_TAKEOFF_ALT 30
46 +
47 +param set-default NAV_ACC_RAD 15
48 +param set-default NAV_DLL_ACT 2
49 +param set-default NAV_LOITER_RAD 50
50 +
51 +param set-default RWTO_TKOFF 1
52 +
53 +set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
54 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL with camera
4 +#
5 +
6 +. ${R}etc/init.d-posix/airframes/1030_plane
7 +
8 +# Camera trigger interface is MAVLink
9 +param set-default TRIG_INTERFACE 3
10 +
11 +# Distance trigger mode enabled
12 +param set-default TRIG_MODE 4
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL with catapult
4 +#
5 +
6 +. ${R}etc/init.d-posix/airframes/1030_plane
7 +
8 +param set-default RWTO_TKOFF 0
9 +
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL with downward facing LIDAR.
4 +#
5 +
6 +. ${R}etc/init.d-posix/airframes/1030_plane
7 +
8 +param set-default FW_LND_USETER 1
9 +
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL
4 +#
5 +
6 +. ${R}etc/init.d/rc.fw_defaults
7 +
8 +param set-default EKF2_ARSP_THR 8
9 +param set-default EKF2_FUSE_BETA 1
10 +
11 +param set-default FW_LND_AIRSPD_SC 1.1
12 +param set-default FW_LND_ANG 5
13 +param set-default FW_THR_LND_MAX 0
14 +param set-default FW_LND_HHDIST 30
15 +param set-default FW_LND_FL_PMIN 9.5
16 +param set-default FW_LND_FL_PMAX 20
17 +param set-default FW_LND_FLALT 5
18 +param set-default FW_LND_TLALT 15
19 +
20 +param set-default FW_L1_PERIOD 25
21 +
22 +param set-default FW_P_TC 0.4
23 +param set-default FW_PR_FF 0.40
24 +param set-default FW_PR_I 0.05
25 +param set-default FW_PR_P 0.05
26 +
27 +param set-default FW_R_TC 0.45
28 +param set-default FW_RR_FF 0.40
29 +param set-default FW_RR_I 0.132
30 +param set-default FW_RR_P 0.085
31 +
32 +param set-default FW_W_EN 1
33 +
34 +param set-default MIS_LTRMIN_ALT 30
35 +param set-default MIS_TAKEOFF_ALT 20
36 +param set-default MIS_DIST_1WP 2500
37 +param set-default MIS_DIST_WPS 10000
38 +
39 +param set-default NAV_ACC_RAD 15
40 +param set-default NAV_DLL_ACT 2
41 +param set-default NAV_LOITER_RAD 50
42 +
43 +param set-default RWTO_TKOFF 1
44 +
45 +# fix takeoff failure for JSBsim in autonomous mission mode.
46 +#param set FW_THR_SLEW_MAX 0.3
47 +
48 +param set-default RWTO_MAX_PITCH 20
49 +param set-default RWTO_MAX_ROLL 10
50 +
51 +# fix takeoff failure for JSBsim in autonomous mission mode.
52 +#param set-default RWTO_MAX_THR 0.6
53 +
54 +param set-default RWTO_PSP 8
55 +param set-default RWTO_AIRSPD_SCL 1.8
56 +
57 +
58 +set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
59 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL
4 +#
5 +
6 +. ${R}etc/init.d/rc.fw_defaults
7 +
8 +param set-default EKF2_ARSP_THR 8
9 +param set-default EKF2_FUSE_BETA 1
10 +
11 +param set-default FW_LND_AIRSPD_SC 1.1
12 +param set-default FW_LND_ANG 5
13 +param set-default FW_THR_LND_MAX 0
14 +param set-default FW_LND_HHDIST 30
15 +param set-default FW_LND_FL_PMIN 9.5
16 +param set-default FW_LND_FL_PMAX 20
17 +param set-default FW_LND_FLALT 5
18 +param set-default FW_LND_TLALT 15
19 +
20 +param set-default FW_L1_PERIOD 25
21 +
22 +param set-default FW_P_TC 0.4
23 +param set-default FW_PR_FF 0.40
24 +param set-default FW_PR_I 0.05
25 +param set-default FW_PR_P 0.05
26 +
27 +param set-default FW_R_TC 0.45
28 +param set-default FW_RR_FF 0.40
29 +param set-default FW_RR_I 0.132
30 +param set-default FW_RR_P 0.085
31 +
32 +param set-default FW_W_EN 1
33 +
34 +param set-default MIS_LTRMIN_ALT 30
35 +param set-default MIS_TAKEOFF_ALT 20
36 +param set-default MIS_DIST_1WP 2500
37 +param set-default MIS_DIST_WPS 10000
38 +
39 +param set-default NAV_ACC_RAD 15
40 +param set-default NAV_DLL_ACT 2
41 +param set-default NAV_LOITER_RAD 50
42 +
43 +param set-default RWTO_TKOFF 1
44 +
45 +# fix takeoff failure for JSBsim in autonomous mission mode.
46 +#param set FW_THR_SLEW_MAX 0.3
47 +
48 +param set-default RWTO_MAX_PITCH 20
49 +param set-default RWTO_MAX_ROLL 10
50 +
51 +# fix takeoff failure for JSBsim in autonomous mission mode.
52 +#param set RWTO_MAX_THR 0.6
53 +
54 +param set-default RWTO_PSP 8
55 +param set-default RWTO_AIRSPD_SCL 1.8
56 +
57 +set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
58 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL
4 +#
5 +
6 +. ${R}etc/init.d/rc.fw_defaults
7 +
8 +param set-default EKF2_ARSP_THR 8
9 +param set-default EKF2_FUSE_BETA 1
10 +param set-default EKF2_MAG_ACCLIM 0
11 +param set-default EKF2_MAG_YAWLIM 0
12 +
13 +param set-default FW_LND_AIRSPD_SC 1
14 +param set-default FW_LND_ANG 8
15 +param set-default FW_THR_LND_MAX 0
16 +
17 +param set-default FW_L1_PERIOD 15
18 +
19 +param set-default FW_P_TC 0.5
20 +param set-default FW_PR_FF 0.40
21 +param set-default FW_PR_I 0.05
22 +param set-default FW_PR_P 0.05
23 +
24 +param set-default FW_R_TC 0.7
25 +param set-default FW_RR_FF 0.20
26 +param set-default FW_RR_I 0.02
27 +param set-default FW_RR_P 0.22
28 +
29 +param set-default FW_L1_PERIOD 12
30 +
31 +param set-default FW_W_EN 1
32 +
33 +param set-default MIS_LTRMIN_ALT 30
34 +param set-default MIS_TAKEOFF_ALT 30
35 +
36 +param set-default NAV_ACC_RAD 15
37 +param set-default NAV_DLL_ACT 2
38 +param set-default NAV_LOITER_RAD 50
39 +
40 +param set-default RWTO_TKOFF 1
41 +
42 +set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
43 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Plane SITL
4 +#
5 +
6 +. ${R}etc/init.d/rc.fw_defaults
7 +
8 +param set-default EKF2_ARSP_THR 8
9 +param set-default EKF2_FUSE_BETA 1
10 +
11 +param set-default FW_LND_AIRSPD_SC 1.1
12 +param set-default FW_LND_ANG 5
13 +param set-default FW_THR_LND_MAX 0
14 +param set-default FW_LND_HHDIST 30
15 +param set-default FW_LND_FL_PMIN 9.5
16 +param set-default FW_LND_FL_PMAX 20
17 +param set-default FW_LND_FLALT 5
18 +param set-default FW_LND_TLALT 15
19 +
20 +param set-default FW_L1_PERIOD 25
21 +
22 +param set-default FW_P_TC 0.4
23 +param set-default FW_PR_FF 0.40
24 +param set-default FW_PR_I 0.05
25 +param set-default FW_PR_P 0.05
26 +
27 +param set-default FW_R_TC 0.45
28 +param set-default FW_RR_FF 0.40
29 +param set-default FW_RR_I 0.132
30 +param set-default FW_RR_P 0.085
31 +
32 +param set-default FW_W_EN 1
33 +
34 +param set-default MIS_LTRMIN_ALT 30
35 +param set-default MIS_TAKEOFF_ALT 20
36 +param set-default MIS_DIST_1WP 2500
37 +param set-default MIS_DIST_WPS 10000
38 +
39 +param set-default NAV_ACC_RAD 15
40 +param set-default NAV_DLL_ACT 2
41 +param set-default NAV_LOITER_RAD 50
42 +
43 +param set-default RWTO_TKOFF 1
44 +param set-default RWTO_MAX_PITCH 20
45 +param set-default RWTO_MAX_ROLL 10
46 +param set-default RWTO_PSP 8
47 +param set-default RWTO_AIRSPD_SCL 1.8
48 +
49 +set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
50 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Standard VTOL
4 +#
5 +# @type Standard VTOL
6 +#
7 +
8 +. ${R}etc/init.d/rc.vtol_defaults
9 +
10 +param set-default FW_L1_PERIOD 12
11 +param set-default FW_MAN_P_MAX 30
12 +param set-default FW_PR_FF 0.2
13 +param set-default FW_PR_I 0.4
14 +param set-default FW_PR_P 0.9
15 +param set-default FW_PSP_OFF 2
16 +param set-default FW_P_LIM_MAX 32
17 +param set-default FW_P_LIM_MIN -15
18 +param set-default FW_RR_FF 0.1
19 +param set-default FW_RR_P 0.3
20 +param set-default FW_THR_CRUISE 0.25
21 +param set-default FW_THR_MAX 0.6
22 +param set-default FW_THR_MIN 0.05
23 +param set-default FW_T_ALT_TC 2
24 +param set-default FW_T_CLMB_MAX 8
25 +param set-default FW_T_HRATE_FF 0.5
26 +param set-default FW_T_SINK_MAX 2.7
27 +param set-default FW_T_SINK_MIN 2.2
28 +param set-default FW_T_TAS_TC 2
29 +
30 +param set-default MC_ROLLRATE_P 0.3
31 +param set-default MC_YAW_P 1.6
32 +
33 +param set-default MIS_TAKEOFF_ALT 10
34 +
35 +param set-default MPC_ACC_HOR_MAX 2
36 +param set-default MPC_XY_P 0.8
37 +param set-default MPC_XY_VEL_P_ACC 3
38 +param set-default MPC_XY_VEL_I_ACC 4
39 +param set-default MPC_XY_VEL_D_ACC 0.1
40 +
41 +param set-default NAV_ACC_RAD 5
42 +param set-default NAV_LOITER_RAD 80
43 +
44 +param set-default VT_FWD_THRUST_EN 4
45 +param set-default VT_F_TRANS_THR 0.75
46 +param set-default VT_MOT_ID 1234
47 +param set-default VT_FW_MOT_OFFID 1234
48 +param set-default VT_B_TRANS_DUR 8
49 +param set-default VT_TYPE 2
50 +
51 +set MAV_TYPE 22
52 +
53 +set MIXER_FILE etc/mixers-sitl/standard_vtol_sitl.main.mix
54 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Quadrotor + Tailsitter
4 +#
5 +# @type VTOL Quad Tailsitter
6 +#
7 +
8 +. ${R}etc/init.d/rc.vtol_defaults
9 +
10 +param set-default FW_L1_PERIOD 12
11 +param set-default FW_MAN_P_MAX 30
12 +param set-default FW_PR_I 0.2
13 +param set-default FW_PR_P 0.3
14 +param set-default FW_PSP_OFF 2
15 +param set-default FW_P_LIM_MAX 32
16 +param set-default FW_P_LIM_MIN -15
17 +param set-default FW_RR_P 0.3
18 +param set-default FW_THR_CRUISE 0.33
19 +param set-default FW_THR_MAX 0.6
20 +param set-default FW_THR_MIN 0.05
21 +param set-default FW_T_ALT_TC 2
22 +param set-default FW_T_CLMB_MAX 8
23 +param set-default FW_T_HRATE_FF 0.5
24 +param set-default FW_T_SINK_MAX 2.7
25 +param set-default FW_T_SINK_MIN 2.2
26 +param set-default FW_T_TAS_TC 2
27 +
28 +param set-default MC_ROLLRATE_P 0.3
29 +
30 +param set-default MPC_ACC_HOR_MAX 2
31 +param set-default MPC_XY_P 0.8
32 +param set-default MPC_XY_VEL_P_ACC 3
33 +param set-default MPC_XY_VEL_I_ACC 4
34 +param set-default MPC_XY_VEL_D_ACC 0.1
35 +
36 +param set-default NAV_ACC_RAD 5
37 +param set-default NAV_LOITER_RAD 80
38 +
39 +param set-default VT_F_TRANS_DUR 1.5
40 +param set-default VT_F_TRANS_THR 0.7
41 +param set-default VT_TYPE 0
42 +
43 +param set-default WV_EN 0
44 +
45 +set MAV_TYPE 20
46 +
47 +set MIXER_FILE etc/mixers-sitl/quad_x_vtol.main.mix
48 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name VTOL Tiltrotor
4 +#
5 +# @type VTOL Tiltrotor
6 +#
7 +
8 +. ${R}etc/init.d/rc.vtol_defaults
9 +
10 +param set-default FW_L1_PERIOD 12
11 +param set-default FW_MAN_P_MAX 30
12 +param set-default FW_PR_FF 0.2
13 +param set-default FW_PR_I 0.4
14 +param set-default FW_PR_P 0.9
15 +param set-default FW_PSP_OFF 2
16 +param set-default FW_P_LIM_MAX 32
17 +param set-default FW_P_LIM_MIN -15
18 +param set-default FW_RR_FF 0.1
19 +param set-default FW_RR_P 0.3
20 +param set-default FW_THR_CRUISE 0.38
21 +param set-default FW_THR_MAX 0.6
22 +param set-default FW_THR_MIN 0.05
23 +param set-default FW_T_ALT_TC 2
24 +param set-default FW_T_CLMB_MAX 8
25 +param set-default FW_T_HRATE_FF 0.5
26 +param set-default FW_T_SINK_MAX 2.7
27 +param set-default FW_T_SINK_MIN 2.2
28 +param set-default FW_T_TAS_TC 2
29 +
30 +param set-default MC_YAW_P 1.6
31 +
32 +param set-default MIS_TAKEOFF_ALT 10
33 +
34 +param set-default MPC_ACC_HOR_MAX 2
35 +param set-default MPC_XY_P 0.8
36 +param set-default MPC_XY_VEL_P_ACC 3
37 +param set-default MPC_XY_VEL_I_ACC 4
38 +param set-default MPC_XY_VEL_D_ACC 0.1
39 +
40 +param set-default NAV_ACC_RAD 5
41 +param set-default NAV_LOITER_RAD 80
42 +
43 +param set-default VT_B_TRANS_DUR 8
44 +param set-default VT_FWD_THRUST_EN 4
45 +param set-default VT_MOT_ID 1234
46 +param set-default VT_TILT_TRANS 0.6
47 +param set-default VT_TYPE 1
48 +
49 +set MAV_TYPE 21
50 +
51 +set MIXER_FILE etc/mixers-sitl/tiltrotor_sitl.main.mix
52 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Standard VTOL
4 +#
5 +# @type Standard VTOL
6 +#
7 +
8 +. ${R}etc/init.d/rc.vtol_defaults
9 +
10 +param set-default FW_L1_PERIOD 12
11 +param set-default FW_MAN_P_MAX 30
12 +param set-default FW_PR_FF 0.2
13 +param set-default FW_PR_I 0.4
14 +param set-default FW_PR_P 0.9
15 +param set-default FW_PSP_OFF 2
16 +param set-default FW_P_LIM_MAX 32
17 +param set-default FW_P_LIM_MIN -15
18 +param set-default FW_RR_FF 0.1
19 +param set-default FW_RR_P 0.3
20 +param set-default FW_THR_CRUISE 0.25
21 +param set-default FW_THR_MAX 0.6
22 +param set-default FW_THR_MIN 0.05
23 +param set-default FW_T_ALT_TC 2
24 +param set-default FW_T_CLMB_MAX 8
25 +param set-default FW_T_HRATE_FF 0.5
26 +param set-default FW_T_SINK_MAX 2.7
27 +param set-default FW_T_SINK_MIN 2.2
28 +param set-default FW_T_TAS_TC 2
29 +
30 +param set-default MC_ROLLRATE_P 0.3
31 +param set-default MC_YAW_P 1.6
32 +
33 +param set-default MIS_TAKEOFF_ALT 10
34 +
35 +param set-default MPC_ACC_HOR_MAX 2
36 +param set-default MPC_XY_P 0.8
37 +param set-default MPC_XY_VEL_P_ACC 3
38 +param set-default MPC_XY_VEL_I_ACC 4
39 +param set-default MPC_XY_VEL_D_ACC 0.1
40 +
41 +param set-default NAV_ACC_RAD 5
42 +param set-default NAV_LOITER_RAD 80
43 +
44 +param set-default VT_FWD_THRUST_EN 4
45 +param set-default VT_F_TRANS_THR 0.75
46 +param set-default VT_MOT_ID 1234
47 +param set-default VT_FW_MOT_OFFID 1234
48 +param set-default VT_B_TRANS_DUR 8
49 +param set-default VT_TYPE 2
50 +
51 +param set-default RC_MAP_AUX1 8
52 +param set-default RC_MAP_AUX2 9
53 +param set-default RC_MAP_AUX3 10
54 +
55 +set MAV_TYPE 22
56 +
57 +set MIXER_FILE etc/mixers-sitl/standard_vtol_sitl.main.mix
58 +set MIXER custom
1 +mixer append /dev/pwm_output0 etc/mixers-sitl/package_drop.aux.mix
1 +#!/bin/sh
2 +#
3 +# @name Rover
4 +#
5 +
6 +. ${R}etc/init.d/rc.rover_defaults
7 +
8 +param set-default GND_L1_DIST 5
9 +param set-default GND_L1_PERIOD 10
10 +param set-default GND_SP_CTRL_MODE 1
11 +param set-default GND_SPEED_D 0.001
12 +param set-default GND_SPEED_I 3
13 +param set-default GND_SPEED_IMAX 0.125
14 +param set-default GND_SPEED_P 0.25
15 +param set-default GND_SPEED_THR_SC 1
16 +param set-default GND_SPEED_TRIM 4
17 +param set-default GND_THR_CRUISE 0.3
18 +param set-default GND_THR_MAX 0.5
19 +param set-default GND_THR_MIN 0
20 +
21 +param set-default MIS_LTRMIN_ALT 0.01
22 +param set-default MIS_TAKEOFF_ALT 0.01
23 +param set-default NAV_ACC_RAD 0.5
24 +param set-default NAV_LOITER_RAD 2
25 +
26 +param set-default CBRK_AIRSPD_CHK 162128
27 +
28 +param set-default GND_MAX_ANG 0.6
29 +param set-default GND_WHEEL_BASE 2.0
30 +
31 +set MAV_TYPE 10
32 +
33 +set MIXER_FILE etc/mixers-sitl/rover_ackermann_sitl.main.mix
1 +#!/bin/sh
2 +#
3 +# @name Aion Robotics R1 Rover
4 +# @type Rover
5 +# @class Rover
6 +
7 +. ${R}etc/init.d/rc.rover_defaults
8 +
9 +param set-default GND_L1_DIST 5
10 +param set-default GND_SP_CTRL_MODE 1
11 +param set-default GND_SPEED_D 3
12 +param set-default GND_SPEED_I 0.001
13 +param set-default GND_SPEED_IMAX 0.125
14 +param set-default GND_SPEED_P 0.25
15 +param set-default GND_SPEED_THR_SC 1
16 +param set-default GND_SPEED_TRIM 4
17 +param set-default GND_THR_CRUISE 0.3
18 +param set-default GND_THR_MAX 0.5
19 +param set-default GND_THR_MIN 0
20 +
21 +param set-default MIS_LTRMIN_ALT 0.01
22 +param set-default MIS_TAKEOFF_ALT 0.01
23 +param set-default NAV_ACC_RAD 0.5
24 +param set-default NAV_LOITER_RAD 2
25 +
26 +param set-default CBRK_AIRSPD_CHK 162128
27 +
28 +param set-default GND_MAX_ANG 0.6
29 +param set-default GND_WHEEL_BASE 2.0
30 +
31 +set MAV_TYPE 10
32 +
33 +set MIXER_FILE etc/mixers-sitl/rover_diff_sitl.main.mix
1 +#!/bin/sh
2 +#
3 +# @name ThunderFly TF-R1 UAV Rover
4 +# @type Rover
5 +# @class Rover
6 +#
7 +# @url https://github.com/ThunderFly-aerospace/TF-R1/
8 +# @maintainer ThunderFly s.r.o.
9 +#
10 +
11 +. ${R}etc/init.d/rc.rover_defaults
12 +
13 +param set-default GND_L1_DIST 5
14 +param set-default GND_SP_CTRL_MODE 1
15 +param set-default GND_SPEED_D 3
16 +param set-default GND_SPEED_I 0.001
17 +param set-default GND_SPEED_IMAX 0.125
18 +param set-default GND_SPEED_P 0.25
19 +param set-default GND_SPEED_THR_SC 1
20 +param set-default GND_SPEED_TRIM 15
21 +param set-default GND_SPEED_MAX 25
22 +param set-default GND_THR_CRUISE 0.3
23 +param set-default GND_THR_MAX 0.5
24 +param set-default GND_THR_MIN 0
25 +
26 +param set-default MIS_LTRMIN_ALT 0.01
27 +param set-default MIS_TAKEOFF_ALT 0.01
28 +param set-default NAV_ACC_RAD 0.5
29 +param set-default NAV_LOITER_RAD 2
30 +
31 +param set-default CBRK_AIRSPD_CHK 162128
32 +
33 +param set-default GND_MAX_ANG 0.6
34 +param set-default GND_WHEEL_BASE 3.0
35 +
36 +set MAV_TYPE 10
37 +
38 +set MIXER_FILE etc/mixers-sitl/rover_ackermann_sitl.main.mix
1 +#!/bin/sh
2 +#
3 +# @name Boat
4 +#
5 +
6 +. ${R}etc/init.d/rc.boat_defaults
7 +
8 +param set-default GND_L1_DIST 5
9 +param set-default GND_L1_PERIOD 100
10 +param set-default GND_SP_CTRL_MODE 1
11 +param set-default GND_SPEED_D 0.001
12 +param set-default GND_SPEED_I 8
13 +param set-default GND_SPEED_IMAX 0.125
14 +param set-default GND_SPEED_P 2
15 +param set-default GND_SPEED_THR_SC 1
16 +param set-default GND_SPEED_TRIM 1
17 +param set-default GND_THR_CRUISE 0.85
18 +param set-default GND_THR_MAX 1
19 +param set-default GND_THR_MIN 0
20 +
21 +param set-default MIS_LTRMIN_ALT 0.01
22 +param set-default MIS_TAKEOFF_ALT 0.01
23 +param set-default NAV_ACC_RAD 0.5
24 +param set-default NAV_LOITER_RAD 2
25 +
26 +param set-default CBRK_AIRSPD_CHK 162128
27 +
28 +param set-default GND_MAX_ANG 0.6
29 +param set-default GND_WHEEL_BASE 2.0
30 +
31 +set MAV_TYPE 11
32 +
33 +set MIXER_FILE etc/mixers-sitl/boat_sitl.main.mix
1 +#!/bin/sh
2 +#
3 +# @name ThunderFly TF-G1
4 +# ThunderFly TF-G1 autogyro airframe. Only for FlightGear simulator
5 +#
6 +# @type Autogyro
7 +# @class Autogyro
8 +#
9 +# @url https://github.com/ThunderFly-aerospace/TF-G1/
10 +#
11 +#
12 +
13 +. ${R}etc/init.d/rc.fw_defaults
14 +
15 +param set-default EKF2_ARSP_THR 8
16 +param set-default EKF2_FUSE_BETA 1
17 +
18 +param set-default FW_AIRSPD_STALL 8
19 +
20 +param set-default FW_P_RMAX_NEG 20.0
21 +param set-default FW_P_RMAX_POS 60.0
22 +param set-default FW_W_RMAX 10
23 +param set-default FW_W_EN 1
24 +
25 +param set-default FW_PR_IMAX 0.4
26 +param set-default FW_R_TC 0.4
27 +param set-default FW_RR_FF 0.5
28 +param set-default FW_RR_I 0.1
29 +param set-default FW_RR_IMAX 0.2
30 +param set-default FW_RR_P 0.08
31 +
32 +param set-default MIS_LTRMIN_ALT 50
33 +param set-default MIS_TAKEOFF_ALT 3
34 +
35 +param set-default NAV_ACC_RAD 20
36 +param set-default NAV_DLL_ACT 2
37 +param set-default NAV_LOITER_RAD 100
38 +
39 +param set-default RWTO_TKOFF 1
40 +
41 +param set-default FW_ARSP_SCALE_EN 0
42 +
43 +param set-default FW_AIRSPD_MAX 35
44 +param set-default FW_AIRSPD_MIN 7
45 +param set-default FW_AIRSPD_TRIM 15
46 +
47 +param set-default FW_P_LIM_MAX 25
48 +param set-default FW_P_LIM_MIN -5
49 +param set-default FW_R_LIM 30
50 +
51 +param set-default FW_MAN_P_MAX 30.0
52 +param set-default FW_MAN_R_MAX 30.0
53 +
54 +param set-default FW_THR_CRUISE 0.8
55 +param set-default FW_THR_IDLE 0
56 +param set-default COM_DISARM_PRFLT 0
57 +
58 +set MIXER_FILE etc/mixers-sitl/autogyro_sitl.main.mix
59 +set MIXER custom
1 +#!/bin/sh
2 +#
3 +# @name Cloudship
4 +# @type Airship
5 +# @class Airship
6 +#
7 +# @output MAIN1 thrust tilt
8 +# @output MAIN2 starboard thruster
9 +# @output MAIN3 port thruster
10 +# @output MAIN4 tail thruster
11 +
12 +. ${R}etc/init.d/rc.airship_defaults
13 +
14 +set MIXER cloudship
15 +set PWM_OUT 1234
1 +#!/bin/sh
2 +#
3 +# @name Quadrotor SITL model for JSBSim
4 +#
5 +# @type Quadrotor Wide
6 +#
7 +# @maintainer Jaeyoung Lim <jaeyoung@auterion.com>
8 +#
9 +
10 +. ${R}etc/init.d/rc.mc_defaults
11 +
12 +set MIXER quad_w
1 +#!/bin/sh
2 +#
3 +# @name Hexacopter SITL model for JSBSim
4 +#
5 +# @type Hexarotor x
6 +#
7 +# @maintainer Jaeyoung Lim <jaeyoung@auterion.com>
8 +#
9 +
10 +. ${R}etc/init.d/rc.mc_defaults
11 +
12 +param set-default MC_PITCHRATE_P 0.1
13 +param set-default MC_PITCHRATE_I 0.05
14 +param set-default MC_PITCH_P 6.0
15 +param set-default MC_ROLLRATE_P 0.15
16 +param set-default MC_ROLLRATE_I 0.1
17 +param set-default MC_ROLL_P 6.0
18 +param set-default MPC_XY_VEL_I_ACC 4
19 +param set-default MPC_XY_VEL_P_ACC 3
20 +
21 +param set-default RTL_DESCEND_ALT 10
22 +
23 +param set-default TRIG_INTERFACE 3
24 +param set-default TRIG_MODE 4
25 +param set-default MNT_MODE_IN 4
26 +param set-default MNT_DO_STAB 2
27 +
28 +set MAV_TYPE 13
29 +
30 +set MIXER hexa_x
1 +#!/bin/sh
2 +#
3 +# @name Typhoon H480 SITL
4 +#
5 +# @type Hexarotor x
6 +#
7 +
8 +. ${R}etc/init.d/rc.mc_defaults
9 +
10 +param set-default MC_PITCHRATE_P 0.0800
11 +param set-default MC_PITCHRATE_I 0.0400
12 +param set-default MC_PITCHRATE_D 0.0010
13 +param set-default MC_PITCH_P 9.0
14 +param set-default MC_ROLLRATE_P 0.0800
15 +param set-default MC_ROLLRATE_I 0.0400
16 +param set-default MC_ROLLRATE_D 0.0010
17 +param set-default MC_ROLL_P 9.0
18 +param set-default MPC_XY_VEL_I_ACC 4
19 +param set-default MPC_XY_VEL_P_ACC 3
20 +
21 +param set-default RTL_DESCEND_ALT 10
22 +
23 +param set-default TRIG_INTERFACE 3
24 +param set-default TRIG_MODE 4
25 +param set-default MNT_MODE_IN 4
26 +param set-default MNT_MODE_OUT 2
27 +param set-default MAV_PROTO_VER 2
28 +
29 +set MAV_TYPE 13
30 +
31 +set MIXER hexa_x
1 +
2 +mixer append /dev/pwm_output0 etc/mixers/mount_legs.aux.mix
3 +
4 +mavlink start -x -u 14558 -r 4000 -f -m onboard -o 14530 -p
5 +
6 +# shellcheck disable=SC2154
7 +mavlink stream -r 10 -s MOUNT_ORIENTATION -u $udp_gcs_port_local
8 +# shellcheck disable=SC2154
9 +mavlink stream -r 50 -s ATTITUDE_QUATERNION -u $udp_offboard_port_local
10 +mavlink stream -r 10 -s MOUNT_ORIENTATION -u $udp_offboard_port_local
1 +#!/bin/sh
2 +#
3 +# @name Typhoon H480 SITL
4 +#
5 +# @type Hexarotor x
6 +#
7 +
8 +. ${R}etc/init.d/rc.mc_defaults
9 +. ${R}etc/init.d/rc.ctrlalloc
10 +
11 +param set-default MPC_XY_VEL_I_ACC 4
12 +param set-default MPC_XY_VEL_P_ACC 3
13 +
14 +param set-default RTL_DESCEND_ALT 10
15 +param set-default RTL_LAND_DELAY 0
16 +
17 +param set-default TRIG_INTERFACE 3
18 +param set-default TRIG_MODE 4
19 +param set-default MNT_MODE_IN 0
20 +param set-default MAV_PROTO_VER 2
21 +
22 +param set-default MPC_USE_HTE 0
23 +
24 +param set-default VM_MASS 2.66
25 +param set-default VM_INERTIA_XX 0.06
26 +param set-default VM_INERTIA_YY 0.06
27 +param set-default VM_INERTIA_ZZ 0.10
28 +
29 +param set-default CA_AIRFRAME 0
30 +param set-default CA_METHOD 1
31 +param set-default CA_ACT0_MIN 0.0
32 +param set-default CA_ACT1_MIN 0.0
33 +param set-default CA_ACT2_MIN 0.0
34 +param set-default CA_ACT3_MIN 0.0
35 +param set-default CA_ACT4_MIN 0.0
36 +param set-default CA_ACT5_MIN 0.0
37 +param set-default CA_ACT0_MAX 1.0
38 +param set-default CA_ACT1_MAX 1.0
39 +param set-default CA_ACT2_MAX 1.0
40 +param set-default CA_ACT3_MAX 1.0
41 +param set-default CA_ACT4_MAX 1.0
42 +param set-default CA_ACT5_MAX 1.0
43 +
44 +param set-default CA_MC_R0_PX 0.0
45 +param set-default CA_MC_R0_PY 1.0
46 +param set-default CA_MC_R0_CT 9.5
47 +param set-default CA_MC_R0_KM -0.05
48 +param set-default CA_MC_R1_PX 0.0
49 +param set-default CA_MC_R1_PY -1.0
50 +param set-default CA_MC_R1_CT 9.5
51 +param set-default CA_MC_R1_KM 0.05
52 +param set-default CA_MC_R2_PX 0.866025
53 +param set-default CA_MC_R2_PY -0.5
54 +param set-default CA_MC_R2_CT 9.5
55 +param set-default CA_MC_R2_KM -0.05
56 +param set-default CA_MC_R3_PX -0.866025
57 +param set-default CA_MC_R3_PY 0.5
58 +param set-default CA_MC_R3_CT 9.5
59 +param set-default CA_MC_R3_KM 0.05
60 +param set-default CA_MC_R4_PX 0.866025
61 +param set-default CA_MC_R4_PY 0.5
62 +param set-default CA_MC_R4_CT 9.5
63 +param set-default CA_MC_R4_KM 0.05
64 +param set-default CA_MC_R5_PX -0.866025
65 +param set-default CA_MC_R5_PY -0.5
66 +param set-default CA_MC_R5_CT 9.5
67 +param set-default CA_MC_R5_KM -0.05
68 +
69 +set MAV_TYPE 13
70 +
71 +# set MIXER hexa_x
72 +set MIXER direct
1 +
2 +mixer append /dev/pwm_output0 etc/mixers/mount_legs.aux.mix
3 +
4 +mavlink start -x -u 14558 -r 4000 -f -m onboard -o 14530 -p
5 +
6 +# shellcheck disable=SC2154
7 +mavlink stream -r 10 -s MOUNT_ORIENTATION -u $udp_gcs_port_local
8 +# shellcheck disable=SC2154
9 +mavlink stream -r 50 -s ATTITUDE_QUATERNION -u $udp_offboard_port_local
10 +mavlink stream -r 10 -s MOUNT_ORIENTATION -u $udp_offboard_port_local
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.