diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 5c9b071..7580a77 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -30,7 +30,10 @@ jobs: - name: Test with unittest run: | coverage run -m pytest - # coverage xml unittests/coverage.xml + coverage xml -o unittests/coverage.xml + + - name: List unittests directory contents + run: ls -la unittests/ - name: Get Cover uses: andraghetti/coverage@v3.2 diff --git a/.vscode/settings.json b/.vscode/settings.json index c3afa8e..f8e0982 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { + "grammarly.files.include": ["**/*.md", "**/*.txt", "**/*.json", "**/*.py"], "python.testing.cwd": "${workspaceFolder}/MethodicConfigurator", "python.testing.unittestArgs": [ "-v", @@ -8,5 +9,8 @@ "*_test.py" ], "python.testing.pytestEnabled": false, - "python.testing.unittestEnabled": true + "python.testing.unittestEnabled": true, + "cSpell.words": [ + "multicopter" + ] } \ No newline at end of file diff --git a/19_inflight_magnetometer_fit_setup.pdef.xml b/22_inflight_magnetometer_fit_setup.pdef.xml similarity index 100% rename from 19_inflight_magnetometer_fit_setup.pdef.xml rename to 22_inflight_magnetometer_fit_setup.pdef.xml diff --git a/BLOG-discuss1.md b/BLOG-discuss1.md new file mode 100644 index 0000000..5dd1efd --- /dev/null +++ b/BLOG-discuss1.md @@ -0,0 +1,889 @@ +![Cinewhoop Diatone Taycan MX-C|586x500](upload://naJEdzmLeF8hvzupJCpLBT7tZay.jpeg) + +For illustrative purposes, we will use the small 3'' multicopter depicted above, but the tuning sequence we developed at [IAV GmbH](https://www.iav.com/) will work on almost any other multicopter. + +This method uses the latest available [ArduPilot WebTools](https://firmware.ardupilot.org/Tools/WebTools/), some of the new features of ArduCopter 4.3 and above and best practices from the [Ardupilot Community](https://discuss.ardupilot.org/). +Sections 2.0 to 2.13 apply to **all ArduPilot vehicles**: ArduPlane, ArduRover, ArduBoat, ArduSub, ArduBlimp ... +We will detail the firmware parameters to change, the sequence of how to change them, help you to find the value for each parameter, explain which test flights to conduct and the order in which to conduct them and help you document all your steps for traceability. +This applies industry-proven [*software configuration management* (SCM)](https://en.wikipedia.org/wiki/Software_configuration_management) techniques to tuning an ArduCopter vehicle. + +You will be able to tune multiple vehicles (think production line) using this method and still have individual traceability of each parameter change on each vehicle. + +This post is divided into the following sections: + +1. Getting the hardware right +2. Proper initial configuration +3. First flight: Motor Thrust Hover and Harmonic Notch data collection +4. Second flight: PID VTOL-Quiktune or manual tune +5. Third flight: MagFit +6. Fourth flight: PID VTOL-Quiktune or manual tune (optional) +7. Fifth flight: Evaluate the aircraft tune - part 1 +8. Sixth flight: Evaluate the aircraft tune - part 2 +9. Autotune flight(s) +10. Performance evaluation flight +11. Windspeed Estimation flight(s) +12. Baro Compensation flight(s) +13. System Identification flights +14. Productive configuration +15. Position controller +16. Precision land +17. Guided operation without RC transmitter +18. Conclusion + +# 1. Getting the hardware right + +# 1.1 Rules of thumb for hardware requirements: + +1. **Robust frame construction:** A stable and rigid frame is crucial for stable and safe flight behavior. Carbon frames are recommended but not essential, and remember carbon is an electrical conductor. +2. **ESC telemetry:** Use only ESCs that provide at least RPM telemetry. It simplifies Notch filter tuning and improves its response-time and accuracy. +3. **Vibration reduction:** Vibrations reduce the efficiency, stability and lifespan of the drone. Propellers and motors are the source of most of the vibrations. All components must be securely fastened to minimize vibrations and avoid damage caused by vibrations. Stiff frames reduce vibrations. + - X and Y vibrations are caused by prop and/or motor imbalance - all propellers must be carefully balanced. + - Z vibrations are caused by the downwash of each blade hitting the arm and the forward traveling propeller hitting the oncoming air when moving. +4. **Protection of sensors from external disturbances:** + 1. **Vibration-damping mounting of the FC** + 1. **Separation of compass and high-current paths:** To reduce electromagnetic interference, it is recommended to spatially separate the compass (likely integrated with [GNSS](https://en.wikipedia.org/wiki/Satellite_navigation) receivers) from high-current paths and magnetic sources such as motors and power distribution systems/cables. Keep positive and negative wires close together using a gentile twist, brade or regularly spaced zip ties. + 1. **Protection of barometer from airflow:** The barometer must be protected from wind and airflow or turbulence generated by the propellers. A small piece of open-cell foam placed over the sensor acts as a low-pass filter, ensuring accurate altitude measurements. + 1. **GNSS systems are likely to be affected by USB3 devices.** Keep possible negative influences in mind while using USB3 components. +5. **Proper cable management:** Cables and wires must be organized sensibly to prevent entanglement or damage during flight. It must be ensured that no cables hinder movable parts such as propellers or gimbal mechanisms, or are damaged by them. Flexible, silicone-coated cables for data transfer save weight and reduce vibration transmission. Weak connectors are prone to loosening under the influence of vibration. +6. **Weight distribution:** An even weight distribution of the drone with the FC at the center of gravity improves stability and flight control. Components such as batteries, sensors, cameras, and other payloads must be positioned evenly to achieve uniform weight distribution and maximum fit between the geometric and physical center of gravity. +7. **Battery placement:** The battery is often located in the center of the frame to ensure stability during flight. It must be ensured that the battery is rigidly mounted and secured to prevent slipping or unintentional disconnection during operation. Additionally, when properly attached, the battery acts as an inertial mass and helps damp vibrations. Beware of landing directly on the battery since most of the batteries do have a resistant shell. +8. **Voltage monitoring:** to [dynamically scale the PIDs and maintain stable flight in low battery conditions](https://ardupilot.org/copter/docs/current-limiting-and-voltage-scaling.html#voltage-scaling). +9. **Current monitoring:** to compensate for the dynamic magnetic field caused by the high motor currents. +10. **FC Power supply:** Must provide enough current for the flight controller, [GNSS](https://en.wikipedia.org/wiki/Satellite_navigation) receivers and other payloads operating on 5V. +11. **Roll/Pitch/Yaw-Imbalance:** When mounting the motors on the arms, especially on round arms, make sure that all motors and propellers are perfectly level so that the thrust produced is directed straight down. Misaligned motors will cause the multicopter to drift. Depending on which motors are misaligned and their direction of misalignment, the multicopter drifts laterally forward, backward, left, right, or axially around the Z-axis, and efficiency is reduced accordingly. +12. **Helical GNSS antennas:** These kinds of antennas are the [preferred choice for drones and their benefits justify the extra cost](https://discuss.ardupilot.org/t/big-gps-round-up/67755). +13. **STM32 H7 processor family:** Flight controllers that use these processors, have enough processing power and memory to run ArduCopter firmware without restrictions. + +Use tools like [ecalc for multirotor](https://www.ecalc.ch/index.htm) to find a suitable set of components to meet your needs. + +![eCalc_(en)|690x452](upload://4Cr9chmzOG9ExayqfTzx4NZd1Go.png) + +## 1.2 Our vehicle + +With these requirements in mind, and for our specific application, we have selected the following components: + +| Type | Part | +|:---|:----| +|Frame | [Diatone Taycan MX-C](https://www.diatone.us/products/diatone-mxc-taycan-duct-3-inch-cinewhoop-fpv-drone) | +|Flight Controller | [Matek H743 SLIM V3](http://www.mateksys.com/?portfolio=h743-slim) | +|ESC | [T-Motor F45 4in1 ESC V2](https://store.tmotor.com/goods-899-F45A+6S+4IN1+V2+.html) | +|Motors | 4x [Diatone Mamba 1404 5000kv](https://www.diatone.us/products/mamba-toka-1404-3000kv-4000kv-racing-motor-green) | +|Propeller | 4x [HQProp 3018, 3-Blade](https://shop.rc-hangar15.de/HQProp-3018-Durable-3-3-Blatt-Propeller-TMount) | +|BEC with voltage/current monitor | [Holybro PM02 V3](https://holybro.com/products/pm02-v3-12s-power-module) | +|Battery | [SLS X-Cube 4S 1800mAh 40C/80C](https://www.stefansliposhop.de/akkus/sls-x-cube/sls-x-cube-40c/sls-x-cube-1800mah-4s1p-14-8v-40c-80c::1568.html) | +|GNSS receiver | [Holybro H-RTK F9P Helical](https://holybro.com/products/h-rtk-f9p-gnss-series?variant=41466787168445) | +|SDCard | Any FAT32 or exFAT formated fast Micro-SDCard > 8 GiB | +|RC Receiver | [TBS Crossfire Nano RX se](https://www.team-blacksheep.com/products/prod:crossfire_nano_se) | +|RC Transmitter | [Radiomaster TX16S](https://www.radiomasterrc.com/products/tx16s-mark-ii-radio-controller) with [EdgeTx](https://edgetx.org/) and [Yaapu scripts](https://github.com/yaapu/FrskyTelemetryScript/wiki/Passthrough-over-CRSF-and-ExpressLRS) | +| Remote ID transmitter | [Holybro Remote ID transmitter](https://holybro.com/products/remote-id) | + +We connected the components as depicted below. +The figure excludes the LiPo battery and the PM02 BEC with a voltage/current monitor. + +| Component | [Flight controller connections](http://www.mateksys.com/?portfolio=h743-slim#tab-id-5) | +|:---|:----| +|T-Motor F45 4in1 ESC V2 | `G`, `G`, `Vbat`, not Connected, `S4`, `S3`, `S2`, `S1`, `Cur`, `Rx8` (SERIAL5) | +|Holybro PM02 V3 | not connected, `G`, `Vbat2`, `Curr2`, not Connected, not Connected | +|Holybro H-RTK F9P Helical | `5V`, `Tx2`, `Rx2`, `CL1`, `DA1`, not connected, not connected, `3V3`, `Buzz`, `G` | +|TBS Crossfire Nano RX se | `G`, `5V`, `Rx6`, `Tx6` | + +![Matek H743, Holobro F9p, T-Motor F45 4in1 ESC and TBS Crossfire Nano rx se connections|578x500](upload://dMSerGHxlqAFoDD0IwumFx50QrJ.png) + +# 2. Proper initial configuration + +For reproducibility and quality purposes, we configure the vehicle with a well-defined sequence of intermediate parameter files. + +Each file modifies just a small set of the [over 1200 parameters on the flight controller](https://ardupilot.org/copter/docs/parameters.html). +By splitting the process into small manageable steps, we reduce the probability of making a mistake or missing a step and allow interleaving parameter changes with test flights. +Each intermediate parameter file is a text file, editable in any common text editor (excluding MS Word) like [Notepad++](https://notepad-plus-plus.org/), [nano](https://www.nano-editor.org/) or [code](https://code.visualstudio.com/). It contains the *official ArduPilot parameter documentation* in the form of comments in the lines preceding the parameter. By using this you save the time of looking up the online documentation for each parameter. +It contains the **reason why we changed the parameter** in a comment on the same line as the parameter and is used to trace each parameter change to the reason for that parameter change. + +Comments start with the '#' character. +A small example with a single parameter is shown below: + +```text + +# Arming with Rudder enable/disable +# Allow arm/disarm by rudder input. When enabled arming can be done with right rudder, disarming with left rudder. +# 0: Disabled +# 1: ArmingOnly +# 2: ArmOrDisarm +ARMING_RUDDER,0 # We find it safer to use only a switch to arm instead of through rudder inputs +``` + +If you are working with multiple vehicles, create a separate directory for each vehicle with a descriptive identifiable name. Copy the aprox. 40 *intermediate parameter files* into them. Edit the files to match the specific requirements of each vehicle. Now you have traceable documentation records for every parameter change on each of your vehicles. + +If you are in the business of manufacturing multicopters and maintain **high-quality standards that result in the production of multiple, nearly identical vehicles**, you can reuse most intermediate parameter files across these vehicles. Only three intermediate parameter files: `03_imu_temperature_calibration_results.param`, `11_mp_setup_mandatory_hardware.param` and `23_inflight_magnetometer_fit_results.param` are specific to each vehicle instance. All other intermediate parameter files can be used without modifications across all instances (or serial numbers) of the same product model. + +## 2.1 List of the software used in this process + +| Software | Version | Description | +|:----|:----|:----| +| [Mission Planner](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi) | latest beta | Ground control station (PC software) used for configuring and operating the vehicle | +| [ArduPilot Methodic Configurator](https://github.com/ArduPilot/MethodicConfigurator) | latest | A clear ArduPilot configuration sequence | +| [ArduCopter](https://firmware.ardupilot.org/Copter/stable/) | 4.4.4 or 4.5.1 | Flight controller firmware | +| [BLHeliSuite32](https://www.mediafire.com/file/fj1p9qlbzo5bl5g/BLHeliSuite32_32.9.0.6.zip/file) | 32.9.06 | PC software to flash and configure ESCs with BLHeli_32 ARM firmware | +| [BLHeli_32 ARM](https://github.com/bitdump/BLHeli/tree/master/BLHeli_32%20ARM) | 32.8 | ESC firmware with Bidir Dshot support | +| [EdgeTx companion](https://edgetx.org/getedgetx/) | 2.9.2 | PC software for configuring and updating EdgeTX based RC transmitters | +| [EdgeTx](https://edgetx.org/) | 2.9.2 | Radiomaster TX16S firmware with touch screen support | +| [Yaapu scripts](https://github.com/yaapu/FrskyTelemetryScript/wiki/Passthrough-over-CRSF-and-ExpressLRS) | 2023-11-08 | Display vehicle telemetry on the Radiomaster TX16S | +| Simple text editor: [Notepad++](https://notepad-plus-plus.org/), [nano](https://www.nano-editor.org/) or [code](https://code.visualstudio.com/) | any | Allows editing plain text files without undesired text changes. Do not use microsoft word! | +| [python](https://www.python.org/downloads/) | >= 3.8 | Python interpreter used to run automation scripts | +| [MAVExplorer](https://ardupilot.org/dev/docs/using-mavexplorer-for-log-analysis.html) | latest | Analyze dataflash (`.bin`) log files | +| [Scripted MagFit flightpath generation](https://discuss.ardupilot.org/t/scripted-magfit-flightpath-generation/97536) | latest | [Lua script](https://ardupilot.org/copter/docs/common-lua-scripts.html) to generate a MagFit flight path | +| [ecalc for multirotor](https://www.ecalc.ch/index.htm) | online | Finds a suitable set of components that meet your needs | +| [ArduPilot Hardware Report](https://firmware.ardupilot.org/Tools/WebTools/HardwareReport/) | online | Provides an overview of connected hardware from a `.bin` log and visualization of sensor position offsets. | +| [ArduPilot Filter Review Tool](https://firmware.ardupilot.org/Tools/WebTools/FilterReview/) | online | Aid in configuring and validating the Harmonic Notch filters | +| [ArduPilot Filter Analysis](https://firmware.ardupilot.org/Tools/WebTools/FilterTool/) | online | Bode plot tool to give insight into gyro low-pass and notch filter attenuation and phase lag | +| [ArduPilot PID Review Tool](https://firmware.ardupilot.org/Tools/WebTools/PIDReview/) | online | Review PID tune in the frequency domain. Step response estimate is generated. | +| [ArduPilot MAGFit in flight compass calibration](https://firmware.ardupilot.org/Tools/WebTools/MAGFit/) | online | Do [compass calibration using a flight log](https://discuss.ardupilot.org/t/new-magfit-compass-calibration-webtool/110192) | +| [Ardupilot Log Viewer](https://plotbeta.ardupilot.org/) | online | Log viewer, analyzer and plotter. Can also do MagFit | +| [Add grid to image](https://yomotherboard.com/add-grid-to-image/) | online | Add a grid overlay to any image | +| [SketchAndCalc](https://www.sketchandcalc.com/) | online | Calculate areas | + +Always connect the vehicle battery before connecting the USB cable (if you are using one) between the PC and the flight controller. +Always disconnect the USB cable (if you are using one) between the PC and the flight controller before disconnecting the vehicle battery. + +Start by downloading the [latest Mission Planner](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi) ground control station software and the [latest ArduPilot Methodic Configurator](https://github.com/ArduPilot/MethodicConfigurator/releases/tag/latest) software both for your Microsoft Windows PC. +Use Mission Planner to flash the latest [stable ArduCopter firmware](https://firmware.ardupilot.org/Copter/stable/) for your flight controller. + +## 2.2 Create the vehicles's intermediate parameter files using a template + +For this procedure follow these steps: + +1. Close Mission Planner, if it is open on the PC. +1. Connect the flight controller to the PC via a USB cable and wait 7 seconds. +1. Open *ArduPilot Methodic Configurator*, and [connect it to the vehicle](https://github.com/ArduPilot/MethodicConfigurator/blob/master/USERMANUAL.md#usage). +1. Now using [Option 1: Create a new vehicle configuration directory based on an existing template](https://github.com/ArduPilot/MethodicConfigurator/blob/master/USERMANUAL.md#usage) + 1. Select the template to use, select the destination directory, give it a name and press `Create vehicle directory from template` +1. On the component editor window, **add all the details of the components of your system** as we did in [Section 1.2](#12-our-vehicle). +1. Click the `Save data and start configuration` button on the bottom +1. You now have a vehicle configuration directory with the name that you selected. But the files are just templates, you need to edit them in the next steps. + +## 2.3 Configure [IMU Temperature calibration](https://ardupilot.org/copter/docs/common-imutempcal.html) using [ArduPilot Methodic Configurator](https://github.com/ArduPilot/MethodicConfigurator) + +For this procedure follow these steps: + +1. On *ArduPilot Methodic Configurator* select `04_board_orientation.param` on the *Current intermediate parameter file:* Combobox. +1. Read the *Forum Blog:* and *Wiki:* documentation by pressing on the blue URL links. +1. Edit the `02_imu_temperature_calibration_setup.param` parameters' `New Value` and `Change Reason` using the *ArduPilot Methodic Configurator* parameter editor and press `Write selected params to FC, and advance to next file`. +1. When *ArduPilot Methodic Configurator* asks you *Do you want to provide a .bin log file and run the IMU temperature calibration using it?* select `No` and close the program. +1. Power off the flight controller and remove the battery. +1. Place the flight controller **without battery** in a freezer capable of reaching your vehicle's minimum expected operation temperature (-18°C in our case). +1. Once the flight controller is completely cooled down to its minimum expected operation temperature, take it out and power it. **Do not move the flight controller** for one or two hours. +1. If you have a buzzer connected, you will hear a short periodic beep while the calibration is in progress. When the calibration is complete, a completion tune will play. If you have [notification LEDs](https://ardupilot.org/copter/docs/common-leds-pixhawk.html) on your flight controller they will cyclically flash red, blue and green while calibrating. If you do not have a buzzer connected nor notification LEDs, monitor the `INS_TCALn_ENABLE` parameters. On completion, the `INS_TCALn_ENABLE` parameters will change to 1 (*enable*) for each calibrated IMU. +1. Power it off, and remove the micro SDCard +1. Copy the latest `.bin` log file in the micro SDcard from `/APM/LOGS` to your PC +1. Insert the micro SDcard back into the flight controller +1. Connect a USB cable to the FC and open *ArduPilot Methodic Configurator*. It will ask you again *Do you want to provide a .bin log file and run the IMU temperature calibration using it?* Select `Yes` and point it to the `.bin` file that you just downloaded. +1. Wait until finished It can take 10 Minutes or more look at the produced graphs they are also automatically saved to disk on the vehicle directory +1. Press `Write selected params to FC, and advance to next file`. + +The graphic below depicts the accelerometer drift versus time and the board temperature versus time. The temperature curve, depicted in black, is logarithmic as expected. The other curves are smooth, proving that the flight controller was not moved in the process and the calibration is valid. As can be seen, before the calibration temperature changes caused a big change in accelerometer/gyro drift. After the calibration, temperature changes will cause no significant accelerometer/gyro drift changes. + +![MatekH743Slim IMU temperature calibration|690x409](upload://1nt0Z3wVLYPzYwly6GWQoRcgvNE.png) + +## 2.4 Completely assemble the vehicle + +**The vehicle must be completely assembled, with all cables connected, but WITHOUT propellers attached**. + +## 2.5 Configure flight controller orientation + +Follow [mounting the autopilot](https://ardupilot.org/copter/docs/common-mounting-the-flight-controller.html) documentation to determine the correct value of the [AHRS_ORIENTATION](https://ardupilot.org/copter/docs/parameters.html#ahrs-orientation) parameter. + +1. On *ArduPilot Methodic Configurator* select `04_board_orientation.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `04_board_orientation.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.6 Configure the RC receiver + +In our setup, we use EdgeTX firmware on the RC transmitter. + +Download and install *EdgeTX Companion* to your PC. Start it and configure it as depicted below. + +![EdgeTX Companion setup|628x500](upload://1u3qPz3XFvumaNgf8Muh9I3qQAF.png) + +After that, use a micro SDcard to update the firmware on the Radiomaster TX16S and copy the **yaapu** scripts to the `/WIDGETS/yaapu` directory on the micro SDcard. + +Once the RC transmitter is running EdgeTx you can load the [TaycanMX-C.etx.bin|attachment](upload://xZoz5u4lmfV6XP1BRX7cieKHFiT.bin) (3.6 KB remove the `.bin` filename extension first) into EdgeTX companion and upload it to the radio. +Or simply copy only the settings that you require, EdgeTX companion is very flexible. + +In our setup, we used an advanced RC receiver that cannot be fully configured using Mission Planner's `SETUP >> Mandatory Hardware >> Radio Calibration` menu. + +1. On *ArduPilot Methodic Configurator* select `05_remote_controller.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `05_remote_controller.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +After that test the [RC failsafe](https://ardupilot.org/copter/docs/radio-failsafe.html) + +## 2.7 Configure telemetry + +The RC transmitter we used has a big color display where telemetry data is displayed, nevertheless, we use telemetry data for real-time flight monitoring with Mission Planner or QGroundControl. + +1. On *ArduPilot Methodic Configurator* select `06_telemetry.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `06_telemetry.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +Once this is operating we no longer need the USB connection to the vehicle. We can now use the telemetry connection instead. + +## 2.8 Configure the ESC + +In our setup, we used a [Bi-directional Dshot ESC](https://ardupilot.org/copter/docs/common-dshot-escs.html) that cannot be fully configured using Mission Planner's `SETUP >> Mandatory Hardware >> Servo Output` menu. + +1. On *ArduPilot Methodic Configurator* select `07_esc.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `07_esc.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +The step above configured ESC communication pass-thru. +In our vehicle, we use *BLHeli_32 ARM* ESC firmware. +So we use BLHeliSuite32 Version 32.9.0.6 to configure the ESCs. Flash the Firmware version described in the table above. Configure the parameters to match the figures below. + +https://youtu.be/7WeHTb7aBrE?si=gW9YbcQkZYK3DoNE + +![BLHeli32_Konfig|539x500](upload://3QofJmkdo88KK3O4rcFsPLm5buZ.png) + +![BLHeli32_Konfig2|471x500](upload://2P7B5rHvz8PTYE0C689dijyxXkn.png) + +## 2.9 Configure the primary battery monitor + +In our setup, the battery voltage is measured directly at the flight controller `Vbat` pin and the current is measured at the 4-in1 ESC `Curr` pin. + +1. On *ArduPilot Methodic Configurator* select `08_batt1.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `08_batt1.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.10 Configure the redundant (secondary) battery monitor + +To be on the safe side we used a Holybro PM02 as a redundant secondary voltage and current monitor. +One other option would be the [CBU 2-8s DroneCAN Battery Monitor and Current Sensor](https://www.cbunmanned.com/store). + +1. On *ArduPilot Methodic Configurator* select `09_batt2.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `09_batt2.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.11 Configure the GNSS receiver(s) + +GNSS receivers very often contain a magnetometer (compass) sensor. So they need to be configured before proceeding to the next step. + +1. On *ArduPilot Methodic Configurator* select `10_gnss.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `10_gnss.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. +1. When asked *Should the FC values now be copied to the 11_mp_setup_mandatory_hardware.param file?* select `No` and close the *ArduPilot Methodic Configurator* software. + +## 2.12 Configure "Mandatory Hardware" Parameters + +Open Mission Planner, connect to the flight controller and select `SETUP >> Mandatory Hardware` and work yourself through all the submenus as described below. **DO NOT SKIP ANY STEP**. + +### [Frame Type](https://ardupilot.org/copter/docs/frame-type-configuration.html) + +This relates to the `FRAME_CLASS` and `FRAME_TYPE` parameters. + +### [Initial Tune Parameters](https://ardupilot.org/copter/docs/setting-up-for-tuning.html) + +Answer the questions that Mission Planner asks, select *Add suggested settings for 4.0 and up (Battery failsafe and Fence)* and write the calculated parameters to the flight controller by pressing `Write to FC`. + +![MP Initial Tune Parameters questions|674x499](upload://cGRubBIUluiRmoquKYFKKlFWKzP.png) + +![MP Initial Tune Parameters results|386x500](upload://rgKJIfrr5ycpo1AkTzmZuKdS66Y.png) + +### [Accel Calibration](https://ardupilot.org/copter/docs/common-accelerometer-calibration.html) + +Follow the [ArduPilot wiki instructions](https://ardupilot.org/copter/docs/common-accelerometer-calibration.html) and calibrate the accelerometers. +For small vehicles use: + +- *Calibrate Accel* +- *Calibrate level* + +For very large vehicles: + +- *Simple Accel Cal* + +### [Compass](https://ardupilot.org/copter/docs/common-compass-calibration-in-mission-planner.html) + +Follow the [ArduPilot wiki instructions](https://ardupilot.org/copter/docs/common-compass-calibration-in-mission-planner.html) and calibrate the compass(es). +Disable internal compasses if the battery or power wires are close to the flight controller. +Do not select *Automatically learn offsets* it makes little sense on a multicopter. +And we will do in-flight MagFit later + +If you have a large vehicle you might want to use [large vehicle MagCal](https://ardupilot.org/copter/docs/common-compass-calibration-in-mission-planner.html#large-vehicle-magcal) instead. + +### [Radio Calibration](https://ardupilot.org/copter/docs/common-radio-control-calibration.html) + +Follow the [ArduPilot wiki instructions](https://ardupilot.org/copter/docs/common-radio-control-calibration.html) and calibrate the Remote Control. +Turn on your RC Transmitter and move the sticks around. +Make sure all transmitter channels move across their entire range. + +### [Servo Output](https://ardupilot.org/copter/docs/common-dshot-escs.html#configure-the-servo-functions) + +Change the parameters according to your requirements. + +### [ESC Calibration](https://ardupilot.org/copter/docs/esc-calibration.html) + +Do not make changes here, these parameters will be set later on the [Motor/Propeller order and direction test](#214-motorpropeller-order-and-direction-test) section + +### [Flight Modes](https://ardupilot.org/copter/docs/flight-modes.html) + +Define the flight modes you plan to use. +Do not use [`POSHOLD`](https://ardupilot.org/copter/docs/poshold-mode.html), use [`LOITER`](https://ardupilot.org/copter/docs/loiter-mode.html) instead. +Both only work outdoors because they require a good GNSS signal quality with low variance. +If that is not possible, [GPS glitches](https://ardupilot.org/copter/docs/common-diagnosing-problems-using-logs.html#gps-glitches) will occur and [`ALTHOLD` flight mode](https://ardupilot.org/copter/docs/altholdmode.html) is recommended instead. + +### [Failsafe](https://ardupilot.org/copter/docs/failsafe-landing-page.html) + +These are very important and can save your vehicle in case of failure. +Configure at least [`Radio Failsafe`](https://ardupilot.org/copter/docs/radio-failsafe.html), [`Battery Failsafe`](https://ardupilot.org/copter/docs/failsafe-battery.html) and [`Geofence`](https://ardupilot.org/copter/docs/common-ac2_simple_geofence.html) + +### HW ID + +This is just informational. No need to change anything. + +### [ADSB](https://ardupilot.org/copter/docs/common-ads-b-receiver.html) + +Change the parameters according to your requirements. + +### Last step + +The changes you did in the steps above have been stored in your vehicle. +Most of the changed parameters are vehicle-instance specific and can not be reused between two vehicles, no matter how similar they are. +Close Mission Planner. + +## 2.13 General configuration + +Now do some general configuration + +1. Connect the flight controller to the PC +1. Start *ArduPilot Methodic Configurator* and select the vehicle directory where you previously stored your *intermediate parameter files*. +1. When *ArduPilot Methodic Configurator* asks you *Should the FC values now be copied to the 11_mp_setup_mandatory_hardware.param file?* select `Yes` +1. Select `12_general_configuration.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `12_general_configuration.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.14 ArduPilot Hardware Report + +For this test, you need to: + +1. Visit the [ArduPilot Hardware report](https://firmware.ardupilot.org/Tools/WebTools/HardwareReport/) on your PC and upload the `.bin` file you got in the previous section. +1. Take a look at the results + +It should look like the following picture. +If it doesn't, go back and perform the missing calibration(s). + +![Hardware-Report after IMU temperature compensation|277x500](upload://yLW1jMTdIpQpBSbLLjyCNO8qMk1.png) + +## 2.15 Configure Logging + +![MP LOG_BITMASK parameter|690x221](upload://nAcJ2JbJ80e5yWRUjigqCKmyVWQ.png) + +1. On *ArduPilot Methodic Configurator* select `13_Logging.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `13_Logging.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +The [`.bin` message table](https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/52) explains which bit is responsible for which `.bin` dataflash log messages: + +## 2.16 Motor/Propeller order and direction test + +Start by [checking the motor numbering with the Mission Planner Motor test](https://ardupilot.org/copter/docs/connect-escs-and-motors.html#checking-the-motor-numbering-with-the-mission-planner-motor-test) without propellers. Remember the **correct order is A, B, C, D** and not 1, 2, 3, 4. + +Make sure the `MOT_SPIN_ARM` is high enough so that all motors spin reliably. +Make sure the `MOT_SPIN_MIN` is at least 0.03 higher than `MOT_SPIN_ARM`. + +**!!! If you get this test wrong or skip it, you might destroy your vehicle and endanger yourself !!!** + +Do not try to test the attitude controller without propellers, it will not work, such tests are inconclusive and meaningless. +Do not try to test the attitude controller with the vehicle tied down on the ground, it will not work, such tests are inconclusive and meaningless. +At this point, the vehicle does not react to roll, pitch, yaw or thrust inputs. + +Now mount the propellers on the vehicle. + +After that, follow the [setting Motor Range](https://ardupilot.org/copter/docs/set-motor-range.html) to adjust the motor demand by the flight controller to the limitations of the ESC. + +### [Motor Thrust scaling](https://ardupilot.org/copter/docs/motor-thrust-scaling.html) ([MOT_THST_EXPO](https://ardupilot.org/copter/docs/parameters.html#mot-thst-expo), [MOT_SPIN_MIN](https://ardupilot.org/copter/docs/parameters.html#mot-spin-min) and [MOT_SPIN_MAX](https://ardupilot.org/copter/docs/parameters.html#mot-spin-max)) + +These three parameters linearize (correct) the non-linear *thrust vs. PWM* response of the propulsion system (battery, ESC, motors, propellers). +They are **crucial** for the stability of the vehicle. +If this is set too high we see an increase in gain at the lower end of the thrust range and a decrease in gain at the upper end. + +**Therefore when set to high you can see instability at low throttle and if set too low you can see instability at high throttle.** + +The automation on `SETUP >> Mandatory Hardware >> Initial Tune Parameters` gave you a good starting point on their values. +But we recommend using a [Trust Stand](https://ardupilot.org/copter/docs/motor-thrust-scaling.html#thrust-stands) or [Olliw method](http://www.olliw.eu/2018/thrust-from-motor-data/) or [ArduPilot DIY Thrust Stand](https://discuss.ardupilot.org/t/ardupilot-thrust-stand/68352) to determine their value. + +At the time of writing [Automatic `MOT_THST_EXPO` estimation lua script](https://discuss.ardupilot.org/t/automatic-mot-thst-expo-estimation-lua-script/100704/) is not yet ready for production use. + +1. On *ArduPilot Methodic Configurator* select `14_motor.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `14_motor.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.17 Optional PID adjustment + +If you have a very small, or a very large vehicle that requires non-default PID values for a safe flight. +Usually, smaller vehicles require lower than default PID rate values. Larger vehicles usually require higher than default PID rate values. + +1. On *ArduPilot Methodic Configurator* select `15_pid_adjustment.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `15_pid_adjustment.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.18 Remote ID (aka Drone ID) + +Read and follow [ArduPilot's Remote ID setup instructions](https://ardupilot.org/copter/docs/common-remoteid.html). You might have to [build OpenDroneID firmware for production](https://ardupilot.org/dev/docs/opendroneid.html). + +1. On *ArduPilot Methodic Configurator* select `16_remote_id.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `16_remote_id.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +## 2.19 Notch filters setup + +Configure the gyro noise reduction notch filters with an estimation of the operation parameters. +The estimation will be improved after the first flight. + +1. On *ArduPilot Methodic Configurator* select `17_notch_filter_setup.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `17_notch_filter_setup.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. +1. When asked *Should the FC values now be copied to the 18_notch_filter_results.param file?* select `No` and close the *ArduPilot Methodic Configurator* software. + +# 3. First flight: Motor Thrust Hover and Harmonic Notch data collection + +For more detailed information visit the [First flight](https://ardupilot.org/copter/docs/flying-arducopter.html) + +Test the initial setup on the ground in [stabilize flight mode](https://ardupilot.org/copter/docs/stabilize-mode.html) by using as little RC transmitter throttle as possible without taking off. +At this sweet spot, inspect all axes (roll, pitch and yaw) by providing small RC transmitter stick inputs. +If the multicopter behaves correspondingly, the setup is good to go. + +After some careful test maneuvers switch to `ALTHOLD` and hover for 30 to 40 seconds one to two meters above the ground. Land and disarm. + +Immediately check for hot motors. +If the motors are too hot, check the `.bin` dataflash log, high or oscillating `RATE.*out` values indicate which PID gain you should reduce to remove the output oscillations causing the motors to heat up. + +## 3.1 [Notch filter calibration](https://ardupilot.org/copter/docs/common-imu-notch-filtering.html) + +Load the `.bin` log from the first flight onto the [online Ardupilot Filter Review tool](https://firmware.ardupilot.org/Tools/WebTools/FilterReview/) +Follow the [instructions from Peter Hall on his Blog Post](https://discuss.ardupilot.org/t/new-fft-filter-setup-and-review-web-tool/102572) to configure the Harmonic Notch filter(s). +The graph below is a bode diagram of the gyro signals before and after the low-pass and Harmonic Notch filters. +As you can see, the filters remove most of the vibration noise from the gyro sensors. + +![Filter IMU1|690x293](upload://vI4xxKrz4Bl943PVzfFovDoYdPP.png) + +Below is the configuration we used. + +![Filter Configuration|690x432](upload://bHn3VlIBn8PWyvUWpOBibT9ZtSe.png) + +1. On *ArduPilot Methodic Configurator* select `18_notch_filter_results.param` on the *Current intermediate parameter file:* Combobox. +1. When asked *Should the FC values now be copied to the 18_notch_filter_results.param file?* select `No`. +1. Read the documentation links inside the `18_notch_filter_results.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. + +Load the `.bin` log from the first flight onto the [online Ardupilot Log Viewer](https://plotbeta.ardupilot.org/) or into Mission Planner. +Take a look at the `VIBE.VibeX`, `VIBE.VibeY`, `VIBE.VibeZ` graphs they [all should be below 15](https://ardupilot.org/copter/docs/common-measuring-vibration.html) + +According to common ArduPilot forum knowledge, and quoting @xfacta: + +- Vibrations over 30 are very bad +- Vibrations over 20 are causing issues even if you don't know it yet +- Vibrations over 15 are in a grey area - it could go either way - check clipping, it must be zero +- Vibrations below 10 are good + +Now upload the `.bin` log to the [Hardware-Report Tool](https://firmware.ardupilot.org/Tools/WebTools/HardwareReport/) once again to check CPU load and loop times, which in our case look like this: + +![Hardware-Report CPU load|690x440](upload://aj5PiQcVyPgZDKO4mZyLpfhRBFe.png) + +![Hardware-Report CPU loop times|690x386](upload://xwWD4r1W7YVYavT2T5lAtZ8L8RS.png) + +## 3.2 Configure the throttle controller + +Use the `.bin` log from the first flight to set the parameters described on the `19_throttle_controller.param` file. + +# 4. Second Flight: PID VTOL-Quiktune lua script or manual PID tune + +If your flight controller can run lua scripts perform a [PID lua VTOL-Quicktune](https://ardupilot.org/copter/docs/quiktune.html). +If you have an STM32 F4 or F7 processor that can not run lua scripts perform a [manual PID tune](https://ardupilot.org/copter/docs/ac_rollpitchtuning.html) instead. + +Setup the lua script using: + +1. Download the [VTOL-quicktune.lua](https://raw.githubusercontent.com/ArduPilot/ardupilot/master/libraries/AP_Scripting/applets/VTOL-quicktune.lua) to your PC +1. connect your flight controller to the PC +1. Copy the script to your autopilot’s SD card’s APM/scripts directory. If using MP it may be easiest to use the Config, MAVFtp screen. +1. Close mission planner, open *ArduPilot Methodic Configurator* and select your vehicle's directory +1. On *ArduPilot Methodic Configurator* select `20_quicktune_setup.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `20_quicktune_setup.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. +1. Close *ArduPilot Methodic Configurator* + +Perform the flight and afterwords: + +1. Connect the flight controller to the PC +1. On *ArduPilot Methodic Configurator* select `21_quicktune_results.param` on the *Current intermediate parameter file:* Combobox. +1. When asked *Should the FC values now be copied to the 21_quicktune_results.param file?* select `Yes`. +1. Press `Write selected params to FC, and advance to next file` button. +1. Close *ArduPilot Methodic Configurator* + +If you are impatient and do not want a fully optimized flight controller jump to *[section 14 Productive configuration](#h-12-productive-configuration-55)* + +# 5. Third flight: MagFit + +Now that the Harmonic Notch filter, the throttle controller and PIDs are configured, the third flight will be safer. +This flight will be used to calibrate the compass during a realistic operation scenario in the air. + +## [Inflight MagFit calibration](https://ardupilot.org/copter/docs/common-magfit.html#using-mavexplorer-s-integrated-magfit-utility) + +Follow these steps before the flight: + +1. Download the `copter-magfit-helper.lua` and `advance-wp.lua` scripts from [Scripted MagFit flightpath generation](https://discuss.ardupilot.org/t/scripted-magfit-flightpath-generation/97536) and put them on the micro SDCard's `APM/scripts` folder +1. insert the SD-Card on the flight controller +1. connect your flight controller to the PC +1. On *ArduPilot Methodic Configurator* select `22_inflight_magnetometer_fit_setup.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `22_inflight_magnetometer_fit_setup.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. +1. When asked *Should the FC values now be copied to the 23_inflight_magnetometer_fit_results.param file?* select `No`. +1. Close *ArduPilot Methodic Configurator* + +Perform the MagFit figure-eight flight and land + +1. Download the latest `.bin` dataflash log file from the micro SDcard's `/APM/LOGS` folder +1. Load it into MAVExplorer using the command line: `MAVExplorer.py filename.bin` or into the [ArduPilot MAGFit in flight compass calibration](https://firmware.ardupilot.org/Tools/WebTools/MAGFit/) using an internet browser. +1. Select the area where the multicopter performed the Figure eight (exclude the takeoff and landing flight sections) +1. Perform the MagFit calculations. Save the tool-generated file as `23_inflight_magnetometer_fit_results.param` in your vehicle's intermediate parameter file directory. +1. connect your flight controller to the PC +1. On *ArduPilot Methodic Configurator* select `23_inflight_magnetometer_fit_results.param` on the *Current intermediate parameter file:* Combobox. +1. When asked *Should the FC values now be copied to the 23_inflight_magnetometer_fit_results.param file?* select `Yes`. +1. Press `Write selected params to FC, and advance to next file` button. +1. Close *ArduPilot Methodic Configurator* + +![MagFit results|690x344](upload://gwYEY4gMfWwMWdWo5UrcF357LqH.png) + +After that repeat the steps described in [2.14 ArduPilot Hardware Report](#214-ardupilot-hardware-report). + +The report should now look like this: + +![Hardware-Report after MagFit|281x500](upload://44N95H1JNLVPCpbpyCJWDj2weW3.png) + +# 6. Fourth Flight: PID VTOL-Quiktune lua script or manual PID tune (optional) + +If your flight controller can run lua scripts perform a [PID lua VTOL-Quicktune](https://ardupilot.org/copter/docs/quiktune.html). +If you have an STM32 F4 or F7 processor that can not run lua scripts perform a [manual PID tune](https://ardupilot.org/copter/docs/ac_rollpitchtuning.html) instead. + +Setup the lua script using: + +1. Download the [VTOL-quicktune.lua](https://raw.githubusercontent.com/ArduPilot/ardupilot/master/libraries/AP_Scripting/applets/VTOL-quicktune.lua) to your PC +1. connect your flight controller to the PC +1. Copy the script to your autopilot’s SD card’s APM/scripts directory. If using MP it may be easiest to use the Config, MAVFtp screen. +1. Close mission planner, open *ArduPilot Methodic Configurator* and select your vehicle's directory +1. On *ArduPilot Methodic Configurator* select `24_quicktune_setup.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `24_quicktune_setup.param documentation` +1. Edit the parameters' `New Value` and `Change Reason` to suit your requirements +1. Press `Write selected params to FC, and advance to next file` button. +1. When asked *Should the FC values now be copied to the 25_quicktune_results.param file?* select `No`. +1. Close *ArduPilot Methodic Configurator* + +Perform the flight and afterwords: + +1. Connect the flight controller to the PC +1. On *ArduPilot Methodic Configurator* select `25_quicktune_results.param` on the *Current intermediate parameter file:* Combobox. +1. When asked *Should the FC values now be copied to the 25_quicktune_results.param file?* select `Yes`. +1. Press `Write selected params to FC, and advance to next file` button. +1. Close *ArduPilot Methodic Configurator* + +If you are impatient and do not want a fully optimized flight controller jump to *[section 14 Productive configuration](#h-12-productive-configuration-55)* + +# 7. Fifth flight: Evaluate the aircraft tune - part 1 + +Follow the first part of [evaluating the aircraft tune](https://ardupilot.org/copter/docs/evaluating-the-aircraft-tune.html#evaluating-the-aircraft-tune). + +1. On *ArduPilot Methodic Configurator* select `26_evaluate_the_aircraft_tune_ff_disable.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `26_evaluate_the_aircraft_tune_ff_disable.param documentation` +1. Press `Write selected params to FC, and advance to next file` button. +1. Close *ArduPilot Methodic Configurator* + +After landing take a look at the `RATE.*out` values in the `.bin` log file, they all should be below 0.1. + +If the vehicle is not behaving well, perform a [manual PID tune](https://ardupilot.org/copter/docs/ac_rollpitchtuning.html) or a [lua Quicktune](https://ardupilot.org/copter/docs/quiktune.html) before proceeding. + +# 8. Sixth flight: Evaluate the aircraft tune - part 2 + +Follow the second part of [evaluating the aircraft tune](https://ardupilot.org/copter/docs/evaluating-the-aircraft-tune.html#evaluating-the-aircraft-tune). + +1. On *ArduPilot Methodic Configurator* select `27_evaluate_the_aircraft_tune_ff_enable.param` on the *Current intermediate parameter file:* Combobox. +1. Read the documentation links inside the `27_evaluate_the_aircraft_tune_ff_enable.param documentation` +1. Press `Write selected params to FC, and advance to next file` button. +1. Close *ArduPilot Methodic Configurator* + +After landing take a look at the `RATE.*out` values in the `.bin` log file, they all should be below 0.1. + +# 9. [Autotune flight(s)](https://ardupilot.org/copter/docs/autotune.html) + +The Autotune is an automated iterative process: + +1. It changes the parameter values of the attitude PID controllers +1. Tests the [overshoot and settling-time](https://aleksandarhaber.com/transient-response-specifications-peak-time-settling-time-rise-time-and-percent-overshoot/) of the control loop using the new PID values +1. If they are within the desired requirements, the process is over. If not, it gets repeated from the beginning + +If the battery gets depleted before you can complete the Autotune flight(s), download the latest `.bin` log file from the micro SDCard directory `/APM/LOGS`. +Take a look at the `ATUN` messages. +They show how the PID values change over time. +You should use the latest PID values from the `ATUN` messages to set the starting point of your next PID Autotune with a fresh battery. +But be careful, **these new PID values might be unstable and cause your vehicle to crash**. +To be on the safe side perform the third and fourth flights again according to the instructions above. +This way, the Autotune will restart from the partially optimal values it found before the battery got depleted, instead of starting from scratch. +An example of the relevant `ATUN` message data of an interrupted yaw Autotune `.bin` dataflash log is depicted below: + +![interrupted yaw Autotune ATUN messages|690x370](upload://ryhTNfx4QfKJlkcl65s732DylnY.png) + +The correspondence between the PIDs' initial values and the `ATUN` message fields is shown in the respective tables for each of the four Autotune axes in the sections below. +The tune of the vehicle must be done in the vehicle's most agile configuration. +That is, the vehicle will be at its minimum take-off weight with fully charged batteries. +This is why we will do Autotune with multiple flights, one axis per flight. + +Typically the [quality of the Autotune results for each axis is proportional to the value](https://www.youtube.com/watch?v=1sCskKQIdeg) of the `ATC_ANG_RLL_P`, `ATC_ANG_PIT_P`, and `ATC_ANG_YAW_P` parameters for their respective axis. +Also the higher the values, the tighter the tune. +If you get low values, improve the hardware and revisit the previous sections to further reduce the vibrations. + +Autotuning in low-wind conditions is desirable, but if that is not possible you can increase the `AUTOTUNE_AGGR` parameter value to 0.110 or even 0.120. +That is a workaround and will not produce as good results as low-wind conditions autotune. + +We set up the autotune as a flight mode, and as such it will use the underlying `ALTHOLD` flight mode. +If you want to use the `LOITER` flight mode as the underlying mode during autotune you need to [set an RC channel function switch to autotune](https://ardupilot.org/copter/docs/autotune.html#setup-before-flying-in-autotune-mode). +Follow the sequence below for tuning each axis as that particular order improves the results. + +## Roll axis + +1. On *ArduPilot Methodic Configurator* select `28_autotune_roll_setup.param` and write it to the FC. It will activate the roll axis Autotune. +1. When asked *Should the FC values now be copied to the 29_autotune_roll_results.param file?* select `No`. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either [`AltHold`](https://ardupilot.org/copter/docs/altholdmode.html) or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +1. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. +1. connect the flight controller to the PC +1. On *ArduPilot Methodic Configurator* select `29_autotune_roll_results.param`. +1. When asked *Should the FC values now be copied to the 29_autotune_roll_results.param file?* select `Yes`. + +The autotune might have found a poor solution, here are some indicators of a poor tune: + +1. The resulting `ATC_ANG_RLL_P` parameter value is smaller than 4.5 +2. The resulting `ATC_RAT_RLL_D` parameter value is equal to the `AUTOTUNE_MIN_D` parameter value + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=0| +|ATC_RAT_RLL_P|ATUN.RP| +|ATC_RAT_RLL_I|ATUN.RP| +|ATC_RAT_RLL_D|ATUN.RD| +|ATC_ANG_RLL_P|ATUN.SP| +|ATC_ACCEL_R_MAX|ATUN.ddt| + +## Pitch axis + +1. On *ArduPilot Methodic Configurator* select `30_autotune_pitch_setup.param` and write it to the FC. It will activate the pitch axis Autotune. +1. When asked *Should the FC values now be copied to the 31_autotune_pitch_results.param file?* select `No`. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either `AltHold` or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC Transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +1. Once the autotune is completed, land and disarm the vehicle without changing the flight mode. +1. connect the flight controller to the PC +1. On *ArduPilot Methodic Configurator* select `31_autotune_pitch_results.param`. +1. When asked *Should the FC values now be copied to the 31_autotune_pitch_results.param file?* select `Yes`. + +The autotune might have found a poor solution, here are some indicators of a poor tune: + +1. The resulting `ATC_ANG_PIT_P` parameter value is smaller than 4.5 +2. The resulting `ATC_RAT_PIT_D` parameter value is equal to the `AUTOTUNE_MIN_D` parameter value + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=1| +|ATC_RAT_PIT_P|ATUN.RP| +|ATC_RAT_PIT_I|ATUN.RP| +|ATC_RAT_PIT_D|ATUN.RD| +|ATC_ANG_PIT_P|ATUN.SP| +|ATC_ACCEL_P_MAX|ATUN.ddt| + +## Yaw axis + +1. Use *ArduPilot Methodic Configurator* to edit and write the `32_autotune_yaw_setup.param` file to the FC. It will activate the yaw axis Autotune. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either `AltHold` or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low, or too close to obstacles. +1. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the `33_autotune_yaw_results.param` file. + +The autotune might have found a poor solution, here are some indicators of a poor tune: + +1. The resulting `ATC_ANG_YAW_P` parameter value is smaller than 4.5 + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=2| +|ATC_RAT_YAW_P|ATUN.RP| +|ATC_RAT_YAW_I|**ATUN.RP * 0.1**| +|**ATC_RAT_YAW_FLTE**|ATUN.RD| +|ATC_ANG_YAW_P|ATUN.SP| +|ATC_ACCEL_Y_MAX|ATUN.ddt| + +## [Yaw D axis](https://www.youtube.com/watch?v=b76bPEeRCEk&t=963s) + +This particular `YawD` Autotune axis is only relevant for small, agile vehicles. + +1. Use *ArduPilot Methodic Configurator* to edit and write the `34_autotune_yawd_setup.param` file to the FC. +2. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take-off and fly in either `AltHold` or `Loiter` flight mode. +3. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +4. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +5. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the `35_autotune_yawd_results.param` file. + +Make sure that your resulting `ATC_RAT_YAW_D` parameter value is different from `AUTOTUNE_MIN_D` value. +If that is not the case then the autotune failed to find a proper `ATC_RAT_YAW_D`. +The cause is probably too high noise values at the input of the Yaw D controller. +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=3| +|ATC_RAT_YAW_P|ATUN.RP| +|ATC_RAT_YAW_I|**ATUN.RP * 0.1**| +|ATC_RAT_YAW_D|ATUN.RD| +|ATC_ANG_YAW_P|ATUN.SP| +|ATC_ACCEL_Y_MAX|ATUN.ddt| + +## [re-tune the roll and pitch axis](https://youtu.be/jK0I97dMsK0?si=F1lyl2iq8gUUencl&t=2535) + +Now that the yaw axis is tuned, the [autotune should be able to improve the roll and pitch axis tune](https://youtu.be/jK0I97dMsK0?si=F1lyl2iq8gUUencl&t=2535). + +1. Use *ArduPilot Methodic Configurator* to edit and write the `36_autotune_roll_pitch_retune_setup.param` file to the FC. +2. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either `AltHold` or `Loiter` flight mode. +3. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +4. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +5. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the `37_autotune_roll_pitch_retune_results.param` file. + +# 10. Performance evaluation flight + +As you can see in the picture below, the Stabilize Roll, Pitch and Yaw P gains achieved with this method are high. The maximum *stabilize P gain* that autotune strives for is 36, and that was achieved in the roll axis! This is a clear indication that the vibration noise filters and the PID control loops are working well together. + +![Mission Planner's `Extended Tuning` screenshot with our autotune results|634x500](upload://58bKwTXyLCLeiz0z4dd2rPP3AQO.png) + +After using Autotune to find proper PID parameters, it is time to evaluate the performance of the vehicle's control loops in real flight. + +Follow these steps: + +1. Power on the vehicle and connect it to the PC +1. Use *ArduPilot Methodic Configurator* to write the `26_evaluate_the_aircraft_tune_ff_disable.param` file to the FC. +1. Switch to `ALTHOLD` flight mode and wait for home location acquisition. +1. Take-off at around 10m above the ground. +1. Perform smooth maneuvers using the RC transmitter roll stick. +1. Perform smooth maneuvers using the RC transmitter pitch stick. +1. Perform smooth maneuvers using the RC transmitter yaw stick. +1. Repeat the maneuvers with increasing aggressivity making sure you stay inside the stable envelope of the vehicle. +1. Land and download the latest `.bin` log file from `/APM/LOGS` to your PC +1. Use [ArduPilot's PID Review Tool](https://firmware.ardupilot.org/Tools/WebTools/PIDReview/) to review the PID step response of each PID. +1. Use *ArduPilot Methodic Configurator* to write the `27_evaluate_the_aircraft_tune_ff_enable.param` file to the FC. + +In our vehicle, we got a transient response of around 60ms in roll and pitch and around 110ms in yaw. + +Step response Roll: + +![Step response Roll|690x295](upload://szcbKrY1lR46umi7fcR0ZY2lthz.png) + +Step response Pitch: + +![Step response Pitch|690x298](upload://cVxSCEUkvejrzLtHc0ZdJW91sJ.png) + +Step response Yaw: + +![Step response Yaw|690x299](upload://n00fbr1woDUsda06W2g3XmzyQra.png) + +If you are satisfied with the performance, increase `ATC_THR_MIX_MAX` to 0.9 (default is 0.5) to increase prioritization of attitude control over throttle. +This can reduce the pitch overshoot sometimes seen (especially on copters with large propellers) in AltHold if the vehicle suddenly slows after performing a fast-forward flight. +Take a look at the `RATE.*out` values in the `.bin` log file, they all should be below 0.1. + +# 11. [Windspeed Estimation flight(s)](https://ardupilot.org/copter/docs/airspeed-estimation.html) + +Follow [ArduCopter's airspeed estimation Wiki](https://ardupilot.org/copter/docs/airspeed-estimation.html) and/or use the [Lua script provided by Yuri in the forum](https://discuss.ardupilot.org/t/scripting-copter-wind-estimation-baro-compensation-tuning/98470/1). + +In our case, the frontal area looks like this: + +![frontal area of our drone|690x311](upload://xRxP4W79jiYlIvPEN4edc1vUovw.jpeg) + +and the side area looks like this: + +![side area of our drone|690x343](upload://51ApQbbGxeTSOeC32OnvQT8k0a2.jpeg) + +Divided by 1,000,000 to convert from mm² to m², the frontal area is 0.01097 m² and the side area is 0.01455 m². +The weight of our drone is 560g, therefore the ballistic coefficients are + +- [EK3_DRAG_BCOEF_X](https://ardupilot.org/copter/docs/parameters.html#ek3-drag-bcoef-x) = 0.56 kg / 0.01097 m² = 51.0399 +- [EK3_DRAG_BCOEF_Y](https://ardupilot.org/copter/docs/parameters.html#ek3-drag-bcoef-y) = 0.56 kg / 0.01455 m² = 38.4798 + +Use *ArduPilot Methodic Configurator* to edit and write the `38_windspeed_estimation.param` file to the FC. + +Now do the flight to collect the data to [Calculate the Propeller Drag Coefficient](https://ardupilot.org/copter/docs/airspeed-estimation.html#calculate-the-propeller-drag-coefficient). +After that, open the logs with MAVExplorer to get the needed values. +Display the absolute values for acceleration in X and Y, as well as GPS speed by inputting `graph abs(IMU.AccX) abs(IMU.AccY) GPS.Spd`. +Then crop it so you only see the tests in AltHold flight mode. +It should look like this: + +![Wind estimation Weathervaning|690x396](upload://aGvP5qUatk7oZyfYcFu4ZAwx71J.png) + +Note that our test flight was quite noisy but there *is* enough data to extract. +Next crop it so you see one acceleration into the wind and the consecutive deceleration. +It should look like this: + +![Wind estimation rightside|690x344](upload://tsnS3DU0oJrIbRzqv4QWgcTJFpw.png) + +Get the current wind speed, that is the GPS speed when AccY reaches zero and the GPS speed has stabilized. In this case, it is: + +- windspeed = 2.35 [m/s] + +Next, get the groundspeed at the start of the test. +That is the GPS speed when the vehicle starts to decelerate after the little bit of jitter is over. +In this case, it is: + +- groundspeed = 3.9 [m/s] + +With this information, you can calculate the vehicle's airspeed, which is: + +- airspeed = windspeed + groundspeed = 6.25 [m/s] + +Next get the maximum acceleration during the test, which is the acceleration at the time of the groundspeed measurement. +In this case, it is: + +- max_accel = 4.2 [m/s²] + +With the air density at the time of testing and the previously calculated ballistic drag coefficient (`EK3_DRAG_BCOEF_X` for front and back, `EK3_DRAG_BCOEF_Y` for left and right side) you can now calculate the bluff body drag, which is 1/2 * air density * airspeed^2 / BCOEF. +In this case, it is: + +- Bluff body drag = 0.5 * 1.260 [kg/m³] * (6.25 [m/s])² / 38.4798 [kg/m²] = 0.6395 [m/s²] + +With that, you can now calculate the momentum drag, which is max_accel - bluff body drag. +In this case, it is: + +- Momentum drag = 4.2 [m/s²] - 0.6395 [m/s²] = 3.5605 [m/s²] + +Now you can calculate the momentum drag coefficient `EK3_DRAG_MCOEF`, which is momentum drag / airspeed. +In this case, it is: + +- [EK3_DRAG_MCOEF](https://ardupilot.org/copter/docs/parameters.html#ek3-drag-mcoef) = 3.5605 [m/s²] / 6.25 [m/s] = 0.5697 [1/s] + +This Blog post continues below in the second post. diff --git a/BLOG-discuss2.md b/BLOG-discuss2.md new file mode 100644 index 0000000..8716bc9 --- /dev/null +++ b/BLOG-discuss2.md @@ -0,0 +1,99 @@ +Continuation from the Blog post above.... + +For better accuracy, you should do that for all directions and take the average. In our case, we got: + +- front: 0.4628 +- back: 0.4757 +- left: 0.5426 +- right: 0.5697 +- average: 0.5127 + +Note that these are quite high values due to the ducts around the props. +For a normal copter with open propellers, it should be in the range of 0.1 to 0.2. + +After it is set, do another flight and [check that the windspeed and direction are correctly estimated](https://ardupilot.org/copter/docs/airspeed-estimation.html#viewing-windspeed-and-direction-in-real-time). + +# 12. [Baro Compensation flight(s)](https://ardupilot.org/copter/docs/airspeed-estimation.html#barometer-position-error-compensation) + +Follow [ArduCopter's baro compensation Wiki](https://ardupilot.org/copter/docs/airspeed-estimation.html#barometer-position-error-compensation) and/or use the [Lua script provided by Yuri in the forum](https://discuss.ardupilot.org/t/scripting-copter-wind-estimation-baro-compensation-tuning/98470/). + +Use *ArduPilot Methodic Configurator* to edit and write the `39_barometer_compensation.param` file to the FC. + +Now do the flight to collect the data and analyze the logs to see if the barometer is correctly compensated and insensitive to wind. + +# 13. [System Identification Flights](https://ardupilot.org/copter/docs/systemid-mode-operation.html) + +These steps are optional. +Their goal is to build a mathematical model of the vehicle that can later be used to further [optimize the control loops of the vehicle according to a set of constraints (requirements)](https://discuss.ardupilot.org/t/analitical-multicopter-flight-controller-pid-optimization/109759). + +Documentation is available on [Fabian Bredemeier's Identification of a multicopter section at ArduCopter's_wiki](https://ardupilot.org/copter/docs/systemid-mode-operation.html#identification-of-a-multicopter). + +## Roll rate mathematical model + +Use *ArduPilot Methodic Configurator* to edit and write the `40_system_id_roll.param` file to the FC. + +Now do the flight to collect the data for the roll rate system identification. + +## Pitch rate mathematical model + +Use *ArduPilot Methodic Configurator* to edit and write the `41_system_id_pitch.param` file to the FC. + +Now do the flight to collect the data for the pitch rate system identification. + +## Yaw rate mathematical model + +Use *ArduPilot Methodic Configurator* to edit and write the `42_system_id_yaw.param` file to the FC. + +Now do the flight to collect the data for the yaw rate system identification. + +## Thrust mathematical model + +Use *ArduPilot Methodic Configurator* to edit and write the `43_system_id_thrust.param` file to the FC. + +Now do the flight to collect the data for the thrust system identification. + +## [Analytical Multicopter Flight Controller PID Optimization](https://discuss.ardupilot.org/t/analytical-multicopter-flight-controller-pid-optimization/109759) + +This describes how to use IAV's multi-objective optimization to achieve even better (according to a predefined set of constraints) PID tuning. + +One other approach is described by Bill Geyer in his Blog post: [Predicting Closed Loop Response For Faster Autotune](https://discuss.ardupilot.org/t/predicting-closed-loop-response-for-faster-autotune/75096). + +Use *ArduPilot Methodic Configurator* to edit and write the `44_analytical_pid_optimization.param` file to the FC. + +# 14. Productive configuration + +Some changes should be made for everyday productive operation. + +Use *ArduPilot Methodic Configurator* to edit and write the `45_everyday_use.param` file to the FC. + +# 15. Position controller + +The most inner *angle rate* and *angle* control loops have been tuned. Now let's tune the position controller. + +Use *ArduPilot Methodic Configurator* to edit and write the `46_position_controller.param` file to the FC. + +# 16. Precision land + +These are **optional**, and only make sense if you have extra hardware on your vehicle to support it. + +Use *ArduPilot Methodic Configurator* to edit and write the `47_precision_land.param` file to the FC. + +# 17. Guided operation without RC transmitter + +These are **optional**, and only make sense if you do beyond visual line-of-sight (BVLOS) autonomous flights using a companion computer. + +Use *ArduPilot Methodic Configurator* to edit and write the `48_guided_operation.param` file to the FC. + +# 18. Conclusion + +We presented a sequence of small, methodic steps that result in a fully operational and safe drone. Beginning with informed hardware decisions, appropriate hardware configuration and concluding with a finely tuned vehicle equipped with robust, fast-acting control loops. Each step is documented in its own intermediate parameter file, ensuring reproducibility and traceability. Each file is numbered, ensuring that the sequence of steps is clear. The number of test flights was reduced to a minimum, and their order was optimized. This process was developed for our specific multicopter, but **it can be tailored to any other ArduPilot vehicle**. + +Many thanks to the ArduPilot's developers and community. + +This work has been sponsored by the company I work for [IAV GmbH](https://www.iav.com/). We provide engineering and consulting for robotic systems including multicopters. Feel free to contact us for help or development support. + +Your vehicle is now properly tuned according to AduPilot's standard procedures and some of IAV GmbH's know-how. + +Enjoy, +Jan Ole Noack +Amilcar do Carmo Lucas diff --git a/BLOG.md b/BLOG.md new file mode 100644 index 0000000..8ed3fdc --- /dev/null +++ b/BLOG.md @@ -0,0 +1,1002 @@ +# How to methodically tune (almost) any multicopter using ArduCopter 4.4.x + +![Cinewhoop Diatone Taycan MX-C](cinewhoop.png) + +For illustrative purposes, we will use the small 3'' multicopter depicted above, but the tuning sequence we developed at [IAV GmbH](https://www.iav.com/) will work on almost any other multicopter. +This method uses the latest available [ArduPilot WebTools](https://firmware.ardupilot.org/Tools/WebTools/), some of the new features of ArduCopter 4.3 and best practices from the [Ardupilot Community](https://discuss.ardupilot.org/). + +We will detail the firmware parameters to change, the sequence of how to change them, help you to find the value for each parameter, + explain which test flights to conduct and the order in which to conduct them and help you document all your steps for traceability. +This applies industry-proven [*software configuration management* (SCM)](https://en.wikipedia.org/wiki/Software_configuration_management) techniques to tuning an ArduCopter vehicle. +You will be able to tune multiple vehicles (think production line) using this method and still have individual traceability of each parameter change on each vehicle. + +This post is divided into the following sections: + +1. [Getting the hardware right](#1-getting-the-hardware-right) +2. [Proper initial configuration](#2-proper-initial-configuration) +3. [First flight: Motor Thrust Hover and Harmonic Notch data collection](#3-first-flight-mot_thrst_hover-and-harmonic-notch-data-collection) +4. [Second flight: MagFit](#4-second-flight-magfit) +5. [Third flight: Evaluate the aircraft tune - part 1](#5-third-flight-evaluate-the-aircraft-tune-part-1) +6. [Fourth flight: Evaluate the aircraft tune - part 2](#6-fourth-flight-evaluate-the-aircraft-tune-part-2) +7. [Autotune flight(s)](#7-autotune-flights) +8. [Performance evaluation flight](#8-performance-evaluation-flight) +9. [Windspeed Estimation flight(s)](#9-windspeed-estimation-flights) +10. [Baro Compensation flight(s)](#10-baro-compensation-flights) +11. [System Identification flights](#11-system-identification-flights) +12. [Productive configuration](#12-productive-configuration) +13. [Position controller](#13-position-controller) +14. [Precision land](#14-precision-land) +15. [Guided operation without RC transmitter](#15-guided-operation-without-rc-transmitter) +16. [Conclusion](#16-conclusion) + +# 1. Getting the hardware right + +Some rules of thumb for hardware requirements: + +1. **Robust frame construction:** A stable and rigid frame is crucial for stable and safe flight behavior. Carbon frames are recommended but not essential, and remember carbon is an electrical conductor. +2. **ESC telemetry:** Use only ESCs that provide at least RPM telemetry. It simplifies Notch filter tuning and improves its response-time and accuracy. +3. **Vibration reduction:** Vibrations reduce the efficiency, stability and lifespan of the drone. All propellers must be carefully balanced. They are the source of most of the vibrations. All components must be securely fastened to minimize vibrations and avoid damage caused by vibrations. +4. **Protection of sensors from external disturbances:** + 1. **Vibration-dampening mounting of the FC** + 1. **Separation of compass and high-current paths:** To reduce electromagnetic interference, it is recommended to spatially separate the compass (likely integrated with [GNSS](https://en.wikipedia.org/wiki/Satellite_navigation) receivers) from high-current paths and magnetic sources such as motors and power distribution systems/cables. + 1. **Protection of barometer from airflow:** The barometer must be protected from wind and airflow or turbulence generated by the propellers. A small piece of open-cell foam placed over the sensor acts as a low-pass filter, ensuring accurate altitude measurements. + 1. **GNSS systems are likely to be affected by USB3 devices.** Keep possible negative influences in mind while using USB3 components. +5. **Proper cable management:** Cables and wires must be organized sensibly to prevent entanglement or damage during flight. It must be ensured that no cables hinder movable parts such as propellers or gimbal mechanisms, or are damaged by them. Flexible, silicone-coated cables for data transfer save weight and reduce vibration transmission. Weak connectors are prone to loosening under the influence of vibration. +6. **Weight distribution:** An even weight distribution of the drone with the FC at the center of gravity improves stability and flight control. Components such as batteries, sensors, cameras, and other payloads must be positioned evenly to achieve uniform weight distribution and maximum fit between the geometric and physical center of gravity. +7. **Battery placement:** The battery is often located in the center of the frame to ensure stability during flight. It must be ensured that the battery is rigidly mounted and secured to prevent slipping or unintentional disconnection during operation. Additionally, when properly attached, the battery acts as an inertial mass and helps dampen vibrations. Beware of landing directly on the battery since most of the batteries do have a resistant shell. +8. **Voltage monitoring:** to [dynamically scale the PIDs and maintain stable flight in low battery conditions](https://ardupilot.org/copter/docs/current-limiting-and-voltage-scaling.html#voltage-scaling). +9. **Current monitoring:** to compensate for the dynamic magnetic field caused by the high motor currents. +10. **FC Power supply:** Must provide enough current for the flight controller, [GNSS](https://en.wikipedia.org/wiki/Satellite_navigation) receivers and other payloads operating on 5V. +11. **Roll/Pitch/Yaw-Imbalance:** When mounting the motors on the arms, especially on round arms, make sure that all motors and propellers are perfectly level so that the thrust produced is directed straight down. Misaligned motors will cause the multicopter to drift. Depending on which motors are misaligned and their direction of misalignment, the multicopter drifts laterally forward, backward, left, right, or axially around the Z-axis, and efficiency is reduced accordingly. +12. **Helical GNSS antennas:** These kinds of antennas are the [preferred choice for drones and their benefits justify the extra cost](https://discuss.ardupilot.org/t/big-gps-round-up/67755). +13. **STM32 H7 processor family:** Flight controllers that use these processors, have enough processing power and memory to run ArduCopter firmware without restrictions. + +Use tools like [ecalc for multirotor](https://www.ecalc.ch/index.htm) to find a suitable set of components to meet your needs. + +![eCalc example screenshot](eCalc_(en).PNG) + +With these requirements in mind, and for our specific application, we have selected the following components: + +| Type | Part | +|:---|:----| +|Frame | [Diatone Taycan MX-C](https://www.diatone.us/products/diatone-mxc-taycan-duct-3-inch-cinewhoop-fpv-drone) | +|Flight Controller | [Matek H743 SLIM V3](http://www.mateksys.com/?portfolio=h743-slim) | +|ESC | [T-Motor F45 4in1 ESC V2](https://store.tmotor.com/goods-899-F45A+6S+4IN1+V2+.html) | +|Motors | 4x [Diatone Mamba 1404 5000kv](https://www.diatone.us/products/mamba-toka-1404-3000kv-4000kv-racing-motor-green) | +|Propeller | 4x [HQProp 3018, 3-Blade](https://shop.rc-hangar15.de/HQProp-3018-Durable-3-3-Blatt-Propeller-TMount) | +|BEC with voltage/current monitor | [Holybro PM02 V3](https://holybro.com/products/pm02-v3-12s-power-module) | +|Battery | [SLS X-Cube 4S 1800mAh 40C/80C](https://www.stefansliposhop.de/akkus/sls-x-cube/sls-x-cube-40c/sls-x-cube-1800mah-4s1p-14-8v-40c-80c::1568.html) | +|GNSS receiver | [Holybro H-RTK F9P Helical](https://holybro.com/products/h-rtk-f9p-gnss-series?variant=41466787168445) | +|SDCard | Any fast Micro-SDCard > 8 GiB | +|RC Receiver | [TBS Crossfire Nano RX se](https://www.team-blacksheep.com/products/prod:crossfire_nano_se) | +|RC Transmitter | [Radiomaster TX16S](https://www.radiomasterrc.com/products/tx16s-mark-ii-radio-controller) with [EdgeTx](https://edgetx.org/) and [Yaapu scripts](https://github.com/yaapu/FrskyTelemetryScript/wiki/Passthrough-over-CRSF-and-ExpressLRS) | +| Remote ID transmitter | [Holybro Remote ID transmitter](https://holybro.com/products/remote-id) | + +We connected the components as depicted below. +The figure excludes the LiPo battery and the PM02 BEC with a voltage/current monitor. + +| Component | [Flight controller connections](http://www.mateksys.com/?portfolio=h743-slim#tab-id-5) | +|:---|:----| +|T-Motor F45 4in1 ESC V2 | `G`, `G`, `Vbat`, not Connected, `S4`, `S3`, `S2`, `S1`, `Cur`, `Rx8` (SERIAL5) | +|Holybro PM02 V3 | not connected, `G`, `Vbat2`, `Curr2`, not Connected, not Connected | +|Holybro H-RTK F9P Helical | `5V`, `Tx2`, `Rx2`, `CL1`, `DA1`, not connected, not connected, `3V3`, `Buzz`, `G` | +|TBS Crossfire Nano RX se | `G`, `5V`, `Rx6`, `Tx6` | + +![Matek H743, Holobro F9p, T-Motor F45 4in1 ESC and TBS Crossfire Nano rx se connections](matek_h743_schaltplan.png) + + +# 2. Proper initial configuration + +For reproducibility and quality purposes, we configure the vehicle with a well-defined sequence of intermediate parameter files. +Each file modifies just a small set of the [over 1200 parameters on the flight controller](https://ardupilot.org/copter/docs/parameters.html). +By splitting the process into small manageable steps, we reduce the probability of making a mistake or missing a step and allow interleaving parameter changes with test flights. + +Each intermediate parameter file is a text file, editable in any common text editor (excluding MS Word) like [Notepad++](https://notepad-plus-plus.org/), [nano](https://www.nano-editor.org/) or [code](https://code.visualstudio.com/). +It contains the *official Ardupilot parameter documentation* in the form of comments in the lines preceding the parameter. +By using this you save the time of looking up the online documentation for each parameter. + +It contains the **reason why we changed the parameter** in a comment on the same line as the parameter and is used to trace each parameter change to the reason for that parameter change. +**Use it!** +You can thank me later. + +Comments start with the '#' character. +A small example with a single parameter is shown below: + +```text +# Arming with Rudder enable/disable +# Allow arm/disarm by rudder input. When enabled arming can be done with right rudder, disarming with left rudder. +# Rudder arming only works with throttle at zero +- deadzone (RCx_DZ). Depending on vehicle type, arming in certain +# modes is prevented. See the wiki for each vehicle. Caution is recommended when arming if it is allowed in an auto-throttle mode! +# 0: Disabled +# 1: ArmingOnly +# 2: ArmOrDisarm +ARMING_RUDDER,0 # We find it safer to use only a switch to arm instead of through rudder inputs +``` + +We provide you here with around 44 of these *intermediate parameter files* (*.parm). +If you are working with multiple vehicles, create a separate directory for each vehicle with a descriptive identifiable name. +Copy the 44 *intermediate parameter files* into them. +Edit the files to match the specific requirements of each vehicle. +Now you have traceable documentation records for every parameter change on each of your vehicles. + +If you are in the business of manufacturing multicopters and maintain **high-quality standards that result in the production of multiple, nearly identical vehicles**, you can reuse most intermediate parameter files across these vehicles. +Only three intermediate parameter files: `03_imu_temperature_calibration_results.param`, `11_mp_setup_mandatory_hardware.param` and `23_inflight_magnetometer_fit_results.param` are specific to each vehicle instance. +All other intermediate parameter files can be used without modifications across all instances (or serial numbers) of the same product model. + +This is a list of the software used in this process + +| Software | Version | Description | +|:----|:----|:----| +| [Mission Planner](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi) | latest beta | Ground control station (PC software) used for configuring and operating the vehicle | +| [ArduCopter](https://firmware.ardupilot.org/Copter/stable/) | 4.4.3 or 4.5.0-DEV | Flight controller firmware | +| [BLHeliSuite32](https://www.mediafire.com/file/fj1p9qlbzo5bl5g/BLHeliSuite32_32.9.0.6.zip/file) | 32.9.06 | PC software to flash and configure ESCs with BLHeli_32 ARM firmware | +| [BLHeli_32 ARM](https://github.com/bitdump/BLHeli/tree/master/BLHeli_32%20ARM) | 32.8 | ESC firmware with Bidir Dshot support | +| [EdgeTx companion](https://edgetx.org/getedgetx/) | 2.9.2 | PC software for configuring and updating EdgeTX based RC transmitters | +| [EdgeTx](https://edgetx.org/) | 2.9.2 | Radiomaster TX16S firmware with touch screen support | +| [Yaapu scripts](https://github.com/yaapu/FrskyTelemetryScript/wiki/Passthrough-over-CRSF-and-ExpressLRS) | 2023-11-08 | Display vehicle telemetry on the Radiomaster TX16S | +| Simple text editor: [Notepad++](https://notepad-plus-plus.org/), [nano](https://www.nano-editor.org/) or [code](https://code.visualstudio.com/) | any | Allows editing plain text files without undesired text changes. Do not use microsoft word! | +| [python](https://www.python.org/downloads/) | >= 3.8 | Python interpreter used to run automation scripts | +| [offline IMU temperature calibration tool](https://github.com/ArduPilot/ardupilot/blob/master/Tools/scripts/tempcal_IMU.py) | github master | Offline IMU temperature calibration script will [graph the uncorrected and corrected calibration for the accelerometers and gyroscopes](https://ardupilot.org/copter/docs/common-imutempcal.html#offline-calibration-tool) | +| [MAVExplorer](https://ardupilot.org/dev/docs/using-mavexplorer-for-log-analysis.html) | latest | Analyze dataflash (`.bin`) log files | +| [Scripted MagFit flightpath generation](https://discuss.ardupilot.org/t/scripted-magfit-flightpath-generation/97536) | latest | [Lua script](https://ardupilot.org/copter/docs/common-lua-scripts.html) to generate a MagFit flight path | +| [ecalc for multirotor](https://www.ecalc.ch/index.htm) | online | Finds a suitable set of components that meet your needs | +| [ArduPilot Hardware Report](https://firmware.ardupilot.org/Tools/WebTools/HardwareReport/) | online | Provides an overview of connected hardware from a `.bin` log and visualization of sensor position offsets. | +| [ArduPilot Filter Review Tool](https://firmware.ardupilot.org/Tools/WebTools/FilterReview/) | online | Aid in configuring and validating the Harmonic Notch filters | +| [ArduPilot Filter Analysis](https://firmware.ardupilot.org/Tools/WebTools/FilterTool/) | online | Bode plot tool to give insight into gyro low-pass and notch filter attenuation and phase lag | +| [ArduPilot PID Review Tool](https://firmware.ardupilot.org/Tools/WebTools/PIDReview/) | online | Review PID tune in the frequency domain. Step response estimate is generated. | +| [ArduPilot MAGFit in flight compass calibration](https://firmware.ardupilot.org/Tools/WebTools/MAGFit/) | online | Do [compass calibration using a flight log](https://discuss.ardupilot.org/t/new-magfit-compass-calibration-webtool/110192) | +| [Ardupilot Log Viewer](https://plotbeta.ardupilot.org/) | online | Log viewer, analyzer and plotter. Can also do MagFit | +| [Add grid to image](https://yomotherboard.com/add-grid-to-image/) | online | Add a grid overlay to any image | +| [SketchAndCalc](https://www.sketchandcalc.com/) | online | Calculate areas | + +Always connect the vehicle battery before connecting the USB cable (if you are using one) between the PC and the flight controller. +Always disconnect the USB cable (if you are using one) between the PC and the flight controller before disconnecting the vehicle battery. + +Start by downloading the [latest Mission Planner](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi) ground control station software for your Microsoft Windows PC and flash the latest [stable ArduCopter firmware](https://firmware.ardupilot.org/Copter/stable/) for your flight controller. +Start Mission Planner on the PC and [connect to the vehicle](https://ardupilot.org/copter/docs/common-connect-mission-planner-autopilot.html) using a USB cable. + +## 2.1 Configure [IMU Temperature calibration](https://ardupilot.org/copter/docs/common-imutempcal.html) using the [offline calibration tool](https://github.com/ArduPilot/ardupilot/blob/master/Tools/scripts/tempcal_IMU.py) + +For this procedure follow these steps: + +1. Download the [02_imu_temperature_calibration_setup.param parameter file](diatone_taycan_mxc/params/02_imu_temperature_calibration_setup.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the flight controller [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). +1. Power off the flight controller and remove the battery. +1. Place the flight controller **without battery** in a freezer capable of reaching your vehicle's minimum expected operation temperature (-18°C in our case). +1. Once the flight controller is completely cooled down to its minimum expected operation temperature, take it out and power it. **Do not move the flight controller** for one or two hours. +1. If you have a buzzer connected, you will hear a short periodic beep while the calibration is in progress. When the calibration is complete, a completion tune will play. If you have [notification LEDs](https://ardupilot.org/copter/docs/common-leds-pixhawk.html) on your flight controller they will cyclically flash red, blue and green while calibrating. If you do not have a buzzer connected nor notification LEDs, monitor the `INS_TCALn_ENABLE` parameters. On completion, the `INS_TCALn_ENABLE` parameters will change to 1 (*enable*) for each calibrated IMU. +1. Power it off, and remove the micro SDCard +1. Copy the latest `.bin` log file in the micro SDcard from `/APM/LOGS` to your PC +1. Insert the micro SDcard back into the flight controller +1. Then use the [Offline Calibration Tool](https://ardupilot.org/copter/docs/common-imutempcal.html#offline-calibration-tool) to calculate the value of the temperature calibration parameters. + 1. Download the [tempcal_IMU.py](https://github.com/ArduPilot/ardupilot/blob/master/Tools/scripts/tempcal_IMU.py) python script to your PC. + 2. Execute `python tempcal_IMU.py ` + 3. the generated `tcal.parm` file should be similar to the [03_imu_temperature_calibration_results.param parameter file](diatone_taycan_mxc/params/03_imu_temperature_calibration_results.param). + 4. Upload the tool-generated `tcal.parm` file (not ours) to your flight controller. + +The graphic below depicts the accelerometer drift versus time and the board temperature versus time. +The temperature curve, depicted in black, is logarithmic as expected. +The other curves are smooth, proving that the flight controller was not moved in the process and the calibration is valid. +As can be seen, before the calibration temperature changes caused a big change in accelerometer/gyro drift. +After the calibration, temperature changes will cause no significant accelerometer/gyro drift changes. + +![MatekH743Slim IMU temperature calibration](matekh743slim_accel.png) + +## 2.2 Completely assemble the vehicle + +**The vehicle must be completely assembled, with all cables connected, but WITHOUT propellers attached**. + + +## 2.3 Configure flight controller orientation + +Follow [mounting the autopilot](https://ardupilot.org/copter/docs/common-mounting-the-flight-controller.html) documentation to determine the correct value of the [AHRS_ORIENTATION](https://ardupilot.org/copter/docs/parameters.html#ahrs-orientation) parameter. +For its configuration, we created a [04_board_orientation.param parameter file](diatone_taycan_mxc/params/04_board_orientation.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.4 Configure the RC receiver + +In our setup, we use EdgeTX firmware on the RC transmitter. +Download and install *EdgeTX Companion* to your PC. +Start it and configure it as depicted below. + +![EdgeTX companion setup](EdgeTXCompanion_setup.png) + +After that, use a micro SDcard to update the firmware on the Radiomaster TX16S and copy the **yaapu** scripts to the `/WIDGETS/yaapu` directory on the micro SDcard. +Once the RC transmitter is running EdgeTx you can load the [Taycan MX-C EdgeTX configuration file](TaycanMX-C.etx) into EdgeTX companion and upload it to the radio. +Or simply copy only the settings that you require, EdgeTX companion is very flexible. + +In our setup, we used an advanced RC receiver that cannot be fully configured using Mission Planner's `SETUP >> Mandatory Hardware >> Radio Calibration` menu. +For its configuration, we created a [05_remote_controller.param parameter file](diatone_taycan_mxc/params/05_remote_controller.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.5 Configure telemetry + +The RC transmitter we used has a big color display where telemetry data is displayed, nevertheless, we use telemetry data for real-time flight monitoring with Mission Planner or QGroundControl. +For its configuration, we created a [06_telemetry.param parameter file](diatone_taycan_mxc/params/06_telemetry.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). +Once this is operating we no longer need the USB connection to the vehicle. + +## 2.6 Configure the ESC + +In our setup, we used a [Bi-directional Dshot ESC](https://ardupilot.org/copter/docs/common-dshot-escs.html) that cannot be fully configured using Mission Planner's `SETUP >> Mandatory Hardware >> Servo Output` menu. +For its configuration, we created a [07_esc.param parameter file](diatone_taycan_mxc/params/07_esc.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +The step above configured ESC communication pass-thru. +In our vehicle, we use *BLHeli_32 ARM* ESC firmware. +So we use BLHeliSuite32 Version 32.9.0.6 to configure the ESCs. +Flash the Firmware version described in the table above. +Configure the parameters to match the figures below. + +![ESC Setup](BLHeli32_Konfig.PNG) + +![ESC Overview](BLHeli32_Konfig2.PNG) + +## 2.7 Configure the primary battery monitor + +In our setup, the battery voltage is measured directly at the flight controller `Vbat` pin and the current is measured at the 4-in1 ESC `Curr` pin. +For its configuration, we created a [08_batt1.param parameter file](diatone_taycan_mxc/params/08_batt1.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.8 Configure the redundant (secondary) battery monitor + +To be on the safe side we used a Holybro PM02 as a redundant secondary voltage and current monitor. +One other option would be the [CBU 2-8s DroneCAN Battery Monitor and Current Sensor](https://www.cbunmanned.com/store). +For its configuration, we created a [09_batt2.param parameter file](diatone_taycan_mxc/params/09_batt2.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.9 Configure the GNSS receiver(s) + +GNSS receivers very often contain a magnetometer (compass) sensor. +So they need to be configured before proceeding to the next step. +For its configuration, we created a [10_gnss.param parameter file](diatone_taycan_mxc/params/10_gnss.param). Download it to your PC, edit it with a text editor and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.10 Configure "Mandatory Hardware" Parameters + +On Mission Planner select `SETUP >> Mandatory Hardware` and work yourself through all the submenus as described below. **DO NOT SKIP ANY STEP**. + +### [Frame Type](https://ardupilot.org/copter/docs/frame-type-configuration.html) + +This relates to the `FRAME_CLASS` and `FRAME_TYPE` parameters. + +### [Initial Tune Parameters](https://ardupilot.org/copter/docs/setting-up-for-tuning.html) + +Answer the questions that Mission Planner asks, select *Add suggested settings for 4.0 and up (Battery failsafe and Fence)* and write the calculated parameters to the flight controller by pressing `Write to FC`. + +![MP Initial Tune Parameters questions](mp_initial_parameters.png) + +![MP Initial Tune Parameters results](mp_initial_parameters_calc.png) + +### [Accel Calibration](https://ardupilot.org/copter/docs/common-accelerometer-calibration.html) + +Follow the [ArduPilot wiki instructions](https://ardupilot.org/copter/docs/common-accelerometer-calibration.html) and calibrate the accelerometers. +For small vehicles use: + +- *Calibrate Accel* +- *Calibrate level* + +For very large vehicles: + +- *Simple Accel Cal* + +### [Compass](https://ardupilot.org/copter/docs/common-compass-calibration-in-mission-planner.html) + +Follow the [ArduPilot wiki instructions](https://ardupilot.org/copter/docs/common-compass-calibration-in-mission-planner.html) and calibrate the compass(es). + +Disable internal compasses if the battery or power wires are close to the flight controller. + +Do not select *Automatically learn offsets* it makes little sense on a multicopter. +And we will do in-flight MagFit later + +If you have a large vehicle you might want to use [large vehicle MagCal](https://ardupilot.org/copter/docs/common-compass-calibration-in-mission-planner.html#large-vehicle-magcal) instead. + +### [Radio Calibration](https://ardupilot.org/copter/docs/common-radio-control-calibration.html) + +Follow the [ArduPilot wiki instructions](https://ardupilot.org/copter/docs/common-radio-control-calibration.html) and calibrate the Remote Control. + +Turn on your RC Transmitter and move the sticks around. +Make sure all transmitter channels move across their entire range. + +### [Servo Output](https://ardupilot.org/copter/docs/common-dshot-escs.html#configure-the-servo-functions) + +Change the parameters according to your requirements. + +### [ESC Calibration](https://ardupilot.org/copter/docs/esc-calibration.html) + +Do not make changes here, these parameters will be set later on the [Motor/Propeller order and direction test](#214-motorpropeller-order-and-direction-test) section + +### [Flight Modes](https://ardupilot.org/copter/docs/flight-modes.html) + +Define the flight modes you plan to use. +Do not use [`POSHOLD`](https://ardupilot.org/copter/docs/poshold-mode.html), use [`LOITER`](https://ardupilot.org/copter/docs/loiter-mode.html) instead. +Both only work outdoors because they require a good GNSS signal quality with low variance. +If that is not possible, [GPS glitches](https://ardupilot.org/copter/docs/common-diagnosing-problems-using-logs.html#gps-glitches) will occur and [`ALTHOLD` flight mode](https://ardupilot.org/copter/docs/altholdmode.html) is recommended instead. + +### [Failsafe](https://ardupilot.org/copter/docs/failsafe-landing-page.html) + +These are very important and can save your vehicle in case of failure. +Configure at least [`Radio Failsafe`](https://ardupilot.org/copter/docs/radio-failsafe.html), [`Battery Failsafe`](https://ardupilot.org/copter/docs/failsafe-battery.html) and [`Geofence`](https://ardupilot.org/copter/docs/common-ac2_simple_geofence.html) + +### HW ID + +This is just informational. No need to change anything. + +### [ADSB](https://ardupilot.org/copter/docs/common-ads-b-receiver.html) + +Change the parameters according to your requirements. + +### Last step + +The changes you did in the steps above have been stored in your vehicle. +Most of the changed parameters are vehicle-instance specific and can not be reused between two vehicles, no matter how similar they are. +We provide an [11_mp_setup_mandatory_hardware.param parameter file](diatone_taycan_mxc/params/11_mp_setup_mandatory_hardware.param) only for illustrative purposes. +You must not upload our vehicle-specific file to your vehicle. + +Most people wrongly assume that they are now done with tuning. +But that is wrong, **there are still steps to do before the first flight**. + +## 2.11 General configuration + +The next configuration steps are exclusively done by editing intermediate parameter configuration files and in Mission Planner while connected to the vehicle [selecting *Compare Params*, reviewing the changes and pressing *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +In our case, a 3'' small drone, the props are expected to rotate at speeds higher than 400Hz and we have an STM32 H7 family processor. +So the scheduler loop rate should be increased to 800Hz. +For the inflight MagFit step, we must activate [Lua scripting](https://ardupilot.org/copter/docs/common-lua-scripts.html). + +Download the [12_general_configuration.param parameter file](diatone_taycan_mxc/params/12_general_configuration.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.12 ArduPilot Hardware Report + +For this test, you need to: + +1. Visit the [ArduPilot Hardware report](https://firmware.ardupilot.org/Tools/WebTools/HardwareReport/) on your PC and upload the `.bin` file you got in the previous section. +1. Take a look at the results + +It should look like the following picture. +If it doesn't, go back and perform the missing calibration(s). + +![Hardware-Report after IMU temperature compensation](hardware_report_tempcal.png) + +## 2.13 Configure Logging + +![MP LOG_BITMASK parameter](mp_logging_bitmask.png) + +Download the [13_logging.param parameter file](diatone_taycan_mxc/params/13_logging.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +The table below explains which bit is responsible for which `.bin` dataflash log message(s): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Log message vs. LOG_BITMASK value
MessagedescriptionLog rateLOG_BITMASK
field namebitvalue
SIDDSystem ID dataSCHED_LOOP_RATE / 1ATTITUDE_FAST and ATTITUDE_MED1 and 03
SCHED_LOOP_RATE / 2ATTITUDE_FAST02
SCHED_LOOP_RATE / 4ATTITUDE_MED01
SCHED_LOOP_RATE / 8--0
SIDSSystem ID settingsSCHED_LOOP_RATE / 1ATTITUDE_FAST and ATTITUDE_MED1 and 03
SCHED_LOOP_RATE / 2ATTITUDE_FAST02
SCHED_LOOP_RATE / 4ATTITUDE_MED01
SCHED_LOOP_RATE / 8--0
RATEDesired and achieved vehicle attitude ratesSCHED_LOOP_RATE / 1ATTITUDE_FAST and ATTITUDE_MED1 and 03
SCHED_LOOP_RATE / 2ATTITUDE_FAST02
SCHED_LOOP_RATE / 4ATTITUDE_MED01
SCHED_LOOP_RATE / 8--0
ATSCScale factors for attitude controllerSCHED_LOOP_RATE / 1ATTITUDE_FAST and ATTITUDE_MED1 and 03
SCHED_LOOP_RATE / 2ATTITUDE_FAST02
SCHED_LOOP_RATE / 4ATTITUDE_MED01
SCHED_LOOP_RATE / 8--0
ATTCanonical vehicle attitudeSCHED_LOOP_RATEATTITUDE_FAST01
10 HzATTITUDE_MED12
IMUInertial Measurement Unit dataSCHED_LOOP_RATEIMU_FAST and ATTITUDE_FAST18 and 0262145
25 HzIMU7128
GPSInformation received from GNSS systems attached to the autopilot~ 5 HzGPS24
GPAGPS accuracy information
UBX1uBlox-specific GPS information (part 1)
UBX2uBlox-specific GPS information (part 2)
GRAWRaw uBlox datas
GRXHRaw uBlox data - header
GRXSRaw uBlox data - space-vehicle data
TERRTerrain database information
PMautopilot system performance and general data dumping ground1 HzPM38
XKF0EKF3 beacon sensor diagnostics25Hz if ATTITUDE_FAST is set, else 10Hz---
XKF1EKF3 estimator outputs
XKF2EKF3 estimator secondary outputs
XKF3EKF3 innovations
XKF4EKF3 variances
XKF5EKF3 Sensor innovations (primary core) and general dumping ground
XKFSEKF3 sensor selection
XKQEKF3 quaternion defining the rotation from NED to XYZ (autopilot) axes
XKV1EKF3 State variances (primary core)
XKV2more EKF3 State Variances (primary core)
XKTEKF3 timing information
AHR2Backup AHRS data
POSCanonical vehicle position
CTRLAttitude Control oscillation monitor diagnostics10HzCTUN416
RFNDRangefinder sensor information
PRXProximity Filtered sensor data
PRXRProximity Raw sensor data
BCNBeacon information
CTUNControl Tuning information100Hz
PSCNPosition Control North10HzNTUN532
PSCDPosition Control Down
PSCEPosition Control East
RCINRC input channels to vehicle10HzRCIN664
RCI2(More) RC input channels to vehicle
RSSIReceived Signal Strength Indicator for RC receiver
VIBEProcessed (acceleration) vibration information10HzIMU or IMU_FAST or IMU_RAW19 or 18 or 7-
CMDExecuted mission command informationon eventCMD8256
MAVCMAVLink command we have just executed
BATGathered battery data??CURRENT9512
BCLBattery cell voltage information
MCUMCU voltage and temperature monitoring
POWRSystem power information
RCOUServo channel output values 1 to 1410HzRCOUT101024
RCO2Servo channel output values 15 to 18
RCO3Servo channel output values 19 to 32
OFOptical flow sensor data??OPTFLOW112048
PIDNProportional/Integral/Derivative gain values for NorthSCHED_LOOP_RATE if ATTITUDE_FAST is set else 10HzNTUN and PID12 and 54128
PIDEProportional/Integral/Derivative gain values for East
PIDRProportional/Integral/Derivative gain values for RollSCHED_LOOP_RATE if ATTITUDE_FAST is set else 10HzPID124096
PIDPProportional/Integral/Derivative gain values for Pitch
PIDYProportional/Integral/Derivative gain values for Yaw
PIDAProportional/Integral/Derivative gain values for Altitude
MAGInformation received from compasses??COMPASS138192
CAMCamera shutter informationon eventCAMERA1532768
TRIGCamera shutter information
MOTBMotor mixer information10HzMOTBAT17131072
ACCIMU accelerometer dataSCHED_LOOP_RATEIMU_RAW19524288
GYRIMU gyroscope data
VSTBMotor mixer informationSCHED_LOOP_RATEVIDEO_STABILISATION201048576
FTNFilter Tuning Message - per motorSCHED_LOOP_RATEFTN_FAST212097152
FTNSFilter Tuning Message
FTN1FFT Filter Tuning25 Hz
WINCWinch10HzAnyanyany
+ +## 2.14 Motor/Propeller order and direction test + +Start by [checking the motor numbering with the Mission Planner Motor test](https://ardupilot.org/copter/docs/connect-escs-and-motors.html#checking-the-motor-numbering-with-the-mission-planner-motor-test) without propellers. Remember the **correct order is A, B, C, D** and not 1, 2, 3, 4. + +Make sure the `MOT_SPIN_ARM` is high enough so that all motors spin reliably. +Make sure the `MOT_SPIN_MIN` is at least 0.03 higher than `MOT_SPIN_ARM`. + +**!!! If you get this test wrong or skip it, you might destroy your vehicle and endanger yourself !!!** + +Do not try to test the attitude controller without propellers, it will not work, such tests are inconclusive and meaningless. +Do not try to test the attitude controller with the vehicle tied down on the ground, it will not work, such tests are inconclusive and meaningless. +At this point, the vehicle does not react to roll, pitch, yaw or thrust inputs. + +Now mount the propellers on the vehicle. + +After that, follow the [setting Motor Range](https://ardupilot.org/copter/docs/set-motor-range.html) to adjust the motor demand by the flight controller to the limitations of the ESC. + +### [Motor Thrust scaling](https://ardupilot.org/copter/docs/motor-thrust-scaling.html) ([MOT_THST_EXPO](https://ardupilot.org/copter/docs/parameters.html#mot-thst-expo), [MOT_SPIN_MIN](https://ardupilot.org/copter/docs/parameters.html#mot-spin-min) and [MOT_SPIN_MAX](https://ardupilot.org/copter/docs/parameters.html#mot-spin-max)) + +These three parameters linearize (correct) the non-linear *thrust vs. PWM* response of the propulsion system (battery, ESC, motors, propellers). +They are **crucial** for the stability of the vehicle. +If this is set too high we see an increase in gain at the lower end of the thrust range and a decrease in gain at the upper end. +**Therefore when set to high you can see instability at low throttle and if set too low you can see instability at high throttle.** + +The automation on `SETUP >> Mandatory Hardware >> Initial Tune Parameters` gave you a good starting point on their values. +But we recommend using a [Trust Stand](https://ardupilot.org/copter/docs/motor-thrust-scaling.html#thrust-stands) or [Olliw method](http://www.olliw.eu/2018/thrust-from-motor-data/) or [ArduPilot DIY Thrust Stand](https://discuss.ardupilot.org/t/ardupilot-thrust-stand/68352) to determine their value. +At the time of writing [Automatic `MOT_THST_EXPO` estimation lua script](https://discuss.ardupilot.org/t/automatic-mot-thst-expo-estimation-lua-script/100704/) is not yet ready for production use. + + +## 2.15 Optional PID adjustment + +If you have a very small, or a very large vehicle that requires non-default PID values for a safe flight, change them in the [15_pid_adjustment.param parameter file](diatone_taycan_mxc/params/15_pid_adjustment.param) +Usually, smaller vehicles require lower than default PID rate values. +Larger vehicles usually require higher than default PID rate values. + +## 2.16 Remote ID (aka Drone ID) + +Read and follow [ArduPilot's Remote ID setup instructions](https://ardupilot.org/copter/docs/common-remoteid.html). +You might have to [build OpenDroneID firmware for production](https://ardupilot.org/dev/docs/opendroneid.html). +Edit the `16_remote_id.param` file with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +## 2.17 Notch filters setup + +Configure the gyro noise reduction notch filters with a estimation of the operation parameters as described on the [17_notch_filter_setup.param parameter file](diatone_taycan_mxc/params/17_notch_filter_setup.param). +Edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). +The estimation will be improved after the first flight. + + +# 3. First flight: Motor Thrust Hover and Harmonic Notch data collection + +For more detailed information visit the [First flight](https://ardupilot.org/copter/docs/flying-arducopter.html) + +Test the initial setup on the ground in [stabilize flight mode](https://ardupilot.org/copter/docs/stabilize-mode.html) by using as little RC transmitter throttle as possible without taking off. +At this sweet spot, inspect all axes (roll, pitch and yaw) by providing small RC transmitter stick inputs. +If the multicopter behaves correspondingly, the setup is good to go. + +After some careful test maneuvers switch to `ALTHOLD` and hover for 30 to 40 seconds one to two meters above the ground. Land and disarm. + +Immediately check for hot motors. +If the motors are too hot, check the `.bin` dataflash log, high or oscillating `RATE.*out` values indicate which PID gain you should reduce to remove the output oscillations causing the motors to heat up. + +## 3.1 [Notch filter calibration](https://ardupilot.org/copter/docs/common-imu-notch-filtering.html) + +Load the `.bin` log from the first flight onto the [online Ardupilot Filter Review tool](https://firmware.ardupilot.org/Tools/WebTools/FilterReview/) +Follow the [instructions from Peter Hall on his Blog Post](https://discuss.ardupilot.org/t/new-fft-filter-setup-and-review-web-tool/102572) to configure the Harmonic Notch filter(s). + +The graph below is a bode diagram of the gyro signals before and after the low-pass and Harmonic Notch filters. +As you can see, the filters remove most of the vibration noise from the gyro sensors. + +![Filter IMU1](filter_imu.png) + +Below is the configuration we used. + +![Filter Configuration](filter_konfiguration.png) + +In our case, we got the [18_notch_filter_results.param parameter file](diatone_taycan_mxc/params/18_notch_filter_results.param). Edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Load the `.bin` log from the first flight onto the [online Ardupilot Log Viewer](https://plotbeta.ardupilot.org/) or into Mission Planner. +Take a look at the `VIBE.VibeX`, `VIBE.VibeY`, `VIBE.VibeZ` graphs they [all should be below 15](https://ardupilot.org/copter/docs/common-measuring-vibration.html) + +According to common ArduPilot forum knowledge, and quoting @xfacta: + +- Vibrations over 30 are very bad +- Vibrations over 20 are causing issues even if you don't know it yet +- Vibrations over 15 are in a grey area - it could go either way - check clipping, it must be zero +- Vibrations below 10 are good + +Now upload the `.bin` log to the [Hardware-Report Tool](https://firmware.ardupilot.org/Tools/WebTools/HardwareReport/) once again to check CPU load and loop times, which in our case look like this: + +![Hardware-Report CPU load](hardware_report_cpu_load.png) +![Hardware-Report CPU loop times](hardware_report_loop_times.png) + +## 3.2 Configure the throttle controller + +Use the `.bin` log from the first flight to set the parameters described on the `19_throttle_controller.param` file. Edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +# 4. Second flight: MagFit + +Now that the Harmonic Notch filter and the throttle controller are configured, the second flight will be safer. +This flight will be used to calibrate the compass during a realistic operation scenario in the air. + +## [Inflight MagFit calibration](https://ardupilot.org/copter/docs/common-magfit.html#using-mavexplorer-s-integrated-magfit-utility) + +Follow these steps: + +1. Download the `copter-magfit-helper.lua` and `advance-wp.lua` scripts from [Scripted MagFit flightpath generation](https://discuss.ardupilot.org/t/scripted-magfit-flightpath-generation/97536) and put them on the micro SDCard's `APM/scripts` folder +1. Activate MagFit by downloading the [22_inflight_magnetometer_fit_setup.param parameter file](diatone_taycan_mxc/params/22_inflight_magnetometer_fit_setup.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list) +1. Perform the MagFit figure-eight flight and land +1. Download the latest `.bin` dataflash log file from the micro SDcard's `/APM/LOGS` folder +1. Load it into MAVExplorer using the command line: `MAVExplorer.py filename.bin` or into the [ArduPilot MAGFit in flight compass calibration](https://firmware.ardupilot.org/Tools/WebTools/MAGFit/) using an internet browser. +1. Select the area where the multicopter performed the Figure eight (exclude the takeoff and landing flight sections) +1. Perform the MagFit calculations. In our case, we got the [23_inflight_magnetometer_fit_results.param parameter file](diatone_taycan_mxc/params/23_inflight_magnetometer_fit_results.param) +1. Upload the tool-generated `.param` file, not ours, to the vehicle. + +![MagFit results](magfit_1.png) + +After that repeat the steps described in [2.12 ArduPilot Hardware Report](#212-ardupilot-hardware-report). +The report should now look like this: + +![Hardware-Report after MagFit](hardware_report_magfit.png) + + +# 5. Third flight: Evaluate the aircraft tune - part 1 + +Follow the first part of [evaluating the aircraft tune](https://ardupilot.org/copter/docs/evaluating-the-aircraft-tune.html#evaluating-the-aircraft-tune). + +After landing take a look at the `RATE.*out` values in the `.bin` log file, they all should be below 0.1. + +Download the [26_evaluate_the_aircraft_tune_ff_disable.param parameter file](diatone_taycan_mxc/params/26_evaluate_the_aircraft_tune_ff_disable.param), and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + + +# 6. Fourth flight: Evaluate the aircraft tune - part 2 + +Follow the second part of [evaluating the aircraft tune](https://ardupilot.org/copter/docs/evaluating-the-aircraft-tune.html#evaluating-the-aircraft-tune). + +After landing take a look at the `RATE.*out` values in the `.bin` log file, they all should be below 0.1. + +Download the [27_evaluate_the_aircraft_tune_ff_enable.param parameter file](diatone_taycan_mxc/params/27_evaluate_the_aircraft_tune_ff_enable.param), and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + + +# 7. [Autotune flight(s)](https://ardupilot.org/copter/docs/autotune.html) + +The Autotune is an automated iterative process: + +1. It changes the parameter values of the attitude PID controllers +1. Tests the [overshoot and settling-time](https://aleksandarhaber.com/transient-response-specifications-peak-time-settling-time-rise-time-and-percent-overshoot/) of the control loop using the new PID values +1. If they are within the desired requirements, the process is over. If not, it gets repeated from the beginning + +If the battery gets depleted before you can complete the Autotune flight(s), download the latest `.bin` log file from the micro SDCard directory `/APM/LOGS`. +Take a look at the `ATUN` messages. +They show how the PID values change over time. +You should use the latest PID values from the `ATUN` messages to set the starting point of your next PID Autotune with a fresh battery. +But be careful, **these new PID values might be unstable and cause your vehicle to crash**. +To be on the safe side perform the third and fourth flights again according to the instructions above. +This way, the Autotune will restart from the partially optimal values it found before the battery got depleted, instead of starting from scratch. + +An example of the relevant `ATUN` message data of an interrupted yaw Autotune `.bin` dataflash log is depicted below: + +![interrupted yaw Autotune ATUN messages](mp_autotune_yaw1.png) + +The correspondence between the PIDs' initial values and the `ATUN` message fields is shown in the respective tables for each of the four Autotune axes in the sections below. + +The tune of the vehicle must be done in the vehicle's most agile configuration. +That is, the vehicle will be at its minimum take-off weight with fully charged batteries. + +This is why we will do Autotune with multiple flights, one axis per flight. + +Typically the [quality of the Autotune results for each axis is proportional to the value](https://www.youtube.com/watch?v=1sCskKQIdeg) of the `ATC_ANG_RLL_P`, `ATC_ANG_PIT_P`, and `ATC_ANG_YAW_P` parameters for their respective axis. +Also the higher the values, the tighter the tune. +If you get low values, improve the hardware and revisit the previous sections to further reduce the vibrations. + +Autotuning in low-wind conditions is desirable, but if that is not possible you can increase the `AUTOTUNE_AGGR` parameter value to 0.110 or even 0.120. +That is a workaround and will not produce as good results as low-wind conditions autotune. + +We set up the autotune as a flight mode, and as such it will use the underlying `ALTHOLD` flight mode. +If you want to use the `LOITER` flight mode as the underlying mode during autotune you need to [set an RC channel function switch to autotune](https://ardupilot.org/copter/docs/autotune.html#setup-before-flying-in-autotune-mode). + +## Roll axis + +1. Download the [28_autotune_roll_setup.param parameter file](diatone_taycan_mxc/params/28_autotune_roll_setup.param) to your PC and upload it to the flight controller. + It will activate the roll axis Autotune. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either [`AltHold`](https://ardupilot.org/copter/docs/altholdmode.html) or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +1. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the [29_autotune_roll_results.param parameter file](diatone_taycan_mxc/params/29_autotune_roll_results.param) + +The autotune might have found a poor solution, here are some indicators of a poor tune: + +1. The resulting `ATC_ANG_RLL_P` parameter value is smaller than 4.5 +1. The resulting `ATC_RAT_RLL_D` parameter value is equal to the `AUTOTUNE_MIN_D` parameter value + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=0| +|ATC_RAT_RLL_P|ATUN.RP| +|ATC_RAT_RLL_I|ATUN.RP| +|ATC_RAT_RLL_D|ATUN.RD| +|ATC_ANG_RLL_P|ATUN.SP| +|ATC_ACCEL_R_MAX|ATUN.ddt| + +## Pitch axis + +1. Download the [30_autotune_pitch_setup.param parameter file](diatone_taycan_mxc/params/30_autotune_pitch_setup.param) to your PC and upload it to the flight controller. + It will activate the pitch axis Autotune. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either `AltHold` or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC Transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +1. Once the autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the [31_autotune_pitch_results.param parameter file](diatone_taycan_mxc/params/31_autotune_pitch_results.param) + +The autotune might have found a poor solution, here are some indicators of a poor tune: + +1. The resulting `ATC_ANG_PIT_P` parameter value is smaller than 4.5 +1. The resulting `ATC_RAT_PIT_D` parameter value is equal to the `AUTOTUNE_MIN_D` parameter value + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=1| +|ATC_RAT_PIT_P|ATUN.RP| +|ATC_RAT_PIT_I|ATUN.RP| +|ATC_RAT_PIT_D|ATUN.RD| +|ATC_ANG_PIT_P|ATUN.SP| +|ATC_ACCEL_P_MAX|ATUN.ddt| + +## Yaw axis + +1. Download the [32_autotune_yaw_setup.param parameter file](diatone_taycan_mxc/params/32_autotune_yaw_setup.param) to your PC and upload it to the flight controller. + It will activate the yaw axis Autotune. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either `AltHold` or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low, or too close to obstacles. +1. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the [33_autotune_yaw_results.param parameter file](diatone_taycan_mxc/params/33_autotune_yaw_results.param) + +The autotune might have found a poor solution, here are some indicators of a poor tune: + +1. The resulting `ATC_ANG_YAW_P` parameter value is smaller than 4.5 + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=2| +|ATC_RAT_YAW_P|ATUN.RP| +|ATC_RAT_YAW_I|**ATUN.RP * 0.1**| +|**ATC_RAT_YAW_FLTE**|ATUN.RD| +|ATC_ANG_YAW_P|ATUN.SP| +|ATC_ACCEL_Y_MAX|ATUN.ddt| + +## [Yaw D axis](https://www.youtube.com/watch?v=b76bPEeRCEk&t=963s) + +This particular Autotune axis is only relevant for small, agile vehicles. + +1. Download the [34_autotune_yawd_setup.param parameter file](diatone_taycan_mxc/params/34_autotune_yawd_setup.param) to your PC and upload it to the flight controller. + It will activate the yaw D axis Autotune. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take-off and fly in either `AltHold` or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +1. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the [35_autotune_yawd_results.param parameter file](diatone_taycan_mxc/params/35_autotune_yawd_results.param) + +Make sure that your resulting `ATC_RAT_YAW_D` parameter value is different from `AUTOTUNE_MIN_D` value. +If that is not the case then the autotune failed to find a proper `ATC_RAT_YAW_D`. +The cause is probably too high noise values at the input of the Yaw D controller. + +If the battery got depleted before Autotune completion, change the initial PID parameters as shown in the table below: + +|PID parameter name|PID parameter value based on the ATUN field| +|:-|:-| +|-|ATUN.Axis=3| +|ATC_RAT_YAW_P|ATUN.RP| +|ATC_RAT_YAW_I|**ATUN.RP * 0.1**| +|ATC_RAT_YAW_D|ATUN.RD| +|ATC_ANG_YAW_P|ATUN.SP| +|ATC_ACCEL_Y_MAX|ATUN.ddt| + +## [re-tune the roll and pitch axis](https://youtu.be/jK0I97dMsK0?si=F1lyl2iq8gUUencl&t=2535) + +Now that the yaw axis is tuned, the [autotune should be able to improve the roll and pitch axis tune](https://youtu.be/jK0I97dMsK0?si=F1lyl2iq8gUUencl&t=2535). + +1. Download the [36_autotune_roll_pitch_retune_setup.param parameter file](diatone_taycan_mxc/params/36_autotune_roll_pitch_retune_setup.param) to your PC and upload it to the flight controller. + It will activate the roll and pitch axis Autotune. +1. Outdoors on a non-windy day (or indoors in a big warehouse like we at IAV do) take off and fly in either `AltHold` or `Loiter` flight mode. +1. At about 2 meters high, select `Autotune` flight mode in the RC transmitter to engage Autotune. +1. Use the RC transmitter sticks to correct the vehicle position if it gets too high, too low or too close to obstacles. +1. Once the Autotune is completed, land and disarm the vehicle without changing the flight mode. + +You should get something like the [37_autotune_roll_pitch_retune_results.param parameter file](diatone_taycan_mxc/params/37_autotune_roll_pitch_retune_results.param) + + +# 8. Performance evaluation flight + +As you can see in the picture below, the Stabilize Roll, Pitch and Yaw P gains achieved with this method are high. +The maximum *stabilize P gain* that autotune strives for is 36, and that was achieved in the roll axis! +This is a clear indication that the vibration noise filters and the PID control loops are working well together. + +![Mission Planner's `Extended Tuning` screenshot with our autotune results](mp_extended_tunning_results_after_autotune.png) + +After using Autotune to find proper PID parameters, it is time to evaluate the performance of the vehicle's control loops in real flight. + +Follow these steps: + +1. Power on the vehicle +1. Download the [26_evaluate_the_aircraft_tune_ff_disable.param parameter file](diatone_taycan_mxc/params/26_evaluate_the_aircraft_tune_ff_disable.param), and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). +1. Switch to `ALTHOLD` flight mode and wait for home location acquisition. +1. Take-off at around 10m above the ground. +1. Perform smooth maneuvers using the RC transmitter roll stick. +1. Perform smooth maneuvers using the RC transmitter pitch stick. +1. Perform smooth maneuvers using the RC transmitter yaw stick. +1. Repeat the maneuvers with increasing aggressivity making sure you stay inside the stable envelope of the vehicle. +1. Land and download the latest `.bin` log file from `/APM/LOGS` to your PC +1. Use [ArduPilot's PID Review Tool](https://firmware.ardupilot.org/Tools/WebTools/PIDReview/) to review the PID step response of each PID. +1. Download the [27_evaluate_the_aircraft_tune_ff_enable.param parameter file](diatone_taycan_mxc/params/27_evaluate_the_aircraft_tune_ff_enable.param), and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +In our vehicle, we got a transient response of around 60ms in roll and pitch and around 110ms in yaw. + +Step response Roll: + +![Step response Roll](pid_review_step_response_roll.png) + +Step response Pitch: + +![Step response Pitch](pid_review_step_response_pitch.png) + +Step response Yaw: + +![Step response Yaw](pid_review_step_response_yaw.png) + +If you are satisfied with the performance, increase `ATC_THR_MIX_MAX` to 0.9 (default is 0.5) to increase prioritization of attitude control over throttle. +This can reduce the pitch overshoot sometimes seen (especially on copters with large propellers) in AltHold if the vehicle suddenly slows after performing a fast-forward flight. + +Take a look at the `RATE.*out` values in the `.bin` log file, they all should be below 0.1. + + +# 9. [Windspeed Estimation flight(s)](https://ardupilot.org/copter/docs/airspeed-estimation.html) + +Follow [ArduCopter's airspeed estimation Wiki](https://ardupilot.org/copter/docs/airspeed-estimation.html) and/or use the [Lua script provided by Yuri in the forum](https://discuss.ardupilot.org/t/scripting-copter-wind-estimation-baro-compensation-tuning/98470/). + +In our case, the frontal area looks like this: +![frontal area of our drone](frontal_area_cropped.png) +and the side area looks like this: +![side area of our drone](side_area_cropped.png) + +Divided by 1,000,000 to convert from mm² to m², the frontal area is 0.01097 m² and the side area is 0.01455 m². +The weight of our drone is 560g, therefore the ballistic coefficients are + +- [EK3_DRAG_BCOEF_X](https://ardupilot.org/copter/docs/parameters.html#ek3-drag-bcoef-x) = 0.56 kg / 0.01097 m² = 51.0399 +- [EK3_DRAG_BCOEF_Y](https://ardupilot.org/copter/docs/parameters.html#ek3-drag-bcoef-y) = 0.56 kg / 0.01455 m² = 38.4798 + +Download the [38_windspeed_estimation.param parameter file](diatone_taycan_mxc/params/38_windspeed_estimation.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Now do the flight to collect the data to [Calculate the Propeller Drag Coefficient](https://ardupilot.org/copter/docs/airspeed-estimation.html#calculate-the-propeller-drag-coefficient). +After that, open the logs with MAVExplorer to get the needed values. +Display the absolute values for acceleration in X and Y, as well as GPS speed by inputting `graph abs(IMU.AccX) abs(IMU.AccY) GPS.Spd`. +Then crop it so you only see the tests in AltHold flight mode. +It should look like this: + +![Wind estimation Weathervaning](MAVExplorer_Windestimation_weathervaning_abs.png) + +Note that our test flight was quite noisy but there *is* enough data to extract. +Next crop it so you see one acceleration into the wind and the consecutive deceleration. +It should look like this: + +![Wind estimation rightside](MAVExplorer_Windestimation_right.png) + +Get the current wind speed, that is the GPS speed when AccY reaches zero and the GPS speed has stabilized. +In this case, it is: + +- windspeed = 2.35 [m/s] + +Next, get the groundspeed at the start of the test. +That is the GPS speed when the vehicle starts to decelerate after the little bit of jitter is over. +In this case, it is: + +- groundspeed = 3.9 [m/s] + +With this information, you can calculate the vehicle's airspeed, which is: + +- airspeed = windspeed + groundspeed = 6.25 [m/s] + +Next get the maximum acceleration during the test, which is the acceleration at the time of the groundspeed measurement. +In this case, it is: + +- max_accel = 4.2 [m/s²] + +With the air density at the time of testing and the previously calculated ballistic drag coefficient (`EK3_DRAG_BCOEF_X` for front and back, `EK3_DRAG_BCOEF_Y` for left and right side) you can now calculate the bluff body drag, which is 1/2 * air density * airspeed^2 / BCOEF. +In this case, it is: + +- Bluff body drag = 0.5 * 1.260 [kg/m³] * (6.25 [m/s])² / 38.4798 [kg/m²] = 0.6395 [m/s²] + +With that, you can now calculate the momentum drag, which is max_accel - bluff body drag. +In this case, it is: + +- Momentum drag = 4.2 [m/s²] - 0.6395 [m/s²] = 3.5605 [m/s²] + +Now you can calculate the momentum drag coefficient `EK3_DRAG_MCOEF`, which is momentum drag / airspeed. +In this case, it is: + +- [EK3_DRAG_MCOEF](https://ardupilot.org/copter/docs/parameters.html#ek3-drag-mcoef) = 3.5605 [m/s²] / 6.25 [m/s] = 0.5697 [1/s] + +For better accuracy, you should do that for all directions and take the average. In our case, we got: + +- front: 0.4628 [1/s] +- back: 0.4757 [1/s] +- left: 0.5426 [1/s] +- right: 0.5697 [1/s] +- average: 0.5127 [1/s] + +Note that these are quite high values due to the ducts around the props. +For a normal copter with open propellers, it should be in the range of 0.1 to 0.2. + +After it is set, do another flight and [check that the windspeed and direction are correctly estimated](https://ardupilot.org/copter/docs/airspeed-estimation.html#viewing-windspeed-and-direction-in-real-time). + + +# 10. [Baro Compensation flight(s)](https://ardupilot.org/copter/docs/airspeed-estimation.html#barometer-position-error-compensation) + +Follow [ArduCopter's baro compensation Wiki](https://ardupilot.org/copter/docs/airspeed-estimation.html#barometer-position-error-compensation) and/or use the [Lua script provided by Yuri in the forum](https://discuss.ardupilot.org/t/scripting-copter-wind-estimation-baro-compensation-tuning/98470/). + +Download the [39_barometer_compensation.param parameter file](diatone_taycan_mxc/params/39_barometer_compensation.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Now do the flight to collect the data and analyze the logs to see if the barometer is correctly compensated and insensitive to wind. + + +# 11. [System Identification Flights](https://ardupilot.org/copter/docs/systemid-mode-operation.html) + +These steps are optional. +Their goal is to build a mathematical model of the vehicle that can later be used to further [optimize the control loops of the vehicle according to a set of constraints (requirements)](https://discuss.ardupilot.org/t/analitical-multicopter-flight-controller-pid-optimization/109759). + +Documentation is available on [Fabian Bredemeier's Identification of a multicopter section at ArduCopter's_wiki](https://ardupilot.org/copter/docs/systemid-mode-operation.html#identification-of-a-multicopter). + +## Roll rate mathematical model + +Download the [40_system_id_roll.param parameter file](diatone_taycan_mxc/params/40_system_id_roll.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Now do the flight to collect the data for the roll rate system identification. + +## Pitch rate mathematical model + +Download the [41_system_id_pitch.param parameter file](diatone_taycan_mxc/params/41_system_id_pitch.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Now do the flight to collect the data for the pitch rate system identification. + +## Yaw rate mathematical model + +Download the [42_system_id_yaw.param parameter file](diatone_taycan_mxc/params/42_system_id_yaw.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Now do the flight to collect the data for the yaw rate system identification. + +## Thrust mathematical model + +Download the [43_system_id_thrust.param parameter file](diatone_taycan_mxc/params/43_system_id_thrust.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +Now do the flight to collect the data for the thrust system identification. + +## [Analytical Multicopter Flight Controller PID Optimization](https://discuss.ardupilot.org/t/analytical-multicopter-flight-controller-pid-optimization/109759) + +This describes how to use IAV's multi-objective optimization to achieve even better (according to a predefined set of constraints) PID tuning. + +One other approach is described by Bill Geyer in his Blog post: [Predicting Closed Loop Response For Faster Autotune](https://discuss.ardupilot.org/t/predicting-closed-loop-response-for-faster-autotune/75096). + +Download the [44_analytical_pid_optimization.param parameter file](diatone_taycan_mxc/params/44_analytical_pid_optimization.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +# 12. Productive configuration + +Some changes should be made for everyday productive operation. + +Download the [45_everyday_use.param parameter file](diatone_taycan_mxc/params/45_everyday_use.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +# 13. Position controller + +The most inner *angle rate* and *angle* control loops have been tuned. Now let's tune the position controller. + +Edit the `46_position_controller.param` file with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + +# 14. Precision land + +These are **optional**, and only make sense if you have extra hardware on your vehicle to support it. +Download the [47_precision_land.param.param parameter file](diatone_taycan_mxc/params/47_precision_land.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + + +# 15. Guided operation without RC transmitter + +These are **optional**, and only make sense if you do beyond visual line-of-sight (BVLOS) autonomous flights using a companion computer. +Download the [48_guided_operation.param.param parameter file](diatone_taycan_mxc/params/48_guided_operation.param) to your PC, edit it with a text editor to meet your needs and in Mission Planner while connected to the vehicle [select *Compare Params*, review the changes and press *Continue* followed by *Write Params*](https://ardupilot.org/planner/docs/mission-planner-configuration-and-tuning.html#full-parameter-list). + + +# 16. Conclusion + +We presented a sequence of small, methodic steps that result in a fully operational and safe drone. +Beginning with informed hardware decisions, appropriate hardware configuration and concluding with a finely tuned vehicle equipped with robust, fast-acting control loops. +Each step is documented in its own intermediate parameter file, ensuring reproducibility and traceability. +Each file is numbered, ensuring that the sequence of steps is clear. +The number of test flights was reduced to a minimum, and their order was optimized. +This process was developed for our specific multicopter, but it can be tailored to any other. + +| PID controller | Intermediate parameter file(s) used to configure and tune it | +|----|----| +| Position Z acceleration | `19_throttle_controller.param` | +| Roll rate | `29_autotune_roll_results.param`, `37_autotune_roll_pitch_retune_results.param` | +| Pitch rate | `31_autotune_pitch_results.param`, `37_autotune_roll_pitch_retune_results.param` | +| Yaw rate | `33_autotune_yaw_results.param`, `35_autotune_yawd_results.param` | +| Roll | `29_autotune_roll_results.param`, `37_autotune_roll_pitch_retune_results.param` | +| Pitch | `31_autotune_pitch_results.param`, `37_autotune_roll_pitch_retune_results.param` | +| Yaw | `33_autotune_yaw_results.param`, `35_autotune_yawd_results.param` | +| Position XY velocity | `46_position_controller.param` | + +Many thanks to the ArduPilot's developers and community. + +This work has been sponsored by the company I work for [IAV GmbH](https://www.iav.com/). +We provide engineering and consulting for robotic systems including multicopters. +Feel free to contact us for help or development support. + +Your vehicle is now properly tuned according to AduPilot's standard procedures and some of IAV GmbH's know-how. + +Enjoy, + +Jan Ole Noack + +Amilcar do Carmo Lucas diff --git a/MethodicConfigurator/annotate_params.py b/MethodicConfigurator/annotate_params.py index 69c8f45..d22487b 100644 --- a/MethodicConfigurator/annotate_params.py +++ b/MethodicConfigurator/annotate_params.py @@ -34,7 +34,7 @@ BASE_URL = "https://autotest.ardupilot.org/Parameters/" PARAM_DEFINITION_XML_FILE = "apm.pdef.xml" -LUA_PARAM_DEFINITION_XML_FILE = "19_inflight_magnetometer_fit_setup.pdef.xml" +LUA_PARAM_DEFINITION_XML_FILE = "22_inflight_magnetometer_fit_setup.pdef.xml" # ArduPilot parameter names start with a capital letter and can have capital letters, numbers and _ PARAM_NAME_REGEX = r'^[A-Z][A-Z_0-9]*' @@ -548,7 +548,7 @@ def update_parameter_documentation(doc: Dict[str, Any], target: str = '.', # py # Iterate over all the target ArduPilot parameter files for param_file in param_files: - if os_path.basename(param_file).endswith("19_inflight_magnetometer_fit_setup.param") and "MAGH_ALT_DELTA" not in doc: + if os_path.basename(param_file).endswith("22_inflight_magnetometer_fit_setup.param") and "MAGH_ALT_DELTA" not in doc: continue # Read the entire file contents @@ -638,7 +638,7 @@ def main(): xml_dir, LUA_PARAM_DEFINITION_XML_FILE) doc_dict = create_doc_dict(xml_root, args.vehicle_type, args.max_line_length) update_parameter_documentation(doc_dict, os_path.join(os_path.dirname(args.target), - "19_inflight_magnetometer_fit_setup.param")) + "22_inflight_magnetometer_fit_setup.param")) except Exception as exp: # pylint: disable=W0718 logging.fatal(exp) exit(1) # pylint: disable=R1722 diff --git a/MethodicConfigurator/file_documentation.json b/MethodicConfigurator/file_documentation.json index 1fbe924..3aa6482 100644 --- a/MethodicConfigurator/file_documentation.json +++ b/MethodicConfigurator/file_documentation.json @@ -1,7 +1,7 @@ { "02_imu_temperature_calibration_setup.param": { "blog_text": "Contains setup parameters for IMU temperature calibration, part of the initial calibration process.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-21-configure-imu-temperature-calibrationhttpsardupilotorgcopterdocscommon-imutempcalhtml-using-the-offline-calibration-toolhttpsgithubcomardupilotardupilotblobmastertoolsscriptstempcal_imupy-3", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-23-configure-imu-temperature-calibrationhttpsardupilotorgcopterdocscommon-imutempcalhtml-using-ardupilot-methodic-configuratorhttpsgithubcomardupilotmethodicconfigurator-7", "wiki_text": "IMU Temperature Calibration", "wiki_url": "https://ardupilot.org/copter/docs/common-imutempcal.html", "external_tool_text": "", @@ -11,7 +11,7 @@ }, "03_imu_temperature_calibration_results.param": { "blog_text": "Records the results of the IMU temperature calibration, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-21-configure-imu-temperature-calibrationhttpsardupilotorgcopterdocscommon-imutempcalhtml-using-the-offline-calibration-toolhttpsgithubcomardupilotardupilotblobmastertoolsscriptstempcal_imupy-3", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-23-configure-imu-temperature-calibrationhttpsardupilotorgcopterdocscommon-imutempcalhtml-using-ardupilot-methodic-configuratorhttpsgithubcomardupilotmethodicconfigurator-7", "wiki_text": "IMU Temperature Calibration", "wiki_url": "https://ardupilot.org/copter/docs/common-imutempcal.html", "external_tool_text": "", @@ -21,7 +21,7 @@ }, "04_board_orientation.param": { "blog_text": "Defines the orientation of the flight controller board relative to the vehicle's body frame, crucial for accurate navigation and stabilization.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-23-configure-flight-controller-orientation-5", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-25-configure-flight-controller-orientation-9", "wiki_text": "Mounting the Autopilot - AHRS_ORIENTATION parameter", "wiki_url": "https://ardupilot.org/copter/docs/common-mounting-the-flight-controller.html", "external_tool_text": "", @@ -31,7 +31,7 @@ }, "05_remote_controller.param": { "blog_text": "Configures settings related to the remote controller, including channel mapping and control modes.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-24-configure-the-rc-receiver-6", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-26-configure-the-rc-receiver-10", "wiki_text": "Radio Control Systems", "wiki_url": "https://ardupilot.org/copter/docs/common-rc-systems.html", "external_tool_text": "EdgeTX Companion", @@ -41,7 +41,7 @@ }, "06_telemetry.param": { "blog_text": "Sets up telemetry parameters for data transmission, including GPS, altitude, and other flight metrics.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-25-configure-telemetry-7", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-27-configure-telemetry-11", "wiki_text": "Telemetry (landing page)", "wiki_url": "https://ardupilot.org/copter/docs/common-telemetry-landingpage.html", "external_tool_text": "", @@ -51,7 +51,7 @@ }, "07_esc.param": { "blog_text": "Configures settings for the Electronic Speed Controllers (ESCs), including PWM range and failsafe behavior.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-26-configure-the-esc-8", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-28-configure-the-esc-12", "wiki_text": "ESC (Electronic Speed Controls)", "wiki_url": "https://ardupilot.org/copter/docs/common-esc-guide.html", "external_tool_text": "BLHeliSuite32", @@ -61,7 +61,7 @@ }, "08_batt1.param": { "blog_text": "Contains parameters for the first battery, including voltage thresholds and failsafe behavior.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-27-configure-the-primary-battery-monitor-9", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-29-configure-the-primary-battery-monitor-13", "wiki_text": "Battery Monitors (aka Power Monitors/Modules) - BATT_* parameters", "wiki_url": "https://ardupilot.org/copter/docs/common-powermodule-landingpage.html", "external_tool_text": "", @@ -71,7 +71,7 @@ }, "09_batt2.param": { "blog_text": "Contains parameters for the second battery, including voltage thresholds and failsafe behavior.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-28-configure-the-redundant-secondary-battery-monitor-10", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-210-configure-the-redundant-secondary-battery-monitor-14", "wiki_text": "Battery Monitors (aka Power Monitors/Modules) - BATT2_* parameters", "wiki_url": "https://ardupilot.org/copter/docs/common-powermodule-landingpage.html", "external_tool_text": "", @@ -81,7 +81,7 @@ }, "10_gnss.param": { "blog_text": "Configures settings for the Global Navigation Satellite System (GNSS), including positioning and velocity estimation.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-29-configure-the-gnss-receivers-11", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-211-configure-the-gnss-receivers-15", "wiki_text": "GPS/Compass (landing page) - GPS* parameters", "wiki_url": "https://ardupilot.org/copter/docs/common-positioning-landing-page.html", "external_tool_text": "", @@ -91,17 +91,17 @@ }, "11_mp_setup_mandatory_hardware.param": { "blog_text": "Sets up mandatory hardware components, ensuring all necessary sensors and systems are correctly configured.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-210-configure-mandatory-hardware-parameters-12", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-212-configure-mandatory-hardware-parameters-16", "wiki_text": "Follow the blog instructions and use Mission planner instead of this tool to configure the mandatory hardware parameters.", "wiki_url": "", "external_tool_text": "Mission Planner", - "external_tool_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-210-configure-mandatory-hardware-parameters-12", + "external_tool_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-212-configure-mandatory-hardware-parameters-16", "mandatory_text": "100% mandatory (0% optional)", - "auto_changed_by": "Mission Planner. If you have not done this step in Mission Planner yet, close this application and use Mission Planner." + "auto_changed_by": "Mission Planner. If you have not done this step in Mission Planner yet, close this application and use Mission Planner" }, "12_general_configuration.param": { "blog_text": "General configuration parameters for the vehicle, including flight modes and safety settings.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-211-general-configuration-25", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-213-general-configuration-29", "wiki_text": "", "wiki_url": "", "external_tool_text": "ArduPilot Hardware report", @@ -111,27 +111,37 @@ }, "13_logging.param": { "blog_text": "Configures logging parameters, including what data is logged and how it's stored.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-213-configure-logging-27", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-215-configure-logging-31", "wiki_text": "Downloading and Analyzing Data Logs in Mission Planner", "wiki_url": "https://ardupilot.org/copter/docs/common-downloading-and-analyzing-data-logs-in-mission-planner.html", "external_tool_text": "Motor/Propeller order and direction test", - "external_tool_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-214-motorpropeller-order-and-direction-test-28", + "external_tool_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-216-motorpropeller-order-and-direction-test-32", "mandatory_text": "100% mandatory (0% optional)", "auto_changed_by": "" }, - "14_pid_adjustment.param": { + "14_motor.param": { + "blog_text": "ESC, Motor and propeller configurations.", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#motor-thrust-scalinghttpsardupilotorgcopterdocsmotor-thrust-scalinghtml-mot_thst_expohttpsardupilotorgcopterdocsparametershtmlmot-thst-expo-mot_spin_minhttpsardupilotorgcopterdocsparametershtmlmot-spin-min-and-mot_spin_maxhttpsardupilotorgcopterdocsparametershtmlmot-spin-max-33", + "wiki_text": "Motor Thrust Scaling", + "wiki_url": "https://ardupilot.org/copter/docs/motor-thrust-scaling.html", + "external_tool_text": "", + "external_tool_url": "", + "mandatory_text": "40% mandatory (60% optional)", + "auto_changed_by": "" + }, + "15_pid_adjustment.param": { "blog_text": "Contains parameters for adjusting the Proportional-Integral-Derivative (PID) controllers, crucial for tuning the vehicle's flight characteristics.", "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-215-optional-pid-adjustment-30", "wiki_text": "Manual tuning of Roll and Pitch", "wiki_url": "https://ardupilot.org/copter/docs/ac_rollpitchtuning.html", "external_tool_text": "param_pid_adjustment_update.py", - "external_tool_url": "", + "external_tool_url": "https://github.com/ArduPilot/MethodicConfigurator/blob/master/MethodicConfigurator/param_pid_adjustment_update.py", "mandatory_text": "20% mandatory (80% optional)", "auto_changed_by": "" }, - "15_remote_id.param": { + "16_remote_id.param": { "blog_text": "Sets the remote ID for the vehicle, allowing it to comply with local laws.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-216-remote-id-aka-drone-id-31", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-218-remote-id-aka-drone-id-35", "wiki_text": "Remote ID (aka Drone ID)", "wiki_url": "https://ardupilot.org/copter/docs/common-remoteid.html", "external_tool_text": "Dronetag BS user manual", @@ -139,9 +149,9 @@ "mandatory_text": "0% mandatory (100% optional)", "auto_changed_by": "" }, - "16_notch_filter_setup.param": { + "17_notch_filter_setup.param": { "blog_text": "Configures the notch filter settings, used to reduce noise in the signal from the gyroscope.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-217-notch-filters-setup-32", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-219-notch-filters-setup-36", "wiki_text": "Managing Gyro Noise with the Dynamic Harmonic Notch Filters", "wiki_url": "https://ardupilot.org/copter/docs/common-imu-notch-filtering.html", "external_tool_text": "", @@ -149,9 +159,9 @@ "mandatory_text": "100% mandatory (0% optional)", "auto_changed_by": "" }, - "17_notch_filter_results.param": { + "18_notch_filter_results.param": { "blog_text": "Records the results of the notch filter setup, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-3-first-flight-motor-thrust-hover-and-harmonic-notch-data-collection-33", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-3-first-flight-motor-thrust-hover-and-harmonic-notch-data-collection-37", "wiki_text": "Managing Gyro Noise with the Dynamic Harmonic Notch Filters", "wiki_url": "https://ardupilot.org/copter/docs/common-imu-notch-filtering.html", "external_tool_text": "Ardupilot Filter Review tool 100", @@ -159,9 +169,9 @@ "mandatory_text": "100% mandatory (0% optional)", "auto_changed_by": "" }, - "18_throttle_controller.param": { + "19_throttle_controller.param": { "blog_text": "Configures settings for the throttle controller, including throttle curve and failsafe behavior.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-32-configure-the-throttle-controller-35", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-32-configure-the-throttle-controller-39", "wiki_text": "Test AltHold", "wiki_url": "https://ardupilot.org/copter/docs/initial-tuning-flight.html#test-althold", "external_tool_text": "", @@ -169,29 +179,69 @@ "mandatory_text": "100% mandatory (0% optional)", "auto_changed_by": "" }, - "19_inflight_magnetometer_fit_setup.param": { + "20_quick_tune_setup.param": { + "blog_text": "Set up the in-flight VTOL-quicktune lua script to tune the PIDs before the MAGFit flight.", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-4-second-flight-pid-vtol-quiktune-lua-script-or-manual-pid-tune-40", + "wiki_text": "If lua scripting is not possible, do a manual tune instead", + "wiki_url": "https://ardupilot.org/copter/docs/ac_rollpitchtuning.html", + "external_tool_text": "VTOL-quicktune lua script", + "external_tool_url": "https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Scripting/applets/VTOL-quicktune.md", + "mandatory_text": "80% mandatory (20% optional)", + "auto_changed_by": "" + }, + "21_quick_tune_results.param": { + "blog_text": "Results of the in-flight VTOL-quicktune lua script PIDs before the MAGFit flight.", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-4-second-flight-pid-vtol-quiktune-lua-script-or-manual-pid-tune-40", + "wiki_text": "If lua scripting is not possible, do a manual tune instead", + "wiki_url": "https://ardupilot.org/copter/docs/ac_rollpitchtuning.html", + "external_tool_text": "VTOL-quicktune lua script", + "external_tool_url": "https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Scripting/applets/VTOL-quicktune.md", + "mandatory_text": "80% mandatory (20% optional)", + "auto_changed_by": "VTOL-quicktune lua script" + }, + "22_inflight_magnetometer_fit_setup.param": { "blog_text": "Sets up parameters for the in-flight magnetometer calibration, ensuring accurate compass heading.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-4-second-flight-magfit-36", - "wiki_text": "Magnetic Interference", - "wiki_url": "https://ardupilot.org/copter/docs/common-magnetic-interference.html", - "external_tool_text": "", - "external_tool_url": "", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-5-third-flight-magfit-41", + "wiki_text": "If lua scripting is not possible do compassmot instead", + "wiki_url": "https://ardupilot.org/copter/docs/common-compass-setup-advanced.html#compassmot-compensation-for-interference-from-the-power-wires-escs-and-motors", + "external_tool_text": "ArduPilot MAGFit in flight compass calibration", + "external_tool_url": "https://firmware.ardupilot.org/Tools/WebTools/MAGFit/", "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "20_inflight_magnetometer_fit_results.param": { + "23_inflight_magnetometer_fit_results.param": { "blog_text": "Records the results of the in-flight magnetometer calibration, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#inflight-magfit-calibrationhttpsardupilotorgcopterdocscommon-magfithtmlusing-mavexplorer-s-integrated-magfit-utility-37", - "wiki_text": "Magnetic Interference", - "wiki_url": "https://ardupilot.org/copter/docs/common-magnetic-interference.html", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-5-third-flight-magfit-41", + "wiki_text": "If lua scripting is not possible do compassmot instead", + "wiki_url": "https://ardupilot.org/copter/docs/common-compass-setup-advanced.html#compassmot-compensation-for-interference-from-the-power-wires-escs-and-motors", "external_tool_text": "ArduPilot MAGFit in flight compass calibration", "external_tool_url": "https://firmware.ardupilot.org/Tools/WebTools/MAGFit/", "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "MAGFit Webtool and YOU manually uploaded the result to the FC already" }, - "21_evaluate_the_aircraft_tune_ff_disable.param": { + "24_quick_tune_setup.param": { + "blog_text": "Set up the in-flight VTOL-quicktune lua script to tune the PIDs after the MAGFit flight.", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-6-fourth-flight-pid-vtol-quiktune-lua-script-or-manual-pid-tune-optional-43", + "wiki_text": "If lua scripting is not possible, do a manual tune instead", + "wiki_url": "https://ardupilot.org/copter/docs/ac_rollpitchtuning.html", + "external_tool_text": "VTOL-quicktune lua script", + "external_tool_url": "https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Scripting/applets/VTOL-quicktune.md", + "mandatory_text": "30% mandatory (70% optional)", + "auto_changed_by": "" + }, + "25_quik_tune_results.param": { + "blog_text": "Results of the in-flight VTOL-quicktune lua script PIDs after the MAGFit flight.", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-6-fourth-flight-pid-vtol-quiktune-lua-script-or-manual-pid-tune-optional-43", + "wiki_text": "If lua scripting is not possible, do a manual tune instead", + "wiki_url": "https://ardupilot.org/copter/docs/ac_rollpitchtuning.html", + "external_tool_text": "VTOL-quicktune lua script", + "external_tool_url": "https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Scripting/applets/VTOL-quicktune.md", + "mandatory_text": "30% mandatory (70% optional)", + "auto_changed_by": "VTOL-quicktune lua script" + }, + "26_evaluate_the_aircraft_tune_ff_disable.param": { "blog_text": "Contains parameters for evaluating the aircraft's tuning with feedforward control disabled, useful for comparison.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-5-third-flight-evaluate-the-aircraft-tune-part-1-38", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-7-fifth-flight-evaluate-the-aircraft-tune-part-1-44", "wiki_text": "Evaluating the aircraft tune", "wiki_url": "https://ardupilot.org/copter/docs/evaluating-the-aircraft-tune.html#evaluating-the-aircraft-tune", "external_tool_text": "", @@ -199,9 +249,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "22_evaluate_the_aircraft_tune_ff_enable.param": { + "27_evaluate_the_aircraft_tune_ff_enable.param": { "blog_text": "Contains parameters for evaluating the aircraft's tuning with feedforward control enabled, for optimal performance.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-6-fourth-flight-evaluate-the-aircraft-tune-part-2-39", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-8-sixth-flight-evaluate-the-aircraft-tune-part-2-45", "wiki_text": "Evaluating the aircraft tune", "wiki_url": "https://ardupilot.org/copter/docs/evaluating-the-aircraft-tune.html#evaluating-the-aircraft-tune", "external_tool_text": "", @@ -209,9 +259,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "23_autotune_roll_setup.param": { + "28_autotune_roll_setup.param": { "blog_text": "Sets up parameters for the roll axis autotuning process, aiming to optimize roll response.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-7-autotune-flightshttpsardupilotorgcopterdocsautotunehtml-40", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-9-autotune-flightshttpsardupilotorgcopterdocsautotunehtml-46", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -219,9 +269,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "24_autotune_roll_results.param": { + "29_autotune_roll_results.param": { "blog_text": "Records the results of the roll axis autotuning, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#roll-axis-41", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#roll-axis-47", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -229,9 +279,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "ArduPilot autotune or quicktune lua script" }, - "25_autotune_pitch_setup.param": { + "30_autotune_pitch_setup.param": { "blog_text": "Sets up parameters for the pitch axis autotuning process, aiming to optimize pitch response.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#pitch-axis-42", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#pitch-axis-48", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -239,9 +289,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "26_autotune_pitch_results.param": { + "31_autotune_pitch_results.param": { "blog_text": "Records the results of the pitch axis autotuning, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#pitch-axis-42", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#pitch-axis-48", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -249,9 +299,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "ArduPilot autotune or quicktune lua script" }, - "27_autotune_yaw_setup.param": { + "32_autotune_yaw_setup.param": { "blog_text": "Sets up parameters for the yaw axis autotuning process, aiming to optimize yaw response.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-axis-43", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-axis-49", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -259,9 +309,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "28_autotune_yaw_results.param": { + "33_autotune_yaw_results.param": { "blog_text": "Records the results of the yaw axis autotuning, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-axis-43", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-axis-49", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -269,9 +319,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "ArduPilot autotune or quicktune lua script" }, - "29_autotune_yawd_setup.param": { + "34_autotune_yawd_setup.param": { "blog_text": "Sets up parameters for the yaw rate autotuning process, aiming to optimize yaw rate response.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-d-axishttpswwwyoutubecomwatchvb76bpeercekt963s-44", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-d-axishttpswwwyoutubecomwatchvb76bpeercekt963s-50", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -279,9 +329,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "30_autotune_yawd_results.param": { + "35_autotune_yawd_results.param": { "blog_text": "Records the results of the yaw rate autotuning, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-d-axishttpswwwyoutubecomwatchvb76bpeercekt963s-44", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-d-axishttpswwwyoutubecomwatchvb76bpeercekt963s-50", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -289,9 +339,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "ArduPilot autotune or quicktune lua script" }, - "31_autotune_roll_pitch_retune_setup.param": { + "36_autotune_roll_pitch_retune_setup.param": { "blog_text": "Sets up parameters for the roll and pitch axis retuning process, refining the vehicle's flight characteristics.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#re-tune-the-roll-and-pitch-axishttpsyoutubejk0i97dmsk0sif1lyl2iq8guuenclt2535-45", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#re-tune-the-roll-and-pitch-axishttpsyoutubejk0i97dmsk0sif1lyl2iq8guuenclt2535-51", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -299,9 +349,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "" }, - "32_autotune_roll_pitch_retune_results.param": { + "37_autotune_roll_pitch_retune_results.param": { "blog_text": "Records the results of the roll and pitch axis retuning, providing data for analysis and adjustment.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#re-tune-the-roll-and-pitch-axishttpsyoutubejk0i97dmsk0sif1lyl2iq8guuenclt2535-45", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#re-tune-the-roll-and-pitch-axishttpsyoutubejk0i97dmsk0sif1lyl2iq8guuenclt2535-51", "wiki_text": "AutoTune", "wiki_url": "https://ardupilot.org/copter/docs/autotune.html", "external_tool_text": "VTOL Quiktune Lua script", @@ -309,9 +359,9 @@ "mandatory_text": "80% mandatory (20% optional)", "auto_changed_by": "ArduPilot autotune or quicktune lua script" }, - "33_windspeed_estimation.param": { + "38_windspeed_estimation.param": { "blog_text": "Configures parameters for windspeed estimation, crucial for accurate navigation and stabilization in windy conditions.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-9-windspeed-estimation-flightshttpsardupilotorgcopterdocsairspeed-estimationhtml-47", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-11-windspeed-estimation-flightshttpsardupilotorgcopterdocsairspeed-estimationhtml-53", "wiki_text": "Windspeed Estimation", "wiki_url": "https://ardupilot.org/copter/docs/airspeed-estimation.html", "external_tool_text": "free online tool to overlay a grid over an image", @@ -319,9 +369,9 @@ "mandatory_text": "60% mandatory (40% optional)", "auto_changed_by": "" }, - "34_barometer_compensation.param": { + "39_barometer_compensation.param": { "blog_text": "Sets up parameters for barometer compensation, ensuring accurate altitude estimation.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-10-baro-compensation-flightshttpsardupilotorgcopterdocsairspeed-estimationhtmlbarometer-position-error-compensation-48", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#h-12-baro-compensation-flightshttpsardupilotorgcopterdocsairspeed-estimationhtmlbarometer-position-error-compensation-1", "wiki_text": "Barometer Position Error Compensation", "wiki_url": "https://ardupilot.org/copter/docs/airspeed-estimation.html#barometer-position-error-compensation", "external_tool_text": "Lua script provided by Yuri", @@ -329,9 +379,9 @@ "mandatory_text": "60% mandatory (40% optional)", "auto_changed_by": "" }, - "35_system_id_roll.param": { + "40_system_id_roll.param": { "blog_text": "Configures parameters for the roll axis system identification, part of the tuning process.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-11-system-identification-flightshttpsardupilotorgcopterdocssystemid-mode-operationhtml-49", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#h-13-system-identification-flightshttpsardupilotorgcopterdocssystemid-mode-operationhtml-2", "wiki_text": "Matlab and Simulink IAV scripts for system identification", "wiki_url": "https://ardupilot.org/copter/docs/systemid-mode-operation.html#identification-of-a-multicopter", "external_tool_text": "ArduCopter Simulink Model", @@ -339,9 +389,9 @@ "mandatory_text": "20% mandatory (80% optional)", "auto_changed_by": "" }, - "36_system_id_pitch.param": { + "41_system_id_pitch.param": { "blog_text": "Configures parameters for the pitch axis system identification, part of the tuning process.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#pitch-rate-mathematical-model-51", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#pitch-rate-mathematical-model-4", "wiki_text": "Matlab and Simulink IAV scripts for system identification", "wiki_url": "https://ardupilot.org/copter/docs/systemid-mode-operation.html#identification-of-a-multicopter", "external_tool_text": "ArduCopter Simulink Model", @@ -349,9 +399,9 @@ "mandatory_text": "20% mandatory (80% optional)", "auto_changed_by": "" }, - "37_system_id_yaw.param": { + "42_system_id_yaw.param": { "blog_text": "Configures parameters for the yaw axis system identification, part of the tuning process.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#yaw-rate-mathematical-model-52", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#yaw-rate-mathematical-model-5", "wiki_text": "Matlab and Simulink IAV scripts for system identification", "wiki_url": "https://ardupilot.org/copter/docs/systemid-mode-operation.html#identification-of-a-multicopter", "external_tool_text": "ArduCopter Simulink Model", @@ -359,9 +409,9 @@ "mandatory_text": "20% mandatory (80% optional)", "auto_changed_by": "" }, - "38_system_id_thrust.param": { + "43_system_id_thrust.param": { "blog_text": "Configures parameters for the thrust axis system identification, part of the tuning process.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#thrust-mathematical-model-53", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#thrust-mathematical-model-6", "wiki_text": "Matlab and Simulink IAV scripts for system identification", "wiki_url": "https://ardupilot.org/copter/docs/systemid-mode-operation.html#identification-of-a-multicopter", "external_tool_text": "ArduCopter Simulink Model", @@ -369,9 +419,9 @@ "mandatory_text": "20% mandatory (80% optional)", "auto_changed_by": "" }, - "39_analytical_pid_optimization.param": { + "44_analytical_pid_optimization.param": { "blog_text": "Contains parameters for analytical PID optimization, aiming to find the optimal PID values for the vehicle.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#analytical-multicopter-flight-controller-pid-optimizationhttpsdiscussardupilotorgtanalytical-multicopter-flight-controller-pid-optimization109759-54", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#analytical-multicopter-flight-controller-pid-optimizationhttpsdiscussardupilotorgtanalytical-multicopter-flight-controller-pid-optimization109759-7", "wiki_text": "", "wiki_url": "", "external_tool_text": "IAV analytical PID model optimization", @@ -379,9 +429,9 @@ "mandatory_text": "20% mandatory (80% optional)", "auto_changed_by": "" }, - "40_everyday_use.param": { + "45_everyday_use.param": { "blog_text": "Configures parameters for everyday use, ensuring the vehicle is safe and stable for routine flying.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-12-productive-configuration-55", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#h-14-productive-configuration-8", "wiki_text": "", "wiki_url": "", "external_tool_text": "", @@ -389,9 +439,9 @@ "mandatory_text": "100% mandatory (0% optional)", "auto_changed_by": "" }, - "41_position_controller.param": { + "46_position_controller.param": { "blog_text": "Sets up parameters for the position controller, crucial for waypoint navigation and precision flying.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-13-position-controller-56", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#h-15-position-controller-9", "wiki_text": "", "wiki_url": "", "external_tool_text": "", @@ -399,9 +449,9 @@ "mandatory_text": "40% mandatory (60% optional)", "auto_changed_by": "" }, - "42_precision_land.param": { + "47_precision_land.param": { "blog_text": "Configures parameters for precision landing, ensuring accurate and safe landing of the vehicle.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-14-precision-land-1", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#h-16-precision-land-10", "wiki_text": "Precision Landing and Loiter", "wiki_url": "https://ardupilot.org/copter/docs/precision-landing-with-irlock.html", "external_tool_text": "", @@ -409,9 +459,9 @@ "mandatory_text": "0% mandatory (100% optional)", "auto_changed_by": "" }, - "43_guided_operation.param": { + "48_guided_operation.param": { "blog_text": "Sets up parameters for guided operation, including waypoint navigation and obstacle avoidance.", - "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842#h-15-guided-operation-without-rc-transmitter-2", + "blog_url": "https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/3#h-17-guided-operation-without-rc-transmitter-11", "wiki_text": "Guided Mode", "wiki_url": "https://ardupilot.org/copter/docs/ac2_guidedmode.html", "external_tool_text": "", diff --git a/MethodicConfigurator/frontend_tkinter_component_editor.py b/MethodicConfigurator/frontend_tkinter_component_editor.py index a3d0ea7..c74301b 100644 --- a/MethodicConfigurator/frontend_tkinter_component_editor.py +++ b/MethodicConfigurator/frontend_tkinter_component_editor.py @@ -181,7 +181,7 @@ def save_data(self): # Save the updated data back to the JSON file if self.local_filesystem.save_vehicle_components_json_data(self.data): - show_error_message("Error", "Failed to save data to file.") + show_error_message("Error", "Failed to save data to file. Is the destination write protected?") else: logging_info("Data saved successfully.") self.root.destroy() diff --git a/USERMANUAL.md b/USERMANUAL.md index 303b375..8c5d803 100644 --- a/USERMANUAL.md +++ b/USERMANUAL.md @@ -1,244 +1,240 @@ -# ArduPilot Methodic Configurator User Manual - -## Overview - -Amilcar Lucas's - ArduPilot Methodic Configurator is a Python tool designed to simplify the configuration of ArduPilot drones. -It provides a graphical user interface (GUI) for managing, editing and visualizing drone parameter files, as well as writing parameters to the vehicle. -It automates the tasks described in the [How to methodically tune (almost) any multicopter using ArduCopter forum Blog post](https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/1) - -## Usage - -Before starting the application on your PC you should connect a flight controller to the PC and wait at least seven seconds. - -### Flight Controller Connection Selection Interface - -![Flight controller connaction selection window](images/App_screenshot_FC_connection.png) - -This interface allows users to select or add a connection to a flight controller **if one was not yet auto-detected**. -It provides three main options for connecting to a flight controller: - -#### Option 1: Auto-connect - -This option automatically attempts to connect to a flight controller that has been connected to the PC. The user must waits for at least 7 seconds for the flight controller to fully boot before attempting the connection. - -#### Option 2: Manually Select or Add a Connection - -This option allows users to manually select an existing flight controller connection or add a new one. It provides a dropdown menu listing all available connections, including an option to add a new connection. - -**Steps:** - - - To select an existing connection, use the dropdown menu to choose the desired connection. - - To add a new connection, select "Add another" from the dropdown menu. A dialog box will prompt you to enter the connection string for the new flight controller. - -#### Option 3: Skip Flight Controller Connection - -This option allows users to skip the flight controller connection process. It proceeds with editing the intermediate `.param` files on disk without fetching parameter values nor parameter default parameter values from the flight controller. - -### Vehicle Directory Selection Interface - -![Vehicle Selection Window](images/App_screenshot_Vehicle_directory.png) - -This interface allows users to select a vehicle directory that contains intermediate parameter files for ArduPilot **if one was not specified with the `--vehicle-dir` command line parameter**. -It provides two main options for selecting a vehicle directory: - -#### Option 1: Create a New Vehicle Configuration Directory Based on an Existing Template - -This option allows users to create a new vehicle configuration directory by copying files from an existing template directory. It's useful for setting up a new vehicle configuration quickly. - -**Steps:** - - - Use the "Template directory" `...` button to select the existing vehicle template directory containing the intermediate parameter files to be copied. - - Use the "Base directory" `...` button to select the existing directory where the new vehicle directory will be created. - - Enter the name for the new vehicle directory in the "New vehicle name" field. - - Click the "Create vehicle directory from template" button to create the new vehicle directory on the base directory and copy the template files to it. - -#### Option 2: Use an Existing Vehicle Configuration Directory - -This option allows users to select an existing vehicle configuration directory that already contains intermediate parameter files. It's useful for editing an existing vehicle configuration. - -**Steps:** - - - Use the "Vehicle directory" `...` button to select the existing vehicle directory containing the intermediate parameter files. - -![Application Screenshot](images/App_screenshot2.png) - -### 1. Select a Vehicle Directory - -- **Click the `...` button next to the `Vehicle directory:` label to open a directory selection dialog.** -- **Navigate to the directory containing the vehicle-specific intermediate parameter files (if you are running it for the first time use the one you just created) and click `OK`.** -- vehicle-specific intermediate parameter filenames start with two digits followed by an underscore and end in `.param` - -### 2. Select an Intermediate Parameter File - -- **Use the `Current intermediate parameter file:` combobox to select an intermediate parameter file.** -- The first available intermediate parameter file not named `00_default.param` will be selected by default -- If the selection changes, the parameter table will update to display the parameters from the selected file. - -### 3. Select a Flight Controller Connection - -- **If a flight controller is detected and the `--device` command-line parameter was not explicitly set, it will connect to it.** -- The `Flight controller connection:` combobox lists available connections. -- Select a connection to establish communication with the flight controller. - -### 4. Viewing Documentation - -- **Click on the documentation labels to open the corresponding documentation in a web browser.** -- Documentation is split into four categories: - - **Blog Post - ArduPilot's forum Methodic configuration Blog post relevant for the current file** - - Wiki - ArduPilot's wiki page relevant for the current file - - External tool -External tool or documentation relevant for the current file - - Mandatory - Mandatory level of the current file: - - 100% you MUST use this file to configure the vehicle, - - 0% you can ignore this file if it does not apply to your vehicle -- Hover over the labels to see tooltips with additional information. - -### 5. Editing Parameters - -- The parameter table presents the parameters in the current intermediate parameter file -- The first colum is the ArduPilot parameter name used in that row. - - ReadOnly parameters are presented on a *red background*🟥, they should not be present in a intermediate configuration file because under normal conditions they can not be changed - - Sensor calibration parameters are presented on a *yellow background*🟨, they are vehicle-instance dependent and can NOT be reused between similar vehicles -- The current parameter value read from your FC is on the `Current Value` column. - - Not available parameter values are presented as `N/A` on a *orange background*🟧 - - Parameters that have the default parameter value are presented on a *light blue background* 🟦 -- The new value is the value in the intermediate file and will be written to the flight controller. **You MUST change the value to meet your needs**. The provided values in the `example_vehicle` directory are just examples. -- **In the parameter table, you can edit the `New Value` and `Change Reason` entries for each parameter.** -- **You MUST edit the `Change Reason` so that other users understand why you changed the parameter to that particular `new value`** -- Check the `Write` checkbox to select parameters to be written to the flight controller -- **Hover over the labels to see tooltips with additional information.** -- The entire ArduPilot official parameter documentation is available on the tooltip, no need to use a browser to search it - -### 6. Focus on the changed parameters (optional) - -- You can focus on the changed parameters by ticking the "See only changed parameters" checkbox -- Usually you want to see all parameters and look at their mouse-over tooltips to decide if and how you want to change them - -### 7. Writing Parameters to the Flight Controller - -- You can also jump to a particular file using the combobox as explained in [2. Select an Intermediate Parameter File](#2-select-an-intermediate-parameter-file) -- **After editing parameters, click the `Write selected params to FC, and advance to next param file` button to write the (`Write` checkbox) selected parameters to the flight controller.** -- All parameter's `New Value` and `Change Reason` will be written to the current intermediate parameter file, irrespective of the `Write` checkboxes -- The application will them: - - write the selected and changed parameters to the flight controller - - reset the flight controller if necessary for the new parameter values to take effect - - write the parameters again, because before the reset some parameters might have been not visible/writeable - - read all the parameters from the flight controller, and validate their value - - if some parameters failed to write correctly it asks the user if he wants to retry -- **The application will then advance to the next parameter file.** - -### 8. Skipping to the Next Parameter File (optional) - -- If you want to skip the current parameter file without writing any changes, click the `Skip parameter file` button. - -### 9. Completing the Configuration Process - -Once all the intermediate parameter files have been processed, the ArduPilot Methodic Configurator will display a summary message box. -In other words when the last available intermediate parameter file is selected (see [2. Select an Intermediate Parameter File](#2-select-an-intermediate-parameter-file)) and either `Write selected params to FC, and advance to next param file` or `Skip parameter file` button is pressed. -This message box provides a comprehensive overview of the configuration process, including the number of parameters that were kept at their default values, the number of non-default read-only parameters that were ignored, and the number of non-default writable parameters that were updated. - -![Configuration summary message box](images/Last_parameter_file_processed.png) - -The summary message box will also categorize the writable parameters into four groups: - -```mermaid -pie title Summary files example - "Unchanged parameters" : 728 - "Non-default read-only parameters - non-default_read-only.param" : 8 - "Non-default writable sensor calibrations - non-default_writable_calibrations.param" : 71 - "Non-default writable non-sensor-calibrations - non-default_writable_non-calibrations.param" : 217 -``` - -- **Unchanged parameters**: These parameters left unchanged and are displayed on a light blue background 🟦. - -- **Non-default read-only parameters**: These parameters are read-only and cannot be changed. They are typically related to system configurations that can not be modified and are displayed on a red background 🟥. - -- **Non-default writable sensor calibrations**: These parameters are vehicle-instance dependent and cannot be reused between similar vehicles. They are typically related to sensor calibration and should be adjusted for each individual vehicle and are displayed on a yellow background 🟨. - -- **Non-default writable non-sensor-calibrations**: These parameters can be reused between similar vehicles. They are not related to sensor calibration and are generally applicable to a range of vehicles with the same configuration. - -After the summary message box is displayed, the application will write the summary information to separate files for easy reference and documentation. These files include: - -- `complete.param`: Contains all parameters contained in the flight controller. -- `non-default_read-only.param`: Contains all non-default read-only 🟥 parameters. You can ignore these. -- `non-default_writable_calibrations.param`: Contains all non-default writable sensor calibration 🟨 parameters. These are non-reusable. -- `non-default_writable_non-calibrations.param`: Contains all non-default writable non-sensor-calibration parameters. These are reusable across similar vehicles. - - -The summary files provide a clear overview of the changes made. - -The files are also automatically zipped into a file with the same name as the vehicle directory, inside the vehicle directory. - -![Parameter files zipped message box](images/Parameter_files_zipped.png) - -You should upload this `.zip` file or the `non-default_writable_non-calibrations.param` file to the [ArduPilot Methodic configuration Blog post](https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842) - -Once the summary files are written, the application will close the connection to the flight controller and terminate. - -## Configuring - -### 1. Configuration files - -Most users will not need to configure the tool, but if you do want to do it you can. - -The ArduPilot Methodic Configurator uses several configuration files to manage and visualize drone parameters. These files are crucial for the tool's operation and are organized in a specific directory structure. - -- **Intermediate Parameter Files**: These files are located in the vehicle-specific directory and are named with two digits followed by an underscore, ending in `.param`. They contain the parameters that need to be configured for the drone. Each file corresponds to a specific configuration step or aspect of the drone's setup. - -- **Documentation File**: This file provides documentation for each intermediate parameter file. It is used to display relevant information about the parameters and their configuration process. The `file_documentation.json` documentation file is first searched in the selected vehicle-specific directory, and if not found, in the directory where the script is located. - -- **Default Parameter Values File**: The `00_defaults.param` file is located in the vehicle-specific directory. -If the file does not exist, or is invalid, use this command to regenerate it - -```bash -./extract_param_defaults.py bin_log_file.bin > 00_default.param -``` - -- **ArduPilot parameter documentation File**: The `apm.pdef.xml` contains documentation and metadata for each ArduPilot parameter in an XML format. -The file is first searched in the selected vehicle-specific directory, and if not found, in the directory where the script is located, and if not found automatically downloaded from the internet. -The only version available in the internet ist the latest 4.6.0-DEV. -So until that changes you need to genet´rate this file yourself for the firmware version that you want to use. - -The tool uses these files to manage the configuration process, allowing users to select and edit parameters, and to write the changes back to the flight controller. The intermediate parameter files are the primary focus of the user interface, as they contain the parameters that the user can modify. The documentation files provide context and guidance for each parameter. - - -## Command Line Usage - -The ArduPilot Methodic Configurator can be started from the command line. -The command line interface provides several options to customize the behavior of the tool. - -To use the command line interface, navigate to the directory where the `ardupilot_methodic_configurator.py` script is located and run the script with the appropriate arguments. - -Here is a list of command line options: - -- **`--device`**: The MAVLink connection string to the flight controller. It defaults to autoconnection to the first available flight controller. -- **`--vehicle-dir`**: The directory containing intermediate parameter files. Defaults to the current working directory directory. -- **`--n`**: Start directly on the nth intermediate parameter file (skips previous files). Default is 0. -- **`--loglevel`**: The logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL). Default is INFO. -- **`-t` or `--vehicle-type`**: The type of the vehicle. Choices are 'AP_Periph', 'AntennaTracker', 'ArduCopter', 'ArduPlane', 'ArduSub', 'Blimp', 'Heli', 'Rover', 'SITL'. Defaults to 'ArduCopter'. -- **`-r` or `--reboot-time`**: Flight controller reboot time. Default is 7. -- **`-v` or `--version`**: Display version information and exit. - -Example usage: - -```bash -python ardupilot_methodic_configurator.py --device="tcp:127.0.0.1:5760" --vehicle-dir="/path/to/params" --n=0 --loglevel=INFO -t=ArduCopter -``` - -This command will connect to the flight controller at `tcp:127.0.0.1:5760`, use the parameter files in the specified directory, start with the first parameter file, set the logging level to INFO, and target the ArduCopter vehicle type. - -For more detailed information on the command line options, you can run the script with the `-h` or `--help` flag to display the help message: - -```bash -python ardupilot_methodic_configurator.py --help -``` - -This will show a list of all available command line options along with a brief description of each. - - -## Troubleshooting - -If you encounter any issues during the configuration process, refer to the error messages provided by the application. -These messages can guide you to the specific problem and suggest possible solutions. -If the issue persists, consider consulting Amilcar Lucas at ArduPilot community forums or re-read this documentation. - - +# ArduPilot Methodic Configurator User Manual + +## Overview + +Amilcar Lucas's - ArduPilot Methodic Configurator is a Python tool designed to simplify the configuration of ArduPilot drones. +It provides a graphical user interface (GUI) for managing, editing and visualizing drone parameter files, as well as writing parameters to the vehicle. +It automates the tasks described in the [How to methodically tune (almost) any multicopter using ArduCopter forum Blog post](https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842/1) + +## Usage + +Before starting the application on your PC you should connect a flight controller to the PC and wait at least seven seconds. + +### Flight Controller Connection Selection Interface + +![Flight controller connaction selection window](images/App_screenshot_FC_connection.png) + +This interface allows users to select or add a connection to a flight controller **if one was not yet auto-detected**. +It provides three main options for connecting to a flight controller: + +#### Option 1: Auto-connect + +This option automatically attempts to connect to a flight controller that has been connected to the PC. The user must wait for at least 7 seconds for the flight controller to fully boot before attempting the connection. + +#### Option 2: Manually Select or Add a Connection + +This option allows users to manually select an existing flight controller connection or add a new one. It provides a dropdown menu listing all available connections, including an option to add a new connection. + +**Steps:** + + - To select an existing connection, use the dropdown menu to choose the desired connection. + - To add a new connection, select "Add another" from the dropdown menu. A dialog box will prompt you to enter the connection string for the new flight controller. + +#### Option 3: Skip Flight Controller Connection + +This option allows users to skip the flight controller connection process. It proceeds with editing the intermediate `.param` files on disk without fetching parameter values nor parameter default parameter values from the flight controller. + +### Vehicle Directory Selection Interface + +![Vehicle Selection Window](images/App_screenshot_Vehicle_directory.png) + +This interface allows users to select a vehicle directory that contains intermediate parameter files for ArduPilot **if one was not specified with the `--vehicle-dir` command line parameter**. +It provides two main options for selecting a vehicle directory: + +#### Option 1: Create a New Vehicle Configuration Directory Based on an Existing Template + +This option allows users to create a new vehicle configuration directory by copying files from an existing template directory. It's useful for setting up a new vehicle configuration quickly. + +**Steps:** + + - Use the "Template directory" `...` button to select the existing vehicle template directory containing the intermediate parameter files to be copied. + - Use the "Base directory" `...` button to select the existing directory where the new vehicle directory will be created. + - Enter the name for the new vehicle directory in the "New vehicle name" field. + - Click the "Create vehicle directory from template" button to create the new vehicle directory on the base directory and copy the template files to it. + +#### Option 2: Use an Existing Vehicle Configuration Directory + +This option allows users to select an existing vehicle configuration directory that already contains intermediate parameter files. It's useful for editing an existing vehicle configuration. + +**Steps:** + + - Use the "Vehicle directory" `...` button to select the existing vehicle directory containing the intermediate parameter files. + +![Application Screenshot](images/App_screenshot2.png) + +### 1. Select a Vehicle Directory + +- **Click the `...` button next to the `Vehicle directory:` label to open a directory selection dialog.** +- **Navigate to the directory containing the vehicle-specific intermediate parameter files (if you are running it for the first time use the one you just created) and click `OK`.** +- vehicle-specific intermediate parameter filenames start with two digits followed by an underscore and end in `.param` + +### 2. Select an Intermediate Parameter File + +- **Use the `Current intermediate parameter file:` combobox to select an intermediate parameter file.** +- The first available intermediate parameter file not named `00_default.param` will be selected by default +- If the selection changes, the parameter table will update to display the parameters from the selected file. + +### 3. Select a Flight Controller Connection + +- **If a flight controller is detected and the `--device` command-line parameter was not explicitly set, it will connect to it.** +- The `Flight controller connection:` Combobox lists available connections. +- Select a connection to establish communication with the flight controller. + +### 4. Viewing Documentation + +- **Click on the documentation labels to open the corresponding documentation in a web browser.** +- Documentation is split into four categories: + - **Blog Post - ArduPilot's forum Methodic configuration Blog post relevant to the current file** + - Wiki - ArduPilot's wiki page relevant to the current file + - External tool -External tool or documentation relevant to the current file + - Mandatory - Mandatory level of the current file: + - 100% you MUST use this file to configure the vehicle, + - 0% you can ignore this file if it does not apply to your vehicle +- Hover over the labels to see tooltips with additional information. + +### 5. Editing Parameters + +- The parameter table presents the parameters in the current intermediate parameter file +- The first colum is the ArduPilot parameter name used in that row. + - ReadOnly parameters are presented on a *red background*🟥, they should not be present in an intermediate configuration file because under normal conditions they can not be changed + - Sensor calibration parameters are presented on a *yellow background*🟨, they are vehicle-instance dependent and can NOT be reused between similar vehicles +- The current parameter value read from your FC is on the `Current Value` column. + - Not available parameter values are presented as `N/A` on an *orange background*🟧 + - Parameters that have the default parameter value are presented on a *light blue background* 🟦 +- The new value is the value in the intermediate file and will be written to the flight controller. **You MUST change the value to meet your needs**. The provided values in the `example_vehicle` directory are just examples. +- **In the parameter table, you can edit the `New Value` and `Change Reason` entries for each parameter.** +- **You MUST edit the `Change Reason` so that other users understand why you changed the parameter to that particular `new value`** +- Check the `Write` checkbox to select parameters to be written to the flight controller +- **Hover over the labels to see tooltips with additional information.** +- The entire ArduPilot official parameter documentation is available on the tooltip, no need to use a browser to search for it. + +### 6. Focus on the changed parameters (optional) + +- You can focus on the changed parameters by ticking the "See only changed parameters" checkbox +- Usually, you want to see all parameters and look at their mouse-over tooltips to decide if and how you want to change them + +### 7. Writing Parameters to the Flight Controller + +- You can also jump to a particular file using the Combobox as explained in [2. Select an Intermediate Parameter File](#2-select-an-intermediate-parameter-file) +- **After editing parameters, click the `Write selected params to FC, and advance to next param file` button to write the (`Write` checkbox) selected parameters to the flight controller.** +- All parameter's `New Value` and `Change Reason` will be written to the current intermediate parameter file, irrespective of the `Write` checkboxes +- The application will then: + - write the selected and changed parameters to the flight controller + - reset the flight controller if necessary for the new parameter values to take effect + - write the parameters again, because before the reset some parameters might have been not visible/writeable + - read all the parameters from the flight controller, and validate their value + - if some parameters fail to write correctly it asks the user if he wants to retry +- **The application will then advance to the next parameter file.** + +### 8. Skipping to the Next Parameter File (optional) + +- If you want to skip the current parameter file without writing any changes, click the `Skip parameter file` button. + +### 9. Completing the Configuration Process + +Once all the intermediate parameter files have been processed, the ArduPilot Methodic Configurator will display a summary message box. +In other words when the last available intermediate parameter file is selected (see [2. Select an Intermediate Parameter File](#2-select-an-intermediate-parameter-file)) and either `Write selected params to FC, and advance to next param file` or `Skip parameter file` button is pressed. +This message box provides a comprehensive overview of the configuration process, including the number of parameters that were kept at their default values, the number of non-default read-only parameters that were ignored, and the number of non-default writable parameters that were updated. + +![Configuration summary message box](images/Last_parameter_file_processed.png) + +The summary message box will also categorize the writable parameters into four groups: + +```mermaid +pie title Summary files example + "Unchanged parameters" : 728 + "Non-default read-only parameters - non-default_read-only.param" : 8 + "Non-default writable sensor calibrations - non-default_writable_calibrations.param" : 71 + "Non-default writable non-sensor-calibrations - non-default_writable_non-calibrations.param" : 217 +``` + +- **Unchanged parameters**: These parameters are left unchanged and are displayed on a light blue background 🟦. + +- **Non-default read-only parameters**: These parameters are read-only and cannot be changed. They are typically related to system configurations that can not be modified and are displayed on a red background 🟥. + +- **Non-default writable sensor calibrations**: These parameters are vehicle-instance dependent and cannot be reused between similar vehicles. They are typically related to sensor calibration and should be adjusted for each vehicle and are displayed on a yellow background 🟨. + +- **Non-default writable non-sensor calibrations**: These parameters can be reused between similar vehicles. They are not related to sensor calibration and are generally applicable to a range of vehicles with the same configuration. + +After the summary message box is displayed, the application will write the summary information into separate files for easy reference and documentation. These files include: + +- `complete.param`: Contains all parameters contained in the flight controller. +- `non-default_read-only.param`: Contains all non-default read-only 🟥 parameters. You can ignore these. +- `non-default_writable_calibrations.param`: Contains all non-default writable sensor calibration 🟨 parameters. These are non-reusable. +- `non-default_writable_non-calibrations.param`: Contains all non-default writable non-sensor-calibration parameters. These are reusable across similar vehicles. + + +The summary files provide a clear overview of the changes made. + +The files are also automatically zipped into a file with the same name as the vehicle directory, inside the vehicle directory. + +![Parameter files zipped message box](images/Parameter_files_zipped.png) + +You should upload this `.zip` file or the `non-default_writable_non-calibrations.param` file to the [ArduPilot Methodic configuration Blog post](https://discuss.ardupilot.org/t/how-to-methodically-tune-almost-any-multicopter-using-arducopter-4-4-x/110842) + +Once the summary files are written, the application will close the connection to the flight controller and terminate. + +## Configuring + +### 1. Configuration files + +Most users will not need to configure the tool, but if you do want to do it you can. + +The ArduPilot Methodic Configurator uses several configuration files to manage and visualize drone parameters. These files are crucial for the tool's operation and are organized in a specific directory structure. + +- **Intermediate Parameter Files**: These files are located in the vehicle-specific directory and are named with two digits followed by an underscore, ending in `.param`. They contain the parameters that need to be configured for the drone. Each file corresponds to a specific configuration step or aspect of the drone's setup. + +- **Documentation File**: This file provides documentation for each intermediate parameter file. It is used to display relevant information about the parameters and their configuration process. The `file_documentation.json` documentation file is first searched in the selected vehicle-specific directory, and if not found, in the directory where the script is located. + +- **Default Parameter Values File**: The `00_defaults.param` file is located in the vehicle-specific directory. +If the file does not exist or is invalid, use this command to regenerate it + +```bash +./extract_param_defaults.py bin_log_file.bin > 00_default.param +``` + +- **ArduPilot parameter documentation File**: The `apm.pdef.xml` contains documentation and metadata for each ArduPilot parameter in an XML format. +The file is first searched in the selected vehicle-specific directory, and if not found, in the directory where the script is located, and if not found automatically downloaded from the internet. +The only version available on the internet is the latest 4.6.0-DEV. +So until that changes you need to generate this file yourself for the firmware version that you want to use. + +The tool uses these files to manage the configuration process, allowing users to select and edit parameters, and to write the changes back to the flight controller. The intermediate parameter files are the primary focus of the user interface, as they contain the parameters that the user can modify. The documentation files provide context and guidance for each parameter. + +## Command Line Usage + +The ArduPilot Methodic Configurator can be started from the command line. +The command line interface provides several options to customize the behavior of the tool. + +To use the command line interface, navigate to the directory where the `ardupilot_methodic_configurator.py` script is located and run the script with the appropriate arguments. + +Here is a list of command line options: + +- **`--device`**: The MAVLink connection string to the flight controller. It defaults to autoconnection to the first available flight controller. +- **`--vehicle-dir`**: The directory containing intermediate parameter files. Defaults to the current working directory directory. +- **`--n`**: Start directly on the nth intermediate parameter file (skip previous files). The default is 0. +- **`--loglevel`**: The logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL). The default is INFO. +- **`-t` or `--vehicle-type`**: The type of the vehicle. Choices are 'AP_Periph', 'AntennaTracker', 'ArduCopter', 'ArduPlane', 'ArduSub', 'Blimp', 'Heli', 'Rover', 'SITL'. Defaults to 'ArduCopter'. +- **`-r` or `--reboot-time`**: Flight controller reboot time. The default is 7. +- **`-v` or `--version`**: Display version information and exit. + +Example usage: + +```bash +python ardupilot_methodic_configurator.py --device="tcp:127.0.0.1:5760" --vehicle-dir="/path/to/params" --n=0 --loglevel=INFO -t=ArduCopter +``` + +This command will connect to the flight controller at `tcp:127.0.0.1:5760`, use the parameter files in the specified directory, start with the first parameter file, set the logging level to INFO, and target the ArduCopter vehicle type. + +For more detailed information on the command line options, you can run the script with the `-h` or `--help` flag to display the help message: + +```bash +python ardupilot_methodic_configurator.py --help +``` + +This will show a list of all available command line options along with a brief description of each. + +## Troubleshooting + +If you encounter any issues during the configuration process, refer to the error messages provided by the application. +These messages can guide you to the specific problem and suggest possible solutions. +If the issue persists, consider consulting Amilcar Lucas at ArduPilot community forums or re-read this documentation. diff --git a/copy_magfit_pdef_to_template_dirs.py b/copy_magfit_pdef_to_template_dirs.py new file mode 100755 index 0000000..d912fe3 --- /dev/null +++ b/copy_magfit_pdef_to_template_dirs.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +''' +This file is part of Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator + +(C) 2024 Amilcar do Carmo Lucas, IAV GmbH + +SPDX-License-Identifier: GPL-3 +''' + +import os +import shutil +import sys + +# Define the source directory and the file to be copied +BASE_TARGET_DIR = 'vehicle_examples/diatone_taycan_mxc' +FILE_TO_COPY = '22_inflight_magnetometer_fit_setup.pdef.xml' + +# Ensure the base target directory exists +if not os.path.exists(BASE_TARGET_DIR): + print(f"Error: Base target directory {BASE_TARGET_DIR} does not exist.") + sys.exit(1) + +# Ensure the file to be copied exists +source_file_path = os.path.join('.', FILE_TO_COPY) +if not os.path.exists(source_file_path): + print(f"Error: File {source_file_path} does not exist.") + sys.exit(1) + +# Traverse the source directory and copy the file to each subdirectory +for root, dirs, files in os.walk(BASE_TARGET_DIR): + for directory in dirs: + target_dir = os.path.join(root, directory) + target_file_path = os.path.join(target_dir, FILE_TO_COPY) + shutil.copy(source_file_path, target_file_path) + print(f"Copied {FILE_TO_COPY} to {target_file_path}") diff --git a/param_reorder.py b/param_reorder.py new file mode 100755 index 0000000..b65b832 --- /dev/null +++ b/param_reorder.py @@ -0,0 +1,83 @@ +#!/usr/bin/python3 + +""" +This script renames keys in a dictionary imported from the param_filter module. +It also replaces all occurrences of the old names with the new names + in all *.py and *.md files in the current directory. +Finally, it renames the actual files on disk. +""" + +import os +import param_filter + +file_renames = {} + +# Add lines like these to rename files +# file_renames["old_name"] = "new_name" +file_renames["00_Default_Parameters.param"] = "00_default.param" + +# Iterate over the purge_dict and rename the keys to be in two-digit prefix ascending order +new_dict = {} +for i, (old_key, old_value) in enumerate(param_filter.intermediate_param_files_dict.items()): + new_key = f"{i:02d}_{old_key.split('_', 1)[1]}" + # Get the value associated with new_key in the file_renames dictionary. + # If new_key is not found, it will return new_key itself as the default value, + # effectively leaving it unchanged. + new_key = file_renames.get(new_key, new_key) + new_dict[new_key] = old_value + if old_key != new_key: + print(f"Info: Will rename {old_key} to {new_key}") + +param_dirs = ['.'] +# Search all *.py and *.md files in the current directory +# and replace all occurrences of the old names with the new names +for root, dirs, files in os.walk("."): + for file in files: + if 'params' in root.split(os.sep)[-1]: + if root not in param_dirs: + param_dirs.append(root) + update_file_content = file.endswith(".py") or file.endswith(".md") or file.endswith(".json") + if update_file_content and (root == '.' or root.split(os.sep)[-1] == 'params') and file != 'param_reorder.py': + with open(os.path.join(root, file), "r", encoding="utf-8") as handle: + file_content = handle.read() + if file in ["README.md", "BLOG.md", "BLOG-discuss.md"]: + for param_filename in param_filter.intermediate_param_files_dict: + if param_filename not in file_content: + print( + f"Error: The intermediate parameter file '{param_filename}' is not mentioned in the {file} file" + ) + for old_name, new_name in zip(param_filter.intermediate_param_files_dict.keys(), new_dict.keys()): + file_content = file_content.replace(old_name, new_name) + with open(os.path.join(root, file), "w", encoding="utf-8") as handle: + handle.write(file_content) + +# Rename the actual files on disk +for param_dir in param_dirs: + for old_name, new_name in zip(param_filter.intermediate_param_files_dict.keys(), new_dict.keys()): + old_name_path = os.path.join(param_dir, old_name) + new_name_path = os.path.join(param_dir, new_name) + if os.path.exists(old_name_path): + os.rename(old_name_path, new_name_path) + else: + print(f"Error: Could not rename file {old_name_path}, file not found") + +# Rename the actual files on disk based on file_renames +for param_dir in param_dirs: + for old_name, new_name in file_renames.items(): + old_name_path = os.path.join(param_dir, old_name) + new_name_path = os.path.join(param_dir, new_name) + if os.path.exists(old_name_path): + os.rename(old_name_path, new_name_path) + else: + print(f"Error: Could not rename file {old_name_path}, file not found") + +# Change line endings of BLOG*.md files to CRLF +for root, dirs, files in os.walk("."): + for file in files: + if (file.startswith("BLOG") and file.endswith(".md")) or file == "README.md": + file_path = os.path.join(root, file) + with open(file_path, "rb") as handle: + content = handle.read() + content = content.replace(b'\n', b'\r\n') + with open(file_path, "wb") as handle: + handle.write(content) diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/03_imu_temperature_calibration_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/03_imu_temperature_calibration_results.param index 55ffb79..2432681 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/03_imu_temperature_calibration_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/03_imu_temperature_calibration_results.param @@ -2,128 +2,128 @@ # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_X,972.9462 +INS_TCAL1_ACC1_X 115.946591342 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Y,304.8713 +INS_TCAL1_ACC1_Y 498.256973344 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Z,171.2766 +INS_TCAL1_ACC1_Z -381.446151984 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_X,-9.342097 +INS_TCAL1_ACC2_X -22.931568706 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Y,-10.1848 +INS_TCAL1_ACC2_Y 13.578689275 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Z,2.709858 +INS_TCAL1_ACC2_Z 19.361290207 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_X,-0.2591625 +INS_TCAL1_ACC3_X -0.601406268 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Y,-0.1429296 +INS_TCAL1_ACC3_Y 0.213798686 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Z,-0.06181677 +INS_TCAL1_ACC3_Z 0.011621521 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL1_ENABLE,1 # If IMU temperature compansation worked, this parameter changed automaticaly to 1.0 +INS_TCAL1_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_X,45.58128 +INS_TCAL1_GYR1_X -32.634220542 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Y,135.7386 +INS_TCAL1_GYR1_Y 79.655005221 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Z,-143.1902 +INS_TCAL1_GYR1_Z -151.124203469 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_X,0.3562318 +INS_TCAL1_GYR2_X -0.611429461 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Y,-2.431096 +INS_TCAL1_GYR2_Y -2.040988991 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Z,3.511315 +INS_TCAL1_GYR2_Z 1.238329627 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_X,-0.018454 +INS_TCAL1_GYR3_X -0.009728067 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Y,-0.01438955 +INS_TCAL1_GYR3_Y 0.019491833 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Z,0.04182188 +INS_TCAL1_GYR3_Z 0.001409968 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL1_TMAX,53.27945 +INS_TCAL1_TMAX 56.0 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -131,134 +131,134 @@ INS_TCAL1_TMAX,53.27945 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL1_TMIN,-10.98182 +INS_TCAL1_TMIN -14.6 # Accelerometer 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_X,-536.5219 +INS_TCAL2_ACC1_X -1088.415600440 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Y,670.0316 +INS_TCAL2_ACC1_Y 806.840522393 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Z,1020.751 +INS_TCAL2_ACC1_Z 327.521202466 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_X,2.741263 +INS_TCAL2_ACC2_X -13.630366124 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Y,-10.82371 +INS_TCAL2_ACC2_Y 6.347960639 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Z,20.6932 +INS_TCAL2_ACC2_Z 9.967253125 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_X,0.08527539 +INS_TCAL2_ACC3_X -0.376738491 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Y,-0.2103454 +INS_TCAL2_ACC3_Y 0.002642167 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Z,0.1007276 +INS_TCAL2_ACC3_Z -0.065860983 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL2_ENABLE,1 # If IMU temperature compansation worked, this parameter changed automaticaly to 1.0 +INS_TCAL2_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_X,-60.37366 +INS_TCAL2_GYR1_X -44.455145632 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Y,14.72497 +INS_TCAL2_GYR1_Y -8.833005619 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Z,79.62315 +INS_TCAL2_GYR1_Z 88.004538868 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_X,2.357543 +INS_TCAL2_GYR2_X 1.435061412 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Y,-0.01480431 +INS_TCAL2_GYR2_Y -0.204452936 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Z,-1.617007 +INS_TCAL2_GYR2_Z -2.086231519 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_X,-0.01039512 +INS_TCAL2_GYR3_X -0.048140576 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Y,0.002791975 +INS_TCAL2_GYR3_Y -0.002372842 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Z,-0.02426609 +INS_TCAL2_GYR3_Z -0.028350688 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL2_TMAX,54.74387 +INS_TCAL2_TMAX 56.5 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -266,4 +266,4 @@ INS_TCAL2_TMAX,54.74387 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL2_TMIN,-10.0157 +INS_TCAL2_TMIN -13.3 diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/04_board_orientation.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/04_board_orientation.param index e88a196..6cde9bc 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/04_board_orientation.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/04_board_orientation.param @@ -23,7 +23,7 @@ # 14: Yaw270Roll180 30: Pitch90Roll270 # 15: Yaw315Roll180 31: Pitch180Roll90 # Default: 0 -AHRS_ORIENTATION,0 # Point forward in teh direction of travel +AHRS_ORIENTATION,0 # Point forward in the direction of travel # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled while disarmed. This can make for very large diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/06_telemetry.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/06_telemetry.param index 2c65421..812c997 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/06_telemetry.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/06_telemetry.param @@ -23,4 +23,4 @@ BRD_SER1_RTSCTS,0 # we have no RTS/CTS pins connected # 57: 57600 1500: 1500000 # 111: 111100 # Default: 57 -SERIAL1_BAUD,57 # The mavlink over CRSF telemetry +SERIAL1_BAUD,460 # The MAVLink over ESP32 telemetry diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/07_esc.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/07_esc.param index 2e66697..c62f799 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/07_esc.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/07_esc.param @@ -139,7 +139,7 @@ SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot # Range: 1 127 # RebootRequired: True # Default: 14 -SERVO_BLH_POLES,12 # Number of Diatone Mamba 1404 5000kv motor's magnetic poles +SERVO_BLH_POLES,14 # Number of T-Motor 1507 3800kv motor's magnetic poles # BLHeli telemetry rate # This sets the rate in Hz for requesting telemetry from ESCs. It is the rate per ESC. Setting to zero @@ -315,4 +315,4 @@ SERVO4_TRIM,1000 # Use the full available 1000-2000 DShot range # Takeoff is not permitted until motors report at least this RPM. Set to zero to disable check # Range: 0 10000 # Default: 0 -TKOFF_RPM_MIN,3000 # Our motors should idle at around 3200 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html +TKOFF_RPM_MIN,1400 # Our motors should idle at around 1400 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/10_gnss.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/10_gnss.param index 31ca5d2..61810c0 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/10_gnss.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/10_gnss.param @@ -1,3 +1,15 @@ +# Sets default state of the safety switch +# This controls the default state of the safety switch at startup. When set to 1 the safety switch will +# start in the safe state (flashing) at boot. When set to zero the safety switch will start in the unsafe +# state (solid) at startup. Note that if a safety switch is fitted the user can still control the safety +# state after startup using the switch. The safety state can also be controlled in software using a MAVLink +# message. +# RebootRequired: True +# 0: Disabled +# 1: Enabled +# Default: 0 +BRD_SAFETY_DEFLT,0 # Matek H743 Slim has no safety switch + # GNSS system configuration # Bitmask for what GNSS system to use on the first GPS (all unchecked or zero to leave GPS as configured) # Bitmask: 0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLONASS @@ -48,6 +60,36 @@ GPS_POS1_Z,-0.07 # HX-CH7604A GNSS antenna pahse center location relative to CG # Default: 1 GPS_TYPE,2 # set it explicit to uBlox, instead of guessing which GNSS receiver we have +# Serial3 protocol selection +# Control what protocol Serial3 port should be used for. Note that the Frsky options require external +# converter hardware. See the wiki for details. +# RebootRequired: True +# -1: None 25: LTM +# 1: MAVLink1 26: RunCam +# 2: MAVLink2 27: HottTelem +# 3: Frsky D 28: Scripting +# 4: Frsky SPort 29: Crossfire VTX +# 5: GPS 30: Generator +# 7: Alexmos Gimbal Serial 31: Winch +# 8: Gimbal 32: MSP +# 9: Rangefinder 33: DJI FPV +# 10: FrSky SPort Passthrough (OpenTX) 34: AirSpeed +# 11: Lidar360 35: ADSB +# 13: Beacon 36: AHRS +# 14: Volz servo out 37: SmartAudio +# 15: SBus servo out 38: FETtecOneWire +# 16: ESC Telemetry 39: Torqeedo +# 17: Devo Telemetry 40: AIS +# 18: OpticalFlow 41: CoDevESC +# 19: RobotisServo 42: DisplayPort +# 20: NMEA Output 43: MAVLink High Latency +# 21: WindVane 44: IRC Tramp +# 22: SLCAN 45: DDS XRCE +# 23: RCIN 46: IMUDATA +# 24: EFI Serial +# Default: 5 +SERIAL3_PROTOCOL,5 # GNSS receiver is connected to serial3 + # Serial4 protocol selection # Control what protocol Serial4 port should be used for. Note that the Frsky options require external # converter hardware. See the wiki for details. @@ -75,7 +117,7 @@ GPS_TYPE,2 # set it explicit to uBlox, instead of guessing which GNSS receiver # 22: SLCAN 44: IRC Tramp # 23: RCIN # Default: 5 -SERIAL4_PROTOCOL,-1 # Connected to serial4 +SERIAL4_PROTOCOL,-1 # No GNSS connected to serial4, so disable it # Waypoint Radius # Defines the distance from a waypoint, that when crossed indicates the wp has been hit. diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param index 2a5e3e7..c462886 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param @@ -8,7 +8,7 @@ BRD_RTC_TZ_MIN,60 # Berlin time zone # Enabled fence types held as bitmask # Bitmask: 0:Max altitude,1:Circle,2:Polygon,3:Min altitude # Default: 7 -FENCE_TYPE,11 # cylinder and min/max altitude, to obey local regulations and safety measures +FENCE_TYPE,7 # cylinder and max altitude, to obey local regulations and safety measures # Accel filter cutoff frequency # Filter cutoff frequency for accelerometers. This can be set to a lower value to try to cope with very diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/14_motor.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/14_motor.param new file mode 100644 index 0000000..1c5334f --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/14_motor.param @@ -0,0 +1,4 @@ +MOT_SPIN_ARM,0.02 # The Mamba F45_128K ESCs reliably start spinning with this value +MOT_SPIN_MAX,0.95 # Upper dead zone of the Mamba F45_128K ESC +MOT_SPIN_MIN,0.05 # MOT_SPIN_ARM + 0.03 +MOT_THST_EXPO,0.63 # Measured with the motor test stand RCBenchmark Series 1780 from Tyto Robotics diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/14_pid_adjustment.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/15_pid_adjustment.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/14_pid_adjustment.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/15_pid_adjustment.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/15_remote_id.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/16_remote_id.param similarity index 87% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/15_remote_id.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/16_remote_id.param index eba539f..693baba 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/15_remote_id.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/16_remote_id.param @@ -9,7 +9,7 @@ DID_CANDRIVER,0 # Enable ODID subsystem # 0: Disabled # 1: Enabled -DID_ENABLE,1 +DID_ENABLE,0 # Our RemoteID module does not communicate with ArduPilot # MAVLink serial port # Serial port number to send OpenDroneID MAVLink messages to. Can be -1 if using DroneCAN. @@ -26,4 +26,4 @@ DID_MAVPORT,2 # The serial port attached to the OpenDroneID module # OpenDroneID options # Options for OpenDroneID subsystem # Bitmask: 0:EnforceArming, 1:AllowNonGPSPosition -DID_OPTIONS,1 +DID_OPTIONS,0 diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/16_notch_filter_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param similarity index 98% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/16_notch_filter_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param index ed94f41..46e9e54 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/16_notch_filter_setup.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param @@ -82,7 +82,7 @@ INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise cr # Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch # RebootRequired: True # Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate # Harmonic Notch Filter reference value # A reference value of zero disables dynamic updates on the Harmonic Notch Filter and a positive value diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/17_notch_filter_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param similarity index 90% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/17_notch_filter_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param index 4102737..49309f1 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/17_notch_filter_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param @@ -22,7 +22,7 @@ INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propell # below the frequency in the FREQ parameter. # Range: 0.1 1.0 # Default: 1 -INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first notch filter +INS_HNTCH_FM_RAT,1 # Allowed undercutting of the base frequency of the first notch filter # Harmonic Notch Filter base frequency # Harmonic Notch Filter base center frequency in Hz. This should be set at most half the backend gyro rate @@ -32,7 +32,7 @@ INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first # Range: 10 495 # Units: Hz (hertz) # Default: 80 -INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to operate at +INS_HNTCH_FREQ,180 # the minimum frequency that the motors are expected to operate at # Harmonic Notch Filter harmonics # Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next @@ -40,7 +40,7 @@ INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to oper # Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic # RebootRequired: True # Default: 1 -INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle +INS_HNTCH_HMNCS,3 # the motors produce secondary harmonics on this vehicle # Harmonic Notch Filter options # Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider @@ -53,4 +53,4 @@ INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle # Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch # RebootRequired: True # Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/18_throttle_controller.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/18_throttle_controller.param deleted file mode 100644 index 430d6ca..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/18_throttle_controller.param +++ /dev/null @@ -1,27 +0,0 @@ -# Throttle Mix Manual -# Throttle vs attitude control prioritisation used during manual flight (higher values mean we prioritise -# attitude control over throttle) -# Range: 0.1 0.9 -# Default: 0.1 -ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value - -# Thrust Hover Value -# Motor thrust needed to hover expressed as a number from 0 to 1 -# Range: 0.2 0.8 -# Default: 0.35 -MOT_THST_HOVER,0.38695 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 - -# Acceleration (vertical) controller I gain -# Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical -# acceleration and actual acceleration -# Range: 0.000 3.000 -# Default: 1 -PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER - -# Acceleration (vertical) controller P gain -# Acceleration (vertical) controller P gain. Converts the difference between desired vertical acceleration -# and actual acceleration into a motor output -# Range: 0.200 1.500 -# Increment: 0.05 -# Default: 0.5 -PSC_ACCZ_P,0.408 # MOT_THST_HOVER diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_inflight_magnetometer_fit_setup.pdef.xml deleted file mode 120000 index d1bddeb..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_inflight_magnetometer_fit_setup.pdef.xml +++ /dev/null @@ -1 +0,0 @@ -../../../19_inflight_magnetometer_fit_setup.pdef.xml \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/18_throttle_controller.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param similarity index 82% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/18_throttle_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param index 430d6ca..c8b676c 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/18_throttle_controller.param +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param @@ -9,14 +9,14 @@ ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value # Motor thrust needed to hover expressed as a number from 0 to 1 # Range: 0.2 0.8 # Default: 0.35 -MOT_THST_HOVER,0.38695 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 +MOT_THST_HOVER,0.2 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 # Acceleration (vertical) controller I gain # Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical # acceleration and actual acceleration # Range: 0.000 3.000 # Default: 1 -PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER +PSC_ACCZ_I,0.4 # 2 • MOT_THST_HOVER # Acceleration (vertical) controller P gain # Acceleration (vertical) controller P gain. Converts the difference between desired vertical acceleration @@ -24,4 +24,4 @@ PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER # Range: 0.200 1.500 # Increment: 0.05 # Default: 0.5 -PSC_ACCZ_P,0.408 # MOT_THST_HOVER +PSC_ACCZ_P,0.2 # MOT_THST_HOVER diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/21_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/21_quick_tune_results.param new file mode 100644 index 0000000..71a2549 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/21_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.00659 # Tuned in a Hangar +ATC_RAT_PIT_I,0.412175 # Tuned in a Hangar +ATC_RAT_PIT_P,0.412175 # Tuned in a Hangar +ATC_RAT_RLL_D,0.003622 # Tuned in a Hangar +ATC_RAT_RLL_I,0.251225 # Tuned in a Hangar +ATC_RAT_RLL_P,0.251225 # Tuned in a Hangar +ATC_RAT_YAW_D,0.01 # Tuned in a Hangar +ATC_RAT_YAW_FLTD,57.5 # Tuned in a Hangar +ATC_RAT_YAW_I,0.05 # Tuned in a Hangar +ATC_RAT_YAW_P,0.5 # Tuned in a Hangar diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_inflight_magnetometer_fit_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_inflight_magnetometer_fit_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/19_inflight_magnetometer_fit_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_inflight_magnetometer_fit_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_inflight_magnetometer_fit_setup.pdef.xml new file mode 100644 index 0000000..0ff0bd7 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_inflight_magnetometer_fit_setup.pdef.xml @@ -0,0 +1,41 @@ + + + + + + + m + 0 100 + 10 + + + 1.2 1.5 + 1.2 + + + 0 255 + 117 + + + 1 20 + 6 + + + 0 1 + 1 + + + m/s + 1/2 of WPNAV_SPEED + + + 16 24 + 18 + + + 0 1 + 1 + + + + diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/20_inflight_magnetometer_fit_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/23_inflight_magnetometer_fit_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/20_inflight_magnetometer_fit_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/23_inflight_magnetometer_fit_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/24_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/24_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/24_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param new file mode 100644 index 0000000..20a5edb --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.006590242 +ATC_RAT_PIT_I,0.4121751 +ATC_RAT_PIT_P,0.4121751 +ATC_RAT_RLL_D,0.00362229 +ATC_RAT_RLL_I,0.2512255 +ATC_RAT_RLL_P,0.2512255 +ATC_RAT_YAW_D,0.01 +ATC_RAT_YAW_FLTD,57.5 +ATC_RAT_YAW_I,0.05 +ATC_RAT_YAW_P,0.5 \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/21_evaluate_the_aircraft_tune_ff_disable.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/26_evaluate_the_aircraft_tune_ff_disable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/21_evaluate_the_aircraft_tune_ff_disable.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/26_evaluate_the_aircraft_tune_ff_disable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_evaluate_the_aircraft_tune_ff_enable.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/27_evaluate_the_aircraft_tune_ff_enable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/22_evaluate_the_aircraft_tune_ff_enable.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/27_evaluate_the_aircraft_tune_ff_enable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/23_autotune_roll_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/28_autotune_roll_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/23_autotune_roll_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/28_autotune_roll_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/24_autotune_roll_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/29_autotune_roll_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/24_autotune_roll_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/29_autotune_roll_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/25_autotune_pitch_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/30_autotune_pitch_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/25_autotune_pitch_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/30_autotune_pitch_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/26_autotune_pitch_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/31_autotune_pitch_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/26_autotune_pitch_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/31_autotune_pitch_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/27_autotune_yaw_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/32_autotune_yaw_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/27_autotune_yaw_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/32_autotune_yaw_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/28_autotune_yaw_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/33_autotune_yaw_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/28_autotune_yaw_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/33_autotune_yaw_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/29_autotune_yawd_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/34_autotune_yawd_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/29_autotune_yawd_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/34_autotune_yawd_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/30_autotune_yawd_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/35_autotune_yawd_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/30_autotune_yawd_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/35_autotune_yawd_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/31_autotune_roll_pitch_retune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/36_autotune_roll_pitch_retune_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/31_autotune_roll_pitch_retune_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/36_autotune_roll_pitch_retune_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/32_autotune_roll_pitch_retune_results.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/37_autotune_roll_pitch_retune_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/32_autotune_roll_pitch_retune_results.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/37_autotune_roll_pitch_retune_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/33_windspeed_estimation.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/38_windspeed_estimation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/33_windspeed_estimation.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/38_windspeed_estimation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/34_barometer_compensation.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/39_barometer_compensation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/34_barometer_compensation.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/39_barometer_compensation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/35_system_id_roll.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/40_system_id_roll.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/35_system_id_roll.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/40_system_id_roll.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/36_system_id_pitch.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/41_system_id_pitch.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/36_system_id_pitch.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/41_system_id_pitch.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/37_system_id_yaw.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/42_system_id_yaw.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/37_system_id_yaw.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/42_system_id_yaw.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/38_system_id_thrust.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/43_system_id_thrust.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/38_system_id_thrust.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/43_system_id_thrust.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/39_analytical_pid_optimization.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/44_analytical_pid_optimization.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/39_analytical_pid_optimization.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/44_analytical_pid_optimization.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/40_everyday_use.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/45_everyday_use.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/40_everyday_use.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/45_everyday_use.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/41_position_controller.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/46_position_controller.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/41_position_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/46_position_controller.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/42_precision_land.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/47_precision_land.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/42_precision_land.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/47_precision_land.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/43_guided_operation.param b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/48_guided_operation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/43_guided_operation.param rename to vehicle_examples/diatone_taycan_mxc/4.3.8-params/48_guided_operation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/vehicle.jpg b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/vehicle.jpg new file mode 100644 index 0000000..5b4926e Binary files /dev/null and b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/vehicle.jpg differ diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/vehicle_components.json b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/vehicle_components.json new file mode 100644 index 0000000..0abe92e --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.3.8-params/vehicle_components.json @@ -0,0 +1,177 @@ +{ + "Format version": 1, + "Components": { + "Flight Controller": { + "Product": { + "Manufacturer": "Matek", + "Model": "H743 SLIM", + "URL": "https://www.mateksys.com/?portfolio=h743-slim", + "Version": "V3" + }, + "Firmware": { + "Type": "ArduCopter", + "Version": "4.5.1" + }, + "Notes": "This is a custom build with a Matek H743 SLIM flight controller. The board is a 20x20mm stackable board with a 400Mhz processor, 1Mb flash, 512kb RAM, and a 32-bit STM32H743 processor. The board has a built-in barometer, 6 UARTs, 8 PWM outputs, and 8 ADC inputs." + }, + "Frame": { + "Product": { + "Manufacturer": "Diatone", + "Model": "Taycan MX-C", + "URL": "https://www.diatone.us/products/diatone-mxc-taycan-duct-3-inch-cinewhoop-fpv-drone", + "Version": "2022" + }, + "Notes": "A small 3'' ducted frame" + }, + "RC Controller": { + "Product": { + "Manufacturer": "Radiomaster", + "Model": "TX16S", + "URL": "https://www.radiomasterrc.com/products/tx16s-mark-ii-radio-controller", + "Version": "MKI" + }, + "Firmware": { + "Type": "EdgeTx", + "Version": "2.9.2-providence" + }, + "Notes": "Yaapu telem included, this is just the controller with the sticks. Some controllers include the RC transmitter, this one does not." + }, + "RC Transmitter": { + "Product": { + "Manufacturer": "TBS", + "Model": "TRACER Micro TX", + "URL": "https://www.team-blacksheep.com/products/prod:tbs_tracer_mtx", + "Version": "2" + }, + "Firmware": { + "Type": "Crossfire TX", + "Version": "4.0.0" + }, + "Notes": "This RC transmitter piggie-backs on the back of the Radiomaster TX16S" + }, + "RC Receiver": { + "Product": { + "Manufacturer": "TBS", + "Model": "Crossfire RX se", + "URL": "https://www.team-blacksheep.com/products/prod:crossfire_nano_se", + "Version": "" + }, + "Firmware": { + "Type": "Crossfire", + "Version": "7" + }, + "FC Connection": { + "Type": "SERIAL7", + "Protocol": "CRSF" + }, + "Notes": "This one is on the vehicle" + }, + "Telemetry": { + "Product": { + "Manufacturer": "Espressif", + "Model": "ESP32 WROOM", + "URL": "", + "Version": "" + }, + "Firmware": { + "Type": "dronebridge", + "Version": "1.5" + }, + "FC Connection": { + "Type": "SERIAL1", + "Protocol": "MAVLink2" + }, + "Notes": "A cheap WiFi alternative to the more commonly used 3DR and RFDesigns telemetry modems" + }, + "Battery Monitor": { + "Product": { + "Manufacturer": "Matek", + "Model": "H743 SLIM", + "URL": "https://www.mateksys.com/?portfolio=h743-slim", + "Version": "3" + }, + "Firmware": { + "Type": "ArduCopter", + "Version": "4.5.1" + }, + "FC Connection": { + "Type": "Analog Voltage and Current", + "Protocol": "Analog" + }, + "Notes": "Voltage is done via the flight controller. Current is done via the ESC." + }, + "Battery": { + "Product": { + "Manufacturer": "SLS", + "Model": "X-Cube 1800mAh 4S1P 14,8V 40C/80C", + "URL": "https://www.stefansliposhop.de/akkus/sls-x-cube/sls-x-cube-40c/sls-x-cube-1800mah-4s1p-14-8v-40c-80c::1568.html", + "Version": "" + }, + "Specifications": { + "Volt per cell max": "4.2", + "Volt per cell low": "3.8", + "Volt per cell crit": "3.6", + "Number of cells": "4" + }, + "Notes": "A normal battery" + }, + "ESC": { + "Product": { + "Manufacturer": "Mamba System", + "Model": "F45_128k 4in1 ESC", + "URL": "https://www.diatone.us/products/mb-f45_128k-bl32-esc", + "Version": "1" + }, + "Firmware": { + "Type": "BLHeli32", + "Version": "32.10" + }, + "FC Connection": { + "Type": "SERIAL5", + "Protocol": "Dshot600" + }, + "Notes": "Runs BDshot600" + }, + "Motors": { + "Product": { + "Manufacturer": "T-Motor", + "Model": "T-Motor 15507 3800kv", + "URL": "https://www.fpv24.com/de/t-motor/t-motor-f-serie-f1507-cinematic-3800kv-3s-4s", + "Version": "" + }, + "Specifications": { + "Poles": "14" + }, + "Notes": "store.tmotor.com offline at time of filling out this form, so no tmotor link available" + }, + "Propellers": { + "Product": { + "Manufacturer": "HQProp", + "Model": "CineWhoop 3\", 8-Blade", + "URL": "https://shop.rc-hangar15.de/HQProp-76mm-CineWhoop-3-8-Blatt-Propeller-grau", + "Version": "" + }, + "Specifications": { + "Diameter_inches": "3" + }, + "Notes": "" + }, + "GNSS receiver": { + "Product": { + "Manufacturer": "Holybro", + "Model": "H-RTK F9P Helical", + "URL": "https://holybro.com/products/h-rtk-f9p-gnss-series?variant=41466787168445", + "Version": "1" + }, + "Firmware": { + "Type": "UBlox", + "Version": "1.13.2" + }, + "FC Connection": { + "Type": "SERIAL4", + "Protocol": "uBlox" + }, + "Notes": "A very good receiver with an excellent antenna https://docs.holybro.com/gps-and-rtk-system/gps-led-and-buzzer/status-led-changes" + } + } +} \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/03_imu_temperature_calibration_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/03_imu_temperature_calibration_results.param index 8a77a0b..2432681 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/03_imu_temperature_calibration_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/03_imu_temperature_calibration_results.param @@ -2,128 +2,128 @@ # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_X,972.9462 +INS_TCAL1_ACC1_X 115.946591342 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Y,304.8713 +INS_TCAL1_ACC1_Y 498.256973344 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Z,171.2766 +INS_TCAL1_ACC1_Z -381.446151984 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_X,-9.342097 +INS_TCAL1_ACC2_X -22.931568706 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Y,-10.1848 +INS_TCAL1_ACC2_Y 13.578689275 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Z,2.709858 +INS_TCAL1_ACC2_Z 19.361290207 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_X,-0.2591625 +INS_TCAL1_ACC3_X -0.601406268 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Y,-0.1429296 +INS_TCAL1_ACC3_Y 0.213798686 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Z,-0.06181677 +INS_TCAL1_ACC3_Z 0.011621521 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL1_ENABLE,1 +INS_TCAL1_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_X,45.58128 +INS_TCAL1_GYR1_X -32.634220542 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Y,135.7386 +INS_TCAL1_GYR1_Y 79.655005221 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Z,-143.1902 +INS_TCAL1_GYR1_Z -151.124203469 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_X,0.3562318 +INS_TCAL1_GYR2_X -0.611429461 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Y,-2.431096 +INS_TCAL1_GYR2_Y -2.040988991 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Z,3.511315 +INS_TCAL1_GYR2_Z 1.238329627 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_X,-0.018454 +INS_TCAL1_GYR3_X -0.009728067 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Y,-0.01438955 +INS_TCAL1_GYR3_Y 0.019491833 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Z,0.04182188 +INS_TCAL1_GYR3_Z 0.001409968 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL1_TMAX,53.27945 +INS_TCAL1_TMAX 56.0 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -131,134 +131,134 @@ INS_TCAL1_TMAX,53.27945 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL1_TMIN,-10.98182 +INS_TCAL1_TMIN -14.6 # Accelerometer 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_X,-536.5219 +INS_TCAL2_ACC1_X -1088.415600440 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Y,670.0316 +INS_TCAL2_ACC1_Y 806.840522393 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Z,1020.751 +INS_TCAL2_ACC1_Z 327.521202466 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_X,2.741263 +INS_TCAL2_ACC2_X -13.630366124 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Y,-10.82371 +INS_TCAL2_ACC2_Y 6.347960639 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Z,20.6932 +INS_TCAL2_ACC2_Z 9.967253125 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_X,0.08527539 +INS_TCAL2_ACC3_X -0.376738491 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Y,-0.2103454 +INS_TCAL2_ACC3_Y 0.002642167 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Z,0.1007276 +INS_TCAL2_ACC3_Z -0.065860983 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL2_ENABLE,1 +INS_TCAL2_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_X,-60.37366 +INS_TCAL2_GYR1_X -44.455145632 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Y,14.72497 +INS_TCAL2_GYR1_Y -8.833005619 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Z,79.62315 +INS_TCAL2_GYR1_Z 88.004538868 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_X,2.357543 +INS_TCAL2_GYR2_X 1.435061412 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Y,-0.01480431 +INS_TCAL2_GYR2_Y -0.204452936 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Z,-1.617007 +INS_TCAL2_GYR2_Z -2.086231519 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_X,-0.01039512 +INS_TCAL2_GYR3_X -0.048140576 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Y,0.002791975 +INS_TCAL2_GYR3_Y -0.002372842 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Z,-0.02426609 +INS_TCAL2_GYR3_Z -0.028350688 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL2_TMAX,54.74387 +INS_TCAL2_TMAX 56.5 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -266,4 +266,4 @@ INS_TCAL2_TMAX,54.74387 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL2_TMIN,-10.0157 +INS_TCAL2_TMIN -13.3 diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/06_telemetry.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/06_telemetry.param index 818fc14..3db67c3 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/06_telemetry.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/06_telemetry.param @@ -23,4 +23,4 @@ BRD_SER1_RTSCTS,0 # we have no RTS/CTS pins connected # 57: 57600 1500: 1500000 # 111: 111100 2000: 2000000 # Default: 57 -SERIAL1_BAUD,57 # The mavlink over CRSF telemetry +SERIAL1_BAUD,460 # The MAVLink over ESP32 telemetry diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/07_esc.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/07_esc.param index 34c24c6..58bd3e8 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/07_esc.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/07_esc.param @@ -8,7 +8,7 @@ # Range: 0 200 # Increment: 0.5 # Default: 0 -ATC_RAT_PIT_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_PIT_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Roll slew rate limit # Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the @@ -20,7 +20,7 @@ ATC_RAT_PIT_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - ht # Range: 0 200 # Increment: 0.5 # Default: 0 -ATC_RAT_RLL_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_RLL_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Yaw slew rate limit # Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the @@ -32,7 +32,7 @@ ATC_RAT_RLL_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - ht # Range: 0 200 # Increment: 0.5 # Default: 0 -ATC_RAT_YAW_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_YAW_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Output PWM type # This selects the output PWM type, allowing for normal PWM continuous output, OneShot, brushed or DShot @@ -54,13 +54,13 @@ MOT_PWM_TYPE,6 # the most recomended speed for ArduCopter # Controls what types of Buzzer will be enabled # Bitmask: 0:Built-in buzzer, 1:DShot, 2:DroneCAN # Default: 5 -NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this +NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this # LED Driver Types # Controls what types of LEDs will be enabled # Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI, 13:LP5562 External, 14: LP5562 Internal, 15:IS31FL3195 External, 16: IS31FL3195 Internal # Default: 123079 -NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) +NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) # Accel (vertical) slew rate limit # Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the @@ -72,7 +72,7 @@ NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Mat # Range: 0 200 # Increment: 0.5 # Default: 0 -PSC_ACCZ_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +PSC_ACCZ_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Serial 5 Baud Rate # The baud rate used for Serial5. Most stm32-based boards can support rates of up to 1500. If you setup a @@ -87,7 +87,7 @@ PSC_ACCZ_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https # 57: 57600 1500: 1500000 # 111: 111100 2000: 2000000 # Default: 115 -SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 +SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 # Serial5 protocol selection # Control what protocol Serial5 port should be used for. Note that the Frsky options require external @@ -116,7 +116,7 @@ SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in # 22: SLCAN 44: IRC Tramp # 23: RCIN # Default: -1 -SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 +SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 # BLHeli pass-thru auto-enable for multicopter motors # If set to 1 this auto-enables BLHeli pass-thru support for all multicopter motors @@ -124,7 +124,7 @@ SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 # 0: Disabled # 1: Enabled # Default: 0 -SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru +SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru # BLHeli bitmask of bi-directional dshot channels # Mask of channels which support bi-directional dshot. This is used for ESCs which have firmware that @@ -132,14 +132,14 @@ SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru # Bitmask: 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16, 16:Channel 17, 17: Channel 18, 18: Channel 19, 19: Channel 20, 20: Channel 21, 21: Channel 22, 22: Channel 23, 23: Channel 24, 24: Channel 25, 25: Channel 26, 26: Channel 27, 27: Channel 28, 28: Channel 29, 29: Channel 30, 30: Channel 31, 31: Channel 32 # RebootRequired: True # Default: 0 -SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot +SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot # BLHeli Motor Poles # This allows calculation of true RPM from ESC's eRPM. The default is 14. # Range: 1 127 # RebootRequired: True # Default: 14 -SERVO_BLH_POLES,12 # Number of Diatone Mamba 1404 5000kv motor's magnetic poles +SERVO_BLH_POLES,14 # Number of T-Motor 1507 3800kv motor's magnetic poles # BLHeli telemetry rate # This sets the rate in Hz for requesting telemetry from ESCs. It is the rate per ESC. Setting to zero @@ -147,7 +147,7 @@ SERVO_BLH_POLES,12 # Number of Diatone Mamba 1404 5000kv motor's magnetic poles # Units: Hz (hertz) # Range: 0 500 # Default: 10 -SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry +SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry # Servo DShot ESC type # This sets the DShot ESC type for all outputs. The ESC type affects the range of DShot commands available. @@ -167,7 +167,7 @@ SERVO_DSHOT_ESC,1 # 3: triple loop-rate # 4: quadruple loop rate # Default: 0 -SERVO_DSHOT_RATE,2 # Sends DShot control signals to the ESC twice per control loop +SERVO_DSHOT_RATE,2 # Sends DShot control signals to the ESC twice per control loop # Maximum PWM # maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper @@ -315,4 +315,4 @@ SERVO4_TRIM,1000 # Takeoff is not permitted until motors report at least this RPM. Set to zero to disable check # Range: 0 10000 # Default: 0 -TKOFF_RPM_MIN,3000 # Our motors should idle at around 3200 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html +TKOFF_RPM_MIN,1400 # Our motors should idle at around 1400 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param index 34ff1dd..be99c49 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param @@ -16,7 +16,7 @@ FENCE_TYPE,11 # Units: Hz (hertz) # Range: 0 256 # Default: 20 -INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in +INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in # IMU accelerometer X position # X position of the first IMU Accelerometer in body frame. Positive X is forward of the origin. Attention: @@ -28,7 +28,7 @@ INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in # Range: -5 5 # Increment: 0.01 # Default: 0 -INS_POS1_X,0 # was -0.005 +INS_POS1_X,0 # was -0.005 # IMU accelerometer Y position # Y position of the first IMU accelerometer in body frame. Positive Y is to the right of the origin. @@ -40,7 +40,7 @@ INS_POS1_X,0 # was -0.005 # Range: -5 5 # Increment: 0.01 # Default: 0 -INS_POS1_Y,0 # was -0.011 +INS_POS1_Y,0 # was -0.011 # IMU accelerometer X position # X position of the second IMU accelerometer in body frame. Positive X is forward of the origin. Attention: @@ -52,7 +52,7 @@ INS_POS1_Y,0 # was -0.011 # Range: -5 5 # Increment: 0.01 # Default: 0 -INS_POS2_X,0 # was -0.011 +INS_POS2_X,0 # was -0.011 # IMU accelerometer Y position # Y position of the second IMU accelerometer in body frame. Positive Y is to the right of the origin. @@ -64,7 +64,7 @@ INS_POS2_X,0 # was -0.011 # Range: -5 5 # Increment: 0.01 # Default: 0 -INS_POS2_Y,0 # was -0.01 +INS_POS2_Y,0 # was -0.01 # Land alt low # Altitude during Landing at which vehicle slows to LAND_SPEED @@ -72,7 +72,7 @@ INS_POS2_Y,0 # was -0.01 # Range: 100 10000 # Increment: 10 # Default: 1000 -LAND_ALT_LOW,200 # come down fast and only slow down close to the ground. We have a good GNSS receiver, so thrust it +LAND_ALT_LOW,200 # come down fast and only slow down close to the ground. We have a good GNSS receiver, so thrust it # RTL Altitude # The minimum alt above home the vehicle will climb to before returning. If the vehicle is flying higher @@ -81,7 +81,7 @@ LAND_ALT_LOW,200 # come down fast and only slow down close to the ground. We hav # Range: 200 300000 # Increment: 1 # Default: 1500 -RTL_ALT,300 # The default is too high for the kind of flights we do. This reduces the altitude for indoors +RTL_ALT,300 # The default is too high for the kind of flights we do. This reduces the altitude for indoors # RTL loiter time # Time (in milliseconds) to loiter above home before beginning final descent @@ -89,7 +89,7 @@ RTL_ALT,300 # The default is too high for the kind of flights we do. This reduce # Range: 0 60000 # Increment: 1000 # Default: 5000 -RTL_LOIT_TIME,1000 # The default is too long. This reduces the time +RTL_LOIT_TIME,1000 # The default is too long. This reduces the time # Scheduling main loop rate # This controls the rate of the main control loop in Hz. This should only be changed by developers. This @@ -102,7 +102,7 @@ RTL_LOIT_TIME,1000 # The default is too long. This reduces the time # 300: 300Hz # 400: 400Hz # Default: 400 -SCHED_LOOP_RATE,800 # On our vehicle the propellers rotate at speeds higher than 400Hz and we have a powerful STM32 H7 family processor. So we increase this for added performance. +SCHED_LOOP_RATE,800 # On our vehicle the propellers rotate at speeds higher than 400Hz and we have a powerful STM32 H7 family processor. So we increase this for added performance. # Enable Scripting # Controls if scripting is enabled diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/14_motor.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/14_motor.param new file mode 100644 index 0000000..1c5334f --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/14_motor.param @@ -0,0 +1,4 @@ +MOT_SPIN_ARM,0.02 # The Mamba F45_128K ESCs reliably start spinning with this value +MOT_SPIN_MAX,0.95 # Upper dead zone of the Mamba F45_128K ESC +MOT_SPIN_MIN,0.05 # MOT_SPIN_ARM + 0.03 +MOT_THST_EXPO,0.63 # Measured with the motor test stand RCBenchmark Series 1780 from Tyto Robotics diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/14_pid_adjustment.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/15_pid_adjustment.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/14_pid_adjustment.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/15_pid_adjustment.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/15_remote_id.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/16_remote_id.param similarity index 87% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/15_remote_id.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/16_remote_id.param index a130f62..8c5ba19 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/15_remote_id.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/16_remote_id.param @@ -9,7 +9,8 @@ DID_CANDRIVER,0 # Enable ODID subsystem # 0: Disabled # 1: Enabled -DID_ENABLE,1 +DID_ENABLE,0 # Our RemoteID module does not communicate with ArduPilot + # MAVLink serial port # Serial port number to send OpenDroneID MAVLink messages to. Can be -1 if using DroneCAN. @@ -26,4 +27,4 @@ DID_MAVPORT,2 # The serial port attached to the OpenDroneID module # OpenDroneID options # Options for OpenDroneID subsystem # Bitmask: 0:EnforceArming, 1:AllowNonGPSPosition, 2:LockUASIDOnFirstBasicIDRx -DID_OPTIONS,1 +DID_OPTIONS,0 diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/16_notch_filter_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param similarity index 93% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/16_notch_filter_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param index bb643e7..27f4c4d 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/16_notch_filter_setup.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param @@ -23,7 +23,7 @@ INS_GYRO_RATE,2 # The Matek H743 Slim can do 4KHz here # Range: 5 50 # Units: dB (decibel) # Default: 40 -INS_HNTCH_ATT,20.0 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) # Harmonic Notch Filter bandwidth # Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of @@ -31,7 +31,7 @@ INS_HNTCH_ATT,20.0 # this is just a hunch, it must be improved after the first # Range: 5 250 # Units: Hz (hertz) # Default: 40 -INS_HNTCH_BW,20.0 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) # Harmonic Notch Filter enable # Harmonic Notch Filter enable @@ -48,7 +48,7 @@ INS_HNTCH_ENABLE,1 # the first notch filter will be used to filter the noise cr # Range: 10 495 # Units: Hz (hertz) # Default: 80 -INS_HNTCH_FREQ,160.0 # Start with 1.4 • INS_GYRO_FILTER +INS_HNTCH_FREQ,160 # Start with 1.4 • INS_GYRO_FILTER # Harmonic Notch Filter harmonics # Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next @@ -82,7 +82,7 @@ INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise cr # Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch # RebootRequired: True # Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate # Harmonic Notch Filter reference value # A reference value of zero disables dynamic updates on the Harmonic Notch Filter and a positive value diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/17_notch_filter_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param similarity index 85% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/17_notch_filter_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param index 3c6293c..534f940 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/17_notch_filter_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param @@ -4,7 +4,7 @@ # Range: 5 50 # Units: dB (decibel) # Default: 40 -INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propellers +INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propellers # Harmonic Notch Filter bandwidth # Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of @@ -12,7 +12,7 @@ INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propell # Range: 5 250 # Units: Hz (hertz) # Default: 40 -INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propellers +INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propellers # Throttle notch min freqency ratio # The minimum ratio below the configured frequency to take throttle based notch filters when flying at a @@ -22,7 +22,7 @@ INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propelle # below the frequency in the FREQ parameter. # Range: 0.1 1.0 # Default: 1 -INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first notch filter +INS_HNTCH_FM_RAT,1 # Allowed undercutting of the base frequency of the first notch filter # Harmonic Notch Filter base frequency # Harmonic Notch Filter base center frequency in Hz. This is the center frequency for static notches, the @@ -32,7 +32,7 @@ INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first # Range: 10 495 # Units: Hz (hertz) # Default: 80 -INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to operate at +INS_HNTCH_FREQ,180 # the minimum frequency that the motors are expected to operate at # Harmonic Notch Filter harmonics # Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next @@ -40,7 +40,7 @@ INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to opera # Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic # RebootRequired: True # Default: 1 -INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle +INS_HNTCH_HMNCS,3 # the motors produce secondary harmonics on this vehicle # Harmonic Notch Filter options # Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider @@ -53,4 +53,4 @@ INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle # Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch # RebootRequired: True # Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_inflight_magnetometer_fit_setup.pdef.xml deleted file mode 120000 index d1bddeb..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_inflight_magnetometer_fit_setup.pdef.xml +++ /dev/null @@ -1 +0,0 @@ -../../../19_inflight_magnetometer_fit_setup.pdef.xml \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/18_throttle_controller.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param similarity index 82% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/18_throttle_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param index 430d6ca..c8b676c 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/18_throttle_controller.param +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param @@ -9,14 +9,14 @@ ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value # Motor thrust needed to hover expressed as a number from 0 to 1 # Range: 0.2 0.8 # Default: 0.35 -MOT_THST_HOVER,0.38695 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 +MOT_THST_HOVER,0.2 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 # Acceleration (vertical) controller I gain # Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical # acceleration and actual acceleration # Range: 0.000 3.000 # Default: 1 -PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER +PSC_ACCZ_I,0.4 # 2 • MOT_THST_HOVER # Acceleration (vertical) controller P gain # Acceleration (vertical) controller P gain. Converts the difference between desired vertical acceleration @@ -24,4 +24,4 @@ PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER # Range: 0.200 1.500 # Increment: 0.05 # Default: 0.5 -PSC_ACCZ_P,0.408 # MOT_THST_HOVER +PSC_ACCZ_P,0.2 # MOT_THST_HOVER diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param new file mode 100644 index 0000000..71a2549 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.00659 # Tuned in a Hangar +ATC_RAT_PIT_I,0.412175 # Tuned in a Hangar +ATC_RAT_PIT_P,0.412175 # Tuned in a Hangar +ATC_RAT_RLL_D,0.003622 # Tuned in a Hangar +ATC_RAT_RLL_I,0.251225 # Tuned in a Hangar +ATC_RAT_RLL_P,0.251225 # Tuned in a Hangar +ATC_RAT_YAW_D,0.01 # Tuned in a Hangar +ATC_RAT_YAW_FLTD,57.5 # Tuned in a Hangar +ATC_RAT_YAW_I,0.05 # Tuned in a Hangar +ATC_RAT_YAW_P,0.5 # Tuned in a Hangar diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_inflight_magnetometer_fit_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_inflight_magnetometer_fit_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/19_inflight_magnetometer_fit_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_inflight_magnetometer_fit_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_inflight_magnetometer_fit_setup.pdef.xml new file mode 100644 index 0000000..0ff0bd7 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_inflight_magnetometer_fit_setup.pdef.xml @@ -0,0 +1,41 @@ + + + + + + + m + 0 100 + 10 + + + 1.2 1.5 + 1.2 + + + 0 255 + 117 + + + 1 20 + 6 + + + 0 1 + 1 + + + m/s + 1/2 of WPNAV_SPEED + + + 16 24 + 18 + + + 0 1 + 1 + + + + diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/20_inflight_magnetometer_fit_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/23_inflight_magnetometer_fit_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/20_inflight_magnetometer_fit_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/23_inflight_magnetometer_fit_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param new file mode 100644 index 0000000..20a5edb --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.006590242 +ATC_RAT_PIT_I,0.4121751 +ATC_RAT_PIT_P,0.4121751 +ATC_RAT_RLL_D,0.00362229 +ATC_RAT_RLL_I,0.2512255 +ATC_RAT_RLL_P,0.2512255 +ATC_RAT_YAW_D,0.01 +ATC_RAT_YAW_FLTD,57.5 +ATC_RAT_YAW_I,0.05 +ATC_RAT_YAW_P,0.5 \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/21_evaluate_the_aircraft_tune_ff_disable.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/26_evaluate_the_aircraft_tune_ff_disable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/21_evaluate_the_aircraft_tune_ff_disable.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/26_evaluate_the_aircraft_tune_ff_disable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_evaluate_the_aircraft_tune_ff_enable.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/27_evaluate_the_aircraft_tune_ff_enable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/22_evaluate_the_aircraft_tune_ff_enable.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/27_evaluate_the_aircraft_tune_ff_enable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/23_autotune_roll_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/28_autotune_roll_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/23_autotune_roll_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/28_autotune_roll_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/24_autotune_roll_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/29_autotune_roll_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/24_autotune_roll_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/29_autotune_roll_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/25_autotune_pitch_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/30_autotune_pitch_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/25_autotune_pitch_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/30_autotune_pitch_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/26_autotune_pitch_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/31_autotune_pitch_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/26_autotune_pitch_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/31_autotune_pitch_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/27_autotune_yaw_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/32_autotune_yaw_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/27_autotune_yaw_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/32_autotune_yaw_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/28_autotune_yaw_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/33_autotune_yaw_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/28_autotune_yaw_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/33_autotune_yaw_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/29_autotune_yawd_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/34_autotune_yawd_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/29_autotune_yawd_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/34_autotune_yawd_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/30_autotune_yawd_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/35_autotune_yawd_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/30_autotune_yawd_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/35_autotune_yawd_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/31_autotune_roll_pitch_retune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/36_autotune_roll_pitch_retune_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/31_autotune_roll_pitch_retune_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/36_autotune_roll_pitch_retune_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/32_autotune_roll_pitch_retune_results.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/37_autotune_roll_pitch_retune_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/32_autotune_roll_pitch_retune_results.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/37_autotune_roll_pitch_retune_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/33_windspeed_estimation.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/38_windspeed_estimation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/33_windspeed_estimation.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/38_windspeed_estimation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/34_barometer_compensation.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/39_barometer_compensation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/34_barometer_compensation.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/39_barometer_compensation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/35_system_id_roll.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/40_system_id_roll.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/35_system_id_roll.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/40_system_id_roll.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/36_system_id_pitch.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/41_system_id_pitch.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/36_system_id_pitch.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/41_system_id_pitch.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/37_system_id_yaw.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/42_system_id_yaw.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/37_system_id_yaw.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/42_system_id_yaw.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/38_system_id_thrust.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/43_system_id_thrust.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/38_system_id_thrust.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/43_system_id_thrust.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/39_analytical_pid_optimization.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/44_analytical_pid_optimization.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/39_analytical_pid_optimization.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/44_analytical_pid_optimization.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/40_everyday_use.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/45_everyday_use.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/40_everyday_use.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/45_everyday_use.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/41_position_controller.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/46_position_controller.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/41_position_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/46_position_controller.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/42_precision_land.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/47_precision_land.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/42_precision_land.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/47_precision_land.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/43_guided_operation.param b/vehicle_examples/diatone_taycan_mxc/4.4.4-params/48_guided_operation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/43_guided_operation.param rename to vehicle_examples/diatone_taycan_mxc/4.4.4-params/48_guided_operation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/03_imu_temperature_calibration_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/03_imu_temperature_calibration_results.param index 8a77a0b..2432681 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/03_imu_temperature_calibration_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/03_imu_temperature_calibration_results.param @@ -2,128 +2,128 @@ # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_X,972.9462 +INS_TCAL1_ACC1_X 115.946591342 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Y,304.8713 +INS_TCAL1_ACC1_Y 498.256973344 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Z,171.2766 +INS_TCAL1_ACC1_Z -381.446151984 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_X,-9.342097 +INS_TCAL1_ACC2_X -22.931568706 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Y,-10.1848 +INS_TCAL1_ACC2_Y 13.578689275 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Z,2.709858 +INS_TCAL1_ACC2_Z 19.361290207 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_X,-0.2591625 +INS_TCAL1_ACC3_X -0.601406268 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Y,-0.1429296 +INS_TCAL1_ACC3_Y 0.213798686 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Z,-0.06181677 +INS_TCAL1_ACC3_Z 0.011621521 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL1_ENABLE,1 +INS_TCAL1_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_X,45.58128 +INS_TCAL1_GYR1_X -32.634220542 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Y,135.7386 +INS_TCAL1_GYR1_Y 79.655005221 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Z,-143.1902 +INS_TCAL1_GYR1_Z -151.124203469 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_X,0.3562318 +INS_TCAL1_GYR2_X -0.611429461 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Y,-2.431096 +INS_TCAL1_GYR2_Y -2.040988991 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Z,3.511315 +INS_TCAL1_GYR2_Z 1.238329627 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_X,-0.018454 +INS_TCAL1_GYR3_X -0.009728067 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Y,-0.01438955 +INS_TCAL1_GYR3_Y 0.019491833 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Z,0.04182188 +INS_TCAL1_GYR3_Z 0.001409968 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL1_TMAX,53.27945 +INS_TCAL1_TMAX 56.0 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -131,134 +131,134 @@ INS_TCAL1_TMAX,53.27945 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL1_TMIN,-10.98182 +INS_TCAL1_TMIN -14.6 # Accelerometer 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_X,-536.5219 +INS_TCAL2_ACC1_X -1088.415600440 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Y,670.0316 +INS_TCAL2_ACC1_Y 806.840522393 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Z,1020.751 +INS_TCAL2_ACC1_Z 327.521202466 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_X,2.741263 +INS_TCAL2_ACC2_X -13.630366124 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Y,-10.82371 +INS_TCAL2_ACC2_Y 6.347960639 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Z,20.6932 +INS_TCAL2_ACC2_Z 9.967253125 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_X,0.08527539 +INS_TCAL2_ACC3_X -0.376738491 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Y,-0.2103454 +INS_TCAL2_ACC3_Y 0.002642167 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Z,0.1007276 +INS_TCAL2_ACC3_Z -0.065860983 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL2_ENABLE,1 +INS_TCAL2_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_X,-60.37366 +INS_TCAL2_GYR1_X -44.455145632 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Y,14.72497 +INS_TCAL2_GYR1_Y -8.833005619 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Z,79.62315 +INS_TCAL2_GYR1_Z 88.004538868 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_X,2.357543 +INS_TCAL2_GYR2_X 1.435061412 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Y,-0.01480431 +INS_TCAL2_GYR2_Y -0.204452936 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Z,-1.617007 +INS_TCAL2_GYR2_Z -2.086231519 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_X,-0.01039512 +INS_TCAL2_GYR3_X -0.048140576 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Y,0.002791975 +INS_TCAL2_GYR3_Y -0.002372842 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Z,-0.02426609 +INS_TCAL2_GYR3_Z -0.028350688 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL2_TMAX,54.74387 +INS_TCAL2_TMAX 56.5 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -266,4 +266,4 @@ INS_TCAL2_TMAX,54.74387 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL2_TMIN,-10.0157 +INS_TCAL2_TMIN -13.3 diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/04_board_orientation.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/04_board_orientation.param index df32256..a5aae39 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/04_board_orientation.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/04_board_orientation.param @@ -23,7 +23,7 @@ # 14: Yaw270Roll180 30: Pitch90Roll270 # 15: Yaw315Roll180 31: Pitch180Roll90 # Default: 0 -AHRS_ORIENTATION,0 +AHRS_ORIENTATION,0 # Point forward in the direction of travel # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled at all times including when disarmed. Logging @@ -39,4 +39,4 @@ AHRS_ORIENTATION,0 # 2: Disabled on USB connection # 3: Discard log on reboot if never armed # Default: 0 -LOG_DISARMED,0 # Log disarmed was only required for offline IMU temperature calibration +LOG_DISARMED,0 # Log disarmed was only required for offline IMU temperature calibration diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/06_telemetry.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/06_telemetry.param index 818fc14..681d8a8 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/06_telemetry.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/06_telemetry.param @@ -1,26 +1,2 @@ -# Serial 1 flow control -# Enable flow control on serial 1 (telemetry 1). You must have the RTS and CTS pins connected to your -# radio. The standard DF13 6 pin connector for a 3DR radio does have those pins connected. If this is set -# to 2 then flow control will be auto-detected by checking for the output buffer filling on startup. Note -# that the PX4v1 does not have hardware flow control pins on this port, so you should leave this disabled. -# RebootRequired: True -# 0: Disabled -# 1: Enabled -# 2: Auto -# Default: 2 BRD_SER1_RTSCTS,0 # we have no RTS/CTS pins connected - -# Telem1 Baud Rate -# The baud rate used on the Telem1 port. Most stm32-based boards can support rates of up to 1500. If you -# setup a rate you cannot support and then can't connect to your board you should load a firmware from a -# different vehicle type. That will reset all your parameters to defaults. -# 1: 1200 115: 115200 -# 2: 2400 230: 230400 -# 4: 4800 256: 256000 -# 9: 9600 460: 460800 -# 19: 19200 500: 500000 -# 38: 38400 921: 921600 -# 57: 57600 1500: 1500000 -# 111: 111100 2000: 2000000 -# Default: 57 -SERIAL1_BAUD,57 # The mavlink over CRSF telemetry +SERIAL1_BAUD,460 # The MAVLink over ESP32 telemetry diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/07_esc.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/07_esc.param index bec1641..3a6ba1e 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/07_esc.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/07_esc.param @@ -1,323 +1,29 @@ -# Pitch slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 -ATC_RAT_PIT_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html - -# Roll slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 -ATC_RAT_RLL_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html - -# Yaw slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 -ATC_RAT_YAW_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html - -# Output PWM type -# This selects the output PWM type, allowing for normal PWM continuous output, OneShot, brushed or DShot -# motor output -# RebootRequired: True -# 0: Normal -# 1: OneShot -# 2: OneShot125 -# 3: Brushed -# 4: DShot150 -# 5: DShot300 -# 6: DShot600 -# 7: DShot1200 -# 8: PWMRange -# Default: 0 +ATC_RAT_PIT_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_RLL_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_YAW_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html MOT_PWM_TYPE,6 # the most recomended speed for ArduCopter - -# Buzzer Driver Types -# Controls what types of Buzzer will be enabled -# Bitmask: 0:Built-in buzzer, 1:DShot, 2:DroneCAN -# Default: 5 -NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this - -# LED Driver Types -# Controls what types of LEDs will be enabled -# Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI, 13:LP5562 External, 14: LP5562 Internal, 15:IS31FL3195 External, 16: IS31FL3195 Internal, 17: DiscreteRGB, 18: NeoPixelRGB -# Default: 123079 -NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) - -# Accel (vertical) slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 -PSC_ACCZ_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html - -# Serial 5 Baud Rate -# The baud rate used for Serial5. Most stm32-based boards can support rates of up to 1500. If you setup a -# rate you cannot support and then can't connect to your board you should load a firmware from a different -# vehicle type. That will reset all your parameters to defaults. -# 1: 1200 115: 115200 -# 2: 2400 230: 230400 -# 4: 4800 256: 256000 -# 9: 9600 460: 460800 -# 19: 19200 500: 500000 -# 38: 38400 921: 921600 -# 57: 57600 1500: 1500000 -# 111: 111100 2000: 2000000 -# Default: 115 -SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 - -# Serial5 protocol selection -# Control what protocol Serial5 port should be used for. Note that the Frsky options require external -# converter hardware. See the wiki for details. -# RebootRequired: True -# -1: None 25: LTM -# 1: MAVLink1 26: RunCam -# 2: MAVLink2 27: HottTelem -# 3: Frsky D 28: Scripting -# 4: Frsky SPort 29: Crossfire VTX -# 5: GPS 30: Generator -# 7: Alexmos Gimbal Serial 31: Winch -# 8: Gimbal 32: MSP -# 9: Rangefinder 33: DJI FPV -# 10: FrSky SPort Passthrough (OpenTX) 34: AirSpeed -# 11: Lidar360 35: ADSB -# 13: Beacon 36: AHRS -# 14: Volz servo out 37: SmartAudio -# 15: SBus servo out 38: FETtecOneWire -# 16: ESC Telemetry 39: Torqeedo -# 17: Devo Telemetry 40: AIS -# 18: OpticalFlow 41: CoDevESC -# 19: RobotisServo 42: DisplayPort -# 20: NMEA Output 43: MAVLink High Latency -# 21: WindVane 44: IRC Tramp -# 22: SLCAN 45: DDS XRCE -# 23: RCIN 46: IMUDATA -# 24: EFI Serial -# Default: -1 -SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 - -# BLHeli pass-thru auto-enable for multicopter motors -# If set to 1 this auto-enables BLHeli pass-thru support for all multicopter motors -# RebootRequired: True -# 0: Disabled -# 1: Enabled -# Default: 0 -SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru - -# BLHeli bitmask of bi-directional dshot channels -# Mask of channels which support bi-directional dshot. This is used for ESCs which have firmware that -# supports bi-directional dshot allowing fast rpm telemetry values to be returned for the harmonic notch. -# Bitmask: 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16, 16:Channel 17, 17: Channel 18, 18: Channel 19, 19: Channel 20, 20: Channel 21, 21: Channel 22, 22: Channel 23, 23: Channel 24, 24: Channel 25, 25: Channel 26, 26: Channel 27, 27: Channel 28, 28: Channel 29, 29: Channel 30, 30: Channel 31, 31: Channel 32 -# RebootRequired: True -# Default: 0 -SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot - -# BLHeli Motor Poles -# This allows calculation of true RPM from ESC's eRPM. The default is 14. -# Range: 1 127 -# RebootRequired: True -# Default: 14 -SERVO_BLH_POLES,12 # Number of Diatone Mamba 1404 5000kv motor's magnetic poles - -# BLHeli telemetry rate -# This sets the rate in Hz for requesting telemetry from ESCs. It is the rate per ESC. Setting to zero -# disables telemetry requests -# Units: Hz (hertz) -# Range: 0 500 -# Default: 10 -SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry - -# Servo DShot ESC type -# DShot ESC type for all outputs. The ESC type affects the range of DShot commands available and the bit -# widths used. None means that no dshot commands will be executed. Some ESC types support Extended DShot -# Telemetry (EDT) which allows telemetry other than RPM data to be returned when using bi-directional -# dshot. If you enable EDT you must install EDT capable firmware for correct operation. -# 0: None -# 1: BLHeli32/Kiss -# 2: BLHeli_S -# 3: BLHeli32/Kiss+EDT -# 4: BLHeli_S+EDT -# Default: 0 -SERVO_DSHOT_ESC,1 - -# Servo DShot output rate -# DShot output rate for all outputs as a multiple of the loop rate. 0 sets the output rate to be fixed at -# 1Khz for low loop rates. This value should never be set below 500Hz. -# 0: 1Khz -# 1: loop-rate -# 2: double loop-rate -# 3: triple loop-rate -# 4: quadruple loop rate -# Default: 0 -SERVO_DSHOT_RATE,2 # Sends DShot control signals to the ESC twice per control loop - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO1_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO1_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO1_TRIM,1000 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 +NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this +NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) +PSC_ACCZ_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 +SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 +SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru +SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot +SERVO_BLH_POLES,14 # Number of T-Motor 1507 3800kv motor's magnetic poles +SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry +SERVO_DSHOT_ESC,1 # BLHeli32 +SERVO_DSHOT_RATE,2 # Sends DShot control signals to the ESC twice per control loop +SERVO1_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO1_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO1_TRIM,1000 # Use the full available 1000-2000 DShot range SERVO13_FUNCTION,120 # For matek H743Slim v3 board - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO2_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO2_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO2_TRIM,1000 - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO3_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO3_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO3_TRIM,1000 - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO4_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO4_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO4_TRIM,1000 - -# Takeoff Check RPM minimum -# Takeoff is not permitted until motors report at least this RPM. Set to zero to disable check -# Range: 0 10000 -# Default: 0 -TKOFF_RPM_MIN,3000 # Our motors should idle at around 3200 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html +SERVO2_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO2_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO2_TRIM,1000 # Use the full available 1000-2000 DShot range +SERVO3_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO3_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO3_TRIM,1000 # Use the full available 1000-2000 DShot range +SERVO4_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO4_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO4_TRIM,1000 # Use the full available 1000-2000 DShot range +TKOFF_RPM_MIN,1400 # Our motors should idle at around 1400 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/10_gnss.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/10_gnss.param index d6b436f..157cf2f 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/10_gnss.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/10_gnss.param @@ -14,7 +14,7 @@ BRD_SAFETY_DEFLT,0 # Matek H743 Slim has no safety switch # Bitmask for what GNSS system to use on the first GPS (all unchecked or zero to leave GPS as configured) # Bitmask: 0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLONASS # Default: 0 -GPS_GNSS_MODE,7 # limit the constalations to ensure an update rate higher than 5Hz +GPS_GNSS_MODE,7 # limit the constalations to ensure an update rate higher than 5Hz # Antenna X position offset # X position of the first GPS antenna in body frame. Positive X is forward of the origin. Use antenna phase @@ -23,7 +23,7 @@ GPS_GNSS_MODE,7 # limit the constalations to ensure an update rate higher than 5 # Range: -5 5 # Increment: 0.01 # Default: 0 -GPS_POS1_X,0.056 # HX-CH7604A GNSS antenna pahse center location relative to CG +GPS_POS1_X,0.056 # HX-CH7604A GNSS antenna pahse center location relative to CG # Antenna Y position offset # Y position of the first GPS antenna in body frame. Positive Y is to the right of the origin. Use antenna @@ -32,7 +32,7 @@ GPS_POS1_X,0.056 # HX-CH7604A GNSS antenna pahse center location relative to CG # Range: -5 5 # Increment: 0.01 # Default: 0 -GPS_POS1_Y,0.0 # HX-CH7604A GNSS antenna pahse center location relative to CG +GPS_POS1_Y,0 # HX-CH7604A GNSS antenna pahse center location relative to CG # Antenna Z position offset # Z position of the first GPS antenna in body frame. Positive Z is down from the origin. Use antenna phase @@ -41,7 +41,7 @@ GPS_POS1_Y,0.0 # HX-CH7604A GNSS antenna pahse center location relative to CG # Range: -5 5 # Increment: 0.01 # Default: 0 -GPS_POS1_Z,-0.070 # HX-CH7604A GNSS antenna pahse center location relative to CG +GPS_POS1_Z,-0.07 # HX-CH7604A GNSS antenna pahse center location relative to CG # 1st GPS type # GPS type of 1st GPS @@ -59,7 +59,37 @@ GPS_POS1_Z,-0.070 # HX-CH7604A GNSS antenna pahse center location relative to CG # 13: ERB 25: UnicoreMovingBaselineNMEA # 14: MAV 26: SBF-DualAntenna # Default: 1 -GPS_TYPE,2 +GPS_TYPE,2 # set it explicit to uBlox, instead of guessing which GNSS receiver we have + +# Serial3 protocol selection +# Control what protocol Serial3 port should be used for. Note that the Frsky options require external +# converter hardware. See the wiki for details. +# RebootRequired: True +# -1: None 25: LTM +# 1: MAVLink1 26: RunCam +# 2: MAVLink2 27: HottTelem +# 3: Frsky D 28: Scripting +# 4: Frsky SPort 29: Crossfire VTX +# 5: GPS 30: Generator +# 7: Alexmos Gimbal Serial 31: Winch +# 8: Gimbal 32: MSP +# 9: Rangefinder 33: DJI FPV +# 10: FrSky SPort Passthrough (OpenTX) 34: AirSpeed +# 11: Lidar360 35: ADSB +# 13: Beacon 36: AHRS +# 14: Volz servo out 37: SmartAudio +# 15: SBus servo out 38: FETtecOneWire +# 16: ESC Telemetry 39: Torqeedo +# 17: Devo Telemetry 40: AIS +# 18: OpticalFlow 41: CoDevESC +# 19: RobotisServo 42: DisplayPort +# 20: NMEA Output 43: MAVLink High Latency +# 21: WindVane 44: IRC Tramp +# 22: SLCAN 45: DDS XRCE +# 23: RCIN 46: IMUDATA +# 24: EFI Serial +# Default: 5 +SERIAL3_PROTOCOL,5 # GNSS receiver is connected to serial3 # Serial4 protocol selection # Control what protocol Serial4 port should be used for. Note that the Frsky options require external @@ -89,7 +119,7 @@ GPS_TYPE,2 # 23: RCIN 46: IMUDATA # 24: EFI Serial # Default: 5 -SERIAL4_PROTOCOL,-1 +SERIAL4_PROTOCOL,-1 # No GNSS connected to serial4, so disable it # Waypoint Radius # Defines the distance from a waypoint, that when crossed indicates the wp has been hit. diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/11_mp_setup_mandatory_hardware.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/11_mp_setup_mandatory_hardware.param index 90149ad..410d507 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/11_mp_setup_mandatory_hardware.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/11_mp_setup_mandatory_hardware.param @@ -1,819 +1,79 @@ -# AHRS Trim Roll -# Compensates for the roll angle difference between the control board and the frame. Positive values make -# the vehicle roll right. -# Units: rad (radians) -# Range: -0.1745 +0.1745 -# Increment: 0.01 -# Default: 0 -AHRS_TRIM_X,-0.007751919 - -# AHRS Trim Pitch -# Compensates for the pitch angle difference between the control board and the frame. Positive values make -# the vehicle pitch up/back. -# Units: rad (radians) -# Range: -0.1745 +0.1745 -# Increment: 0.01 -# Default: 0 -AHRS_TRIM_Y,0.01101564 - -# Acceleration Max for Pitch -# Maximum acceleration in pitch axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 180000 -# Increment: 1000 -# 0: Disabled -# 30000: VerySlow -# 72000: Slow -# 108000: Medium -# 162000: Fast -# Default: 110000 -ATC_ACCEL_P_MAX,193500 - -# Acceleration Max for Roll -# Maximum acceleration in roll axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 180000 -# Increment: 1000 -# 0: Disabled -# 30000: VerySlow -# 72000: Slow -# 108000: Medium -# 162000: Fast -# Default: 110000 -ATC_ACCEL_R_MAX,193500 - -# Acceleration Max for Yaw -# Maximum acceleration in yaw axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 72000 -# Increment: 1000 -# 0: Disabled -# 9000: VerySlow -# 18000: Slow -# 36000: Medium -# 54000: Fast -# Default: 27000 -ATC_ACCEL_Y_MAX,33300 - -# Pitch axis rate controller derivative frequency in Hz -# Pitch axis rate controller derivative frequency in Hz -# Range: 0 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_PIT_FLTD,57.5 # INS_GYRO_FILTER / 2 - -# Pitch axis rate controller target frequency in Hz -# Pitch axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_PIT_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Roll axis rate controller derivative frequency in Hz -# Roll axis rate controller derivative frequency in Hz -# Range: 0 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_RLL_FLTD,57.5 # INS_GYRO_FILTER / 2 - -# Roll axis rate controller target frequency in Hz -# Roll axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_RLL_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Yaw axis rate controller error frequency in Hz -# Yaw axis rate controller error frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 2.5 -ATC_RAT_YAW_FLTE,2 - -# Yaw axis rate controller target frequency in Hz -# Yaw axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_YAW_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Compass is attached via an external cable -# Configure compass so it is attached externally. This is auto-detected on most boards. Set to 1 if the -# compass is externally connected. When externally connected the COMPASS_ORIENT option operates -# independently of the AHRS_ORIENTATION board orientation option. If set to 0 or 1 then auto-detection by -# bus connection can override the value. If set to 2 then auto-detection will be disabled. -# 0: Internal -# 1: External -# 2: ForcedExternal -# Default: 0 -COMPASS_EXTERNAL,1 - -# Compass orientation -# The orientation of the first external compass relative to the vehicle frame. This value will be ignored -# unless this compass is set as an external compass. When set correctly in the northern hemisphere, -# pointing the nose and right side down should increase the MagX and MagY values respectively. Rolling the -# vehicle upside down should decrease the MagZ value. For southern hemisphere, switch increase and -# decrease. NOTE: For internal compasses, AHRS_ORIENT is used. The label for each option is specified in -# the order of rotations for that orientation. Firmware versions 4.2 and prior can use a CUSTOM (100) -# rotation to set the COMPASS_CUS_ROLL/PIT/YAW angles for Compass orientation. Later versions provide two -# general custom rotations which can be used, Custom 1 and Custom 2, with CUST_1_ROLL/PIT/YAW or -# CUST_2_ROLL/PIT/YAW angles. -# 0: None 16: Roll90 32: Pitch180Roll270 -# 1: Yaw45 17: Yaw45Roll90 33: Pitch270Roll90 -# 2: Yaw90 18: Yaw90Roll90 34: Pitch270Roll180 -# 3: Yaw135 19: Yaw135Roll90 35: Pitch270Roll270 -# 4: Yaw180 20: Roll270 36: Yaw90Pitch180Roll90 -# 5: Yaw225 21: Yaw45Roll270 37: Yaw270Roll90 -# 6: Yaw270 22: Yaw90Roll270 38: Yaw293Pitch68Roll180 -# 7: Yaw315 23: Yaw135Roll270 39: Pitch315 -# 8: Roll180 24: Pitch90 40: Pitch315Roll90 -# 9: Yaw45Roll180 25: Pitch270 42: Roll45 -# 10: Yaw90Roll180 26: Yaw90Pitch180 43: Roll315 -# 11: Yaw135Roll180 27: Yaw270Pitch180 100: Custom 4.1 and older -# 12: Pitch180 28: Pitch90Roll90 101: Custom 1 -# 13: Yaw225Roll180 29: Pitch90Roll180 102: Custom 2 -# 14: Yaw270Roll180 30: Pitch90Roll270 -# 15: Yaw315Roll180 31: Pitch180Roll90 -# Default: 0 -COMPASS_ORIENT,6 - -# Compass device id with 1st order priority -# Compass device id with 1st order priority, set automatically if 0. Reboot required after change. -# RebootRequired: True -# Default: 0 -COMPASS_PRIO1_ID,658953 - -# Compass2 used for yaw -# Enable or disable the secondary compass for determining heading. -# 0: Disabled -# 1: Enabled -# Default: 1 -COMPASS_USE2,0 - -# Compass3 used for yaw -# Enable or disable the tertiary compass for determining heading. -# 0: Disabled -# 1: Enabled -# Default: 1 -COMPASS_USE3,0 - -# Fence Action -# What action should be taken when fence is breached -# 0: Report Only -# 1: RTL or Land -# 2: Always Land -# 3: SmartRTL or RTL or Land -# 4: Brake or Land -# 5: SmartRTL or Land -# Default: 1 -FENCE_ACTION,3 - -# Fence Maximum Altitude -# Maximum altitude allowed before geofence triggers -# Units: m (meters) -# Range: 10 1000 -# Increment: 1 -# Default: 100 +AHRS_TRIM_X,0.005101477261632681 +AHRS_TRIM_Y,0.010856986045837402 +ATC_ACCEL_P_MAX,193500.0 +ATC_ACCEL_R_MAX,193500.0 +ATC_ACCEL_Y_MAX,33300.0 +ATC_RAT_PIT_FLTD,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_PIT_FLTT,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTD,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTT,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_YAW_FLTE,2.0 +ATC_RAT_YAW_FLTT,57.5 # INS_GYRO_FILTER / 2 +COMPASS_EXTERNAL,0.0 +COMPASS_ORIENT,6.0 +COMPASS_PRIO1_ID,658953.0 +COMPASS_USE2,0.0 +COMPASS_USE3,0.0 +FENCE_ACTION,3.0 FENCE_ALT_MAX,80.0 - -# Fence enable/disable -# Allows you to enable (1) or disable (0) the fence functionality -# 0: Disabled -# 1: Enabled -# Default: 0 -FENCE_ENABLE,1 - -# Circular Fence Radius -# Circle fence radius which when breached will cause an RTL -# Units: m (meters) -# Range: 30 10000 -# Default: 300 +FENCE_ENABLE,0.0 FENCE_RADIUS,150.0 - -# Flight Mode 1 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is <= 1230 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE1,0 - -# Flight Mode 2 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1230, <= 1360 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE2,2 - -# Flight Mode 3 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1360, <= 1490 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE3,5 - -# Flight Mode 4 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1490, <= 1620 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE4,3 - -# Flight Mode 5 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1620, <= 1749 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE5,6 - -# Flight Mode 6 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >=1750 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE6,15 - -# Frame Class -# Controls major frame class for multicopter component -# RebootRequired: True -# 0: Undefined 6: Heli 12: DodecaHexa -# 1: Quad 7: Tri 13: HeliQuad -# 2: Hexa 8: SingleCopter 14: Deca -# 3: Octa 9: CoaxCopter 15: Scripting Matrix -# 4: OctaQuad 10: BiCopter 16: 6DoF Scripting -# 5: Y6 11: Heli_Dual 17: Dynamic Scripting Matrix -# Default: 0 -FRAME_CLASS,1 - -# Frame Type (+, X, V, etc) -# Controls motor mixing for multicopters. Not used for Tri or Traditional Helicopters. -# RebootRequired: True -# 0: Plus 11: Y6F -# 1: X 12: BetaFlightX -# 2: V 13: DJIX -# 3: H 14: ClockwiseX -# 4: V-Tail 15: I -# 5: A-Tail 18: BetaFlightXReversed -# 10: Y6B 19: Y4 -# Default: 1 -FRAME_TYPE,1 - -# Calibration temperature for 1st accelerometer -# Temperature that the 1st accelerometer was calibrated at -# Units: degC (degrees Celsius) -# Calibration: 1 -# Default: -300 -INS_ACC1_CALTEMP,39.97585 - -# Calibration temperature for 2nd accelerometer -# Temperature that the 2nd accelerometer was calibrated at -# Units: degC (degrees Celsius) -# Calibration: 1 -# Default: -300 -INS_ACC2_CALTEMP,40.94203 - -# Accelerometer2 scaling of X axis -# Accelerometer2 scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_X,0.9974412 - -# Accelerometer2 scaling of Y axis -# Accelerometer2 scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_Y,0.9977408 - -# Accelerometer2 scaling of Z axis -# Accelerometer2 scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_Z,0.9998143 - -# Accelerometer3 scaling of X axis -# Accelerometer3 scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC3SCAL_X,0 - -# Accelerometer3 scaling of Y axis -# Accelerometer3 scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC3SCAL_Y,0 - -# Accelerometer3 scaling of Z axis -# Accelerometer3 scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC3SCAL_Z,0 - -# Accelerometer scaling of X axis -# Accelerometer scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_X,0.9991518 - -# Accelerometer scaling of Y axis -# Accelerometer scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_Y,0.9994594 - -# Accelerometer scaling of Z axis -# Accelerometer scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_Z,0.998758 - -# Gyro filter cutoff frequency -# Filter cutoff frequency for gyroscopes. This can be set to a lower value to try to cope with very high -# vibration levels in aircraft. A value of zero means no filtering (not recommended!) -# Units: Hz (hertz) -# Range: 0 256 -# Default: 20 -INS_GYRO_FILTER,115 - -# Use third IMU for attitude, velocity and position estimates -# Use third IMU for attitude, velocity and position estimates -# 0: Disabled -# 1: Enabled -# Default: 1 -INS_USE3,0 - -# Battery voltage compensation maximum voltage -# Battery voltage compensation maximum voltage (voltage above this will have no additional scaling effect -# on thrust). Recommend 4.2 * cell count, 0 = Disabled -# Range: 6 53 -# Units: V (volt) -# Default: 0 -MOT_BAT_VOLT_MAX,16.8 - -# Battery voltage compensation minimum voltage -# Battery voltage compensation minimum voltage (voltage below this will have no additional scaling effect -# on thrust). Recommend 3.3 * cell count, 0 = Disabled -# Range: 6 42 -# Units: V (volt) -# Default: 0 -MOT_BAT_VOLT_MIN,13.2 - -# Motor Spin armed -# Point at which the motors start to spin expressed as a number from 0 to 1 in the entire output range. -# Should be lower than MOT_SPIN_MIN. -# 0.0: Low -# 0.1: Default -# 0.2: High -# Default: 0.1 -MOT_SPIN_ARM,0.01 - -# Motor Spin maximum -# Point at which the thrust saturates expressed as a number from 0 to 1 in the entire output range -# 0.9: Low -# 0.95: Default -# 1.0: High -# Default: 0.95 -MOT_SPIN_MAX,0.95 - -# Motor Spin minimum -# Point at which the thrust starts expressed as a number from 0 to 1 in the entire output range. Should be -# higher than MOT_SPIN_ARM. -# 0.0: Low -# 0.15: Default -# 0.25: High -# Default: 0.15 -MOT_SPIN_MIN,0.04 - -# Thrust Curve Expo -# Motor thrust curve exponent (0.0 for linear to 1.0 for second order curve) -# Range: -1.0 1.0 -# Default: 0.65 -MOT_THST_EXPO,0.48 - -# Thrust Hover Value -# Motor thrust needed to hover expressed as a number from 0 to 1 -# Range: 0.2 0.8 -# Default: 0.35 -MOT_THST_HOVER,0.2 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC1_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC1_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC1_TRIM,1500 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC2_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC2_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC2_TRIM,1500 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC3_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC3_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC3_TRIM,1466 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC4_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC4_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC4_TRIM,1500 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC5_MAX,1856 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC5_MIN,1143 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC5_TRIM,1143 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC6_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC6_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC6_TRIM,988 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC7_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC7_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC7_TRIM,988 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC8_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC8_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC8_TRIM,988 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC9_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC9_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC9_TRIM,988 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO1_FUNCTION,33 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO2_FUNCTION,34 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO3_FUNCTION,35 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO4_FUNCTION,36 +FLTMODE1,0.0 +FLTMODE2,2.0 +FLTMODE3,5.0 +FLTMODE4,3.0 +FLTMODE5,6.0 +FLTMODE6,15.0 +FRAME_CLASS,1.0 +FRAME_TYPE,1.0 +INS_ACC1_CALTEMP,55.434783935546875 +INS_ACC2_CALTEMP,55.917877197265625 +INS_ACC2SCAL_X,0.9978519678115845 +INS_ACC2SCAL_Y,0.9963401556015015 +INS_ACC2SCAL_Z,0.9967923164367676 +INS_ACC3SCAL_X,0.0 +INS_ACC3SCAL_Y,0.0 +INS_ACC3SCAL_Z,0.0 +INS_ACCSCAL_X,0.9986425638198853 +INS_ACCSCAL_Y,1.000264048576355 +INS_ACCSCAL_Z,0.996766984462738 +INS_GYRO_FILTER,115.0 +INS_USE3,1.0 +MOT_BAT_VOLT_MAX,16.799999237060547 +MOT_BAT_VOLT_MIN,13.199999809265137 +MOT_SPIN_ARM,0.019999999552965164 +MOT_SPIN_MAX,0.949999988079071 +MOT_SPIN_MIN,0.05000000074505806 +MOT_THST_EXPO,0.47999998927116394 +MOT_THST_HOVER,0.20000000298023224 +RC1_MAX,2011.0 +RC1_MIN,988.0 +RC1_TRIM,1500.0 +RC2_MAX,2011.0 +RC2_MIN,988.0 +RC2_TRIM,1500.0 +RC3_MAX,2011.0 +RC3_MIN,988.0 +RC3_TRIM,988.0 +RC4_MAX,2011.0 +RC4_MIN,988.0 +RC4_TRIM,1500.0 +RC5_MAX,1857.0 +RC5_MIN,1141.0 +RC5_TRIM,1570.0 +RC6_MAX,2011.0 +RC6_MIN,988.0 +RC6_TRIM,988.0 +RC7_MAX,2011.0 +RC7_MIN,988.0 +RC7_TRIM,988.0 +RC8_MAX,2011.0 +RC8_MIN,988.0 +RC8_TRIM,988.0 +RC9_MAX,2011.0 +RC9_MIN,988.0 +RC9_TRIM,988.0 +SERVO1_FUNCTION,33.0 +SERVO2_FUNCTION,34.0 +SERVO3_FUNCTION,35.0 +SERVO4_FUNCTION,36.0 diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/12_general_configuration.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/12_general_configuration.param index fe6886c..5c78a59 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/12_general_configuration.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/12_general_configuration.param @@ -1,113 +1,12 @@ -# Timezone offset from UTC -# Adds offset in +- minutes from UTC to calculate local time -# Range: -720 +840 -# Default: 0 -BRD_RTC_TZ_MIN,60 - -# Fence Type -# Enabled fence types held as bitmask -# Bitmask: 0:Max altitude,1:Circle Centered on Home,2:Inclusion/Exclusion Circles+Polygons,3:Min altitude -# Default: 7 -FENCE_TYPE,11 - -# Accel filter cutoff frequency -# Filter cutoff frequency for accelerometers. This can be set to a lower value to try to cope with very -# high vibration levels in aircraft. A value of zero means no filtering (not recommended!) -# Units: Hz (hertz) -# Range: 0 256 -# Default: 20 -INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in - -# IMU accelerometer X position -# X position of the first IMU Accelerometer in body frame. Positive X is forward of the origin. Attention: -# The IMU should be located as close to the vehicle c.g. as practical so that the value of this parameter -# is minimised. Failure to do so can result in noisy navigation velocity measurements due to vibration and -# IMU gyro noise. If the IMU cannot be moved and velocity noise is a problem, a location closer to the IMU -# can be used as the body frame origin. -# Units: m (meters) -# Range: -5 5 -# Increment: 0.01 -# Default: 0 -INS_POS1_X,0 # was -0.005 - -# IMU accelerometer Y position -# Y position of the first IMU accelerometer in body frame. Positive Y is to the right of the origin. -# Attention: The IMU should be located as close to the vehicle c.g. as practical so that the value of this -# parameter is minimised. Failure to do so can result in noisy navigation velocity measurements due to -# vibration and IMU gyro noise. If the IMU cannot be moved and velocity noise is a problem, a location -# closer to the IMU can be used as the body frame origin. -# Units: m (meters) -# Range: -5 5 -# Increment: 0.01 -# Default: 0 -INS_POS1_Y,0 # was -0.011 - -# IMU accelerometer X position -# X position of the second IMU accelerometer in body frame. Positive X is forward of the origin. Attention: -# The IMU should be located as close to the vehicle c.g. as practical so that the value of this parameter -# is minimised. Failure to do so can result in noisy navigation velocity measurements due to vibration and -# IMU gyro noise. If the IMU cannot be moved and velocity noise is a problem, a location closer to the IMU -# can be used as the body frame origin. -# Units: m (meters) -# Range: -5 5 -# Increment: 0.01 -# Default: 0 -INS_POS2_X,0 # was -0.011 - -# IMU accelerometer Y position -# Y position of the second IMU accelerometer in body frame. Positive Y is to the right of the origin. -# Attention: The IMU should be located as close to the vehicle c.g. as practical so that the value of this -# parameter is minimised. Failure to do so can result in noisy navigation velocity measurements due to -# vibration and IMU gyro noise. If the IMU cannot be moved and velocity noise is a problem, a location -# closer to the IMU can be used as the body frame origin. -# Units: m (meters) -# Range: -5 5 -# Increment: 0.01 -# Default: 0 -INS_POS2_Y,0 # was -0.01 - -# Land alt low -# Altitude during Landing at which vehicle slows to LAND_SPEED -# Units: cm (centimeters) -# Range: 100 10000 -# Increment: 10 -# Default: 1000 -LAND_ALT_LOW,200 # come down fast and only slow down close to the ground. We have a good GNSS receiver, so thrust it - -# RTL Altitude -# The minimum alt above home the vehicle will climb to before returning. If the vehicle is flying higher -# than this value it will return at its current altitude. -# Units: cm (centimeters) -# Range: 200 300000 -# Increment: 1 -# Default: 1500 -RTL_ALT,300 # The default is too high for the kind of flights we do. This reduces the altitude for indoors - -# RTL loiter time -# Time (in milliseconds) to loiter above home before beginning final descent -# Units: ms (milliseconds) -# Range: 0 60000 -# Increment: 1000 -# Default: 5000 -RTL_LOIT_TIME,1000 # The default is too long. This reduces the time - -# Scheduling main loop rate -# This controls the rate of the main control loop in Hz. This should only be changed by developers. This -# only takes effect on restart. Values over 400 are considered highly experimental. -# RebootRequired: True -# 50: 50Hz -# 100: 100Hz -# 200: 200Hz -# 250: 250Hz -# 300: 300Hz -# 400: 400Hz -# Default: 400 -SCHED_LOOP_RATE,800 # On our vehicle the propellers rotate at speeds higher than 400Hz and we have a powerful STM32 H7 family processor. So we increase this for added performance. - -# Enable Scripting -# Controls if scripting is enabled -# RebootRequired: True -# 0: None -# 1: Lua Scripts -# Default: 0 +BRD_RTC_TZ_MIN,60 # Berlin time zone +FENCE_TYPE,7 # cylinder and max altitude, to obey local regulations and safety measures +INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in +INS_POS1_X,0 # was -0.005 +INS_POS1_Y,0 # was -0.011 +INS_POS2_X,0 # was -0.011 +INS_POS2_Y,0 # was -0.01 +LAND_ALT_LOW,200 # come down fast and only slow down close to the ground. We have a good GNSS receiver, so thrust it +RTL_ALT,300 # The default is too high for the kind of flights we do. This reduces the altitude for indoors +RTL_LOIT_TIME,1000 # The default is too long. This reduces the time +SCHED_LOOP_RATE,800 # On our vehicle the propellers rotate at speeds higher than 400Hz and we have a powerful STM32 H7 family processor. So we increase this for added performance. SCR_ENABLE,1 # For MagFit automation and Windspeed Estimation automation diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/13_logging.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/13_logging.param index 306603a..d3f047a 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/13_logging.param +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/13_logging.param @@ -16,7 +16,7 @@ INS_LOG_BAT_OPT,4 # Logs measured data both before and after the filters for Fi # you want to be saved. It is usually best just to enable all basiclog types by setting this to 65535. # Bitmask: 0:Fast Attitude,1:Medium Attitude,2:GPS,3:System Performance,4:Control Tuning,5:Navigation Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,10:RC output,11:Optical Flow,12:PID,13:Compass,15:Camera,17:Motors,18:Fast IMU,19:Raw IMU,20:Video Stabilization,21:Fast harmonic notch logging # Default: 176126 -LOG_BITMASK,145372 # Defines the logged signals +LOG_BITMASK,145372 # Defines the logged signals # Stop logging to current file on disarm # When set, the current log file is closed when the vehicle is disarmed. If LOG_DISARMED is set then a @@ -24,4 +24,4 @@ LOG_BITMASK,145372 # Defines the logged signals # 0: Disabled # 1: Enabled # Default: 0 -LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot +LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/14_motor.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/14_motor.param new file mode 100644 index 0000000..1c5334f --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/14_motor.param @@ -0,0 +1,4 @@ +MOT_SPIN_ARM,0.02 # The Mamba F45_128K ESCs reliably start spinning with this value +MOT_SPIN_MAX,0.95 # Upper dead zone of the Mamba F45_128K ESC +MOT_SPIN_MIN,0.05 # MOT_SPIN_ARM + 0.03 +MOT_THST_EXPO,0.63 # Measured with the motor test stand RCBenchmark Series 1780 from Tyto Robotics diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/14_pid_adjustment.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/15_pid_adjustment.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/14_pid_adjustment.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/15_pid_adjustment.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/16_notch_filter_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/16_notch_filter_setup.param deleted file mode 100644 index 24db4b2..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/16_notch_filter_setup.param +++ /dev/null @@ -1,99 +0,0 @@ -# Fast sampling mask -# Mask of IMUs to enable fast sampling on, if available -# Bitmask: 0:FirstIMU,1:SecondIMU,2:ThirdIMU -# Default: 1 -INS_FAST_SAMPLE,3 # Both IMUs can run fast on the Matek H743 Slim flight controller - -# Gyro rate for IMUs with Fast Sampling enabled -# Gyro rate for IMUs with fast sampling enabled. The gyro rate is the sample rate at which the IMU filters -# operate and needs to be at least double the maximum filter frequency. If the sensor does not support the -# selected rate the next highest supported rate will be used. For IMUs which do not support fast sampling -# this setting is ignored and the default gyro rate of 1Khz is used. -# RebootRequired: True -# 0: 1kHz -# 1: 2kHz -# 2: 4kHz -# 3: 8kHz -# Default: 1 -INS_GYRO_RATE,2 # The Matek H743 Slim can do 4KHz here - -# Harmonic Notch Filter attenuation -# Harmonic Notch Filter attenuation in dB. Values greater than 40dB will typically produce a hard notch -# rather than a modest attenuation of motor noise. -# Range: 5 50 -# Units: dB (decibel) -# Default: 40 -INS_HNTCH_ATT,20.0 # this is just a hunch, it must be improved after the first flight (by the next file) - -# Harmonic Notch Filter bandwidth -# Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of -# base frequency to bandwidth determines the notch quality factor and is fixed across harmonics. -# Range: 5 250 -# Units: Hz (hertz) -# Default: 40 -INS_HNTCH_BW,20.0 # this is just a hunch, it must be improved after the first flight (by the next file) - -# Harmonic Notch Filter enable -# Harmonic Notch Filter enable -# 0: Disabled -# 1: Enabled -# Default: 0 -INS_HNTCH_ENABLE,1 # the first notch filter will be used to filter the noise created by the motors/propellers - -# Harmonic Notch Filter base frequency -# Harmonic Notch Filter base center frequency in Hz. This is the center frequency for static notches, the -# center frequency for Throttle based notches at the reference thrust value, and the minimum limit of -# center frequency variation for all other notch types. This should always be set lower than half the -# backend gyro rate (which is typically 1Khz). -# Range: 10 495 -# Units: Hz (hertz) -# Default: 80 -INS_HNTCH_FREQ,160.0 # Start with 1.4 • INS_GYRO_FILTER - -# Harmonic Notch Filter harmonics -# Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next -# reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. -# Bitmask: 0: 1st harmonic, 1: 2nd harmonic, 2: 3rd harmonic, 3: 4th harmonic, 4: 5th harmonic, 5: 6th harmonic, 6: 7th harmonic, 7: 8th harmonic, 8: 9th harmonic, 9: 10th harmonic, 10: 11th harmonic, 11: 12th harmonic, 12: 13th harmonic, 13: 14th harmonic, 14: 15th harmonic, 15: 16th harmonic -# RebootRequired: True -# Default: 1 -INS_HNTCH_HMNCS,1 # start with a single frequency - -# Harmonic Notch Filter dynamic frequency tracking mode -# Harmonic Notch Filter dynamic frequency tracking mode. Dynamic updates can be throttle, RPM sensor, ESC -# telemetry or dynamic FFT based. Throttle-based updates should only be used with multicopters. -# Range: 0 5 -# 0: Fixed -# 1: Throttle -# 2: RPM Sensor -# 3: ESC Telemetry -# 4: Dynamic FFT -# 5: Second RPM Sensor -# Default: 1 -INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers - -# Harmonic Notch Filter options -# Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider -# bandwidth with reduced latency than single notches and are suitable for larger aircraft. Multi-Source -# attaches a harmonic notch to each detected noise frequency instead of simply being multiples of the base -# frequency, in the case of FFT it will attach notches to each of three detected noise peaks, in the case -# of ESC it will attach notches to each of four motor RPM values. Loop rate update changes the notch center -# frequency at the scheduler loop rate rather than at the default of 200Hz. If both double and triple -# notches are specified only double notches will take effect. -# Bitmask: 0:Double notch,1:Multi-Source,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch -# RebootRequired: True -# Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs - -# Harmonic Notch Filter reference value -# A reference value of zero disables dynamic updates on the Harmonic Notch Filter and a positive value -# enables dynamic updates on the Harmonic Notch Filter. For throttle-based scaling, this parameter is the -# reference value associated with the specified frequency to facilitate frequency scaling of the Harmonic -# Notch Filter. For RPM and ESC telemetry based tracking, this parameter is set to 1 to enable the Harmonic -# Notch Filter using the RPM sensor or ESC telemetry set to measure rotor speed. The sensor data is -# converted to Hz automatically for use in the Harmonic Notch Filter. This reference value may also be -# used to scale the sensor data, if required. For example, rpm sensor data is required to measure heli -# motor RPM. Therefore the reference value can be used to scale the RPM sensor to the rotor RPM. -# Range: 0.0 1.0 -# RebootRequired: True -# Default: 0 -INS_HNTCH_REF,1 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/16_remote_id.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/16_remote_id.param new file mode 100644 index 0000000..768edb1 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/16_remote_id.param @@ -0,0 +1,4 @@ +DID_CANDRIVER,0 +DID_ENABLE,0 # Our RemoteID module does not communicate with ArduPilot +DID_MAVPORT,2 # The serial port attached to the OpenDroneID module +DID_OPTIONS,0 diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/17_notch_filter_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/17_notch_filter_results.param deleted file mode 100644 index 404e7d8..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/17_notch_filter_results.param +++ /dev/null @@ -1,56 +0,0 @@ -# Harmonic Notch Filter attenuation -# Harmonic Notch Filter attenuation in dB. Values greater than 40dB will typically produce a hard notch -# rather than a modest attenuation of motor noise. -# Range: 5 50 -# Units: dB (decibel) -# Default: 40 -INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propellers - -# Harmonic Notch Filter bandwidth -# Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of -# base frequency to bandwidth determines the notch quality factor and is fixed across harmonics. -# Range: 5 250 -# Units: Hz (hertz) -# Default: 40 -INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propellers - -# Throttle notch min freqency ratio -# The minimum ratio below the configured frequency to take throttle based notch filters when flying at a -# throttle level below the reference throttle. Note that lower frequency notch filters will have more phase -# lag. If you want throttle based notch filtering to be effective at a throttle up to 30% below the -# configured notch frequency then set this parameter to 0.7. The default of 1.0 means the notch will not go -# below the frequency in the FREQ parameter. -# Range: 0.1 1.0 -# Default: 1 -INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first notch filter - -# Harmonic Notch Filter base frequency -# Harmonic Notch Filter base center frequency in Hz. This is the center frequency for static notches, the -# center frequency for Throttle based notches at the reference thrust value, and the minimum limit of -# center frequency variation for all other notch types. This should always be set lower than half the -# backend gyro rate (which is typically 1Khz). -# Range: 10 495 -# Units: Hz (hertz) -# Default: 80 -INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to operate at - -# Harmonic Notch Filter harmonics -# Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next -# reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. -# Bitmask: 0: 1st harmonic, 1: 2nd harmonic, 2: 3rd harmonic, 3: 4th harmonic, 4: 5th harmonic, 5: 6th harmonic, 6: 7th harmonic, 7: 8th harmonic, 8: 9th harmonic, 9: 10th harmonic, 10: 11th harmonic, 11: 12th harmonic, 12: 13th harmonic, 13: 14th harmonic, 14: 15th harmonic, 15: 16th harmonic -# RebootRequired: True -# Default: 1 -INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle - -# Harmonic Notch Filter options -# Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider -# bandwidth with reduced latency than single notches and are suitable for larger aircraft. Multi-Source -# attaches a harmonic notch to each detected noise frequency instead of simply being multiples of the base -# frequency, in the case of FFT it will attach notches to each of three detected noise peaks, in the case -# of ESC it will attach notches to each of four motor RPM values. Loop rate update changes the notch center -# frequency at the scheduler loop rate rather than at the default of 200Hz. If both double and triple -# notches are specified only double notches will take effect. -# Bitmask: 0:Double notch,1:Multi-Source,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch -# RebootRequired: True -# Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/17_notch_filter_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/17_notch_filter_setup.param new file mode 100644 index 0000000..da0defc --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/17_notch_filter_setup.param @@ -0,0 +1,10 @@ +INS_FAST_SAMPLE,3 # Both IMUs can run fast on the Matek H743 Slim flight controller +INS_GYRO_RATE,2 # The Matek H743 Slim can do 4KHz here +INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_ENABLE,1 # the first notch filter will be used to filter the noise created by the motors/propellers +INS_HNTCH_FREQ,160 # Start with 1.4 • INS_GYRO_FILTER +INS_HNTCH_HMNCS,1 # start with a single frequency +INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate +INS_HNTCH_REF,1 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/18_notch_filter_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/18_notch_filter_results.param new file mode 100644 index 0000000..43b79f8 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/18_notch_filter_results.param @@ -0,0 +1,6 @@ +INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propellers +INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propellers +INS_HNTCH_FM_RAT,1 # Allowed undercutting of the base frequency of the first notch filter +INS_HNTCH_FREQ,180 # the minimum frequency that the motors are expected to operate at +INS_HNTCH_HMNCS,3 # the motors produce secondary harmonics on this vehicle +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_inflight_magnetometer_fit_setup.pdef.xml deleted file mode 120000 index d1bddeb..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_inflight_magnetometer_fit_setup.pdef.xml +++ /dev/null @@ -1 +0,0 @@ -../../../19_inflight_magnetometer_fit_setup.pdef.xml \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_throttle_controller.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_throttle_controller.param new file mode 100644 index 0000000..8d9a099 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_throttle_controller.param @@ -0,0 +1,4 @@ +ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value +MOT_THST_HOVER,0.2 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 +PSC_ACCZ_I,0.4 # 2 • MOT_THST_HOVER +PSC_ACCZ_P,0.2 # MOT_THST_HOVER diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/20_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/20_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/20_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/21_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/21_quick_tune_results.param new file mode 100644 index 0000000..71a2549 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/21_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.00659 # Tuned in a Hangar +ATC_RAT_PIT_I,0.412175 # Tuned in a Hangar +ATC_RAT_PIT_P,0.412175 # Tuned in a Hangar +ATC_RAT_RLL_D,0.003622 # Tuned in a Hangar +ATC_RAT_RLL_I,0.251225 # Tuned in a Hangar +ATC_RAT_RLL_P,0.251225 # Tuned in a Hangar +ATC_RAT_YAW_D,0.01 # Tuned in a Hangar +ATC_RAT_YAW_FLTD,57.5 # Tuned in a Hangar +ATC_RAT_YAW_I,0.05 # Tuned in a Hangar +ATC_RAT_YAW_P,0.5 # Tuned in a Hangar diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_inflight_magnetometer_fit_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_inflight_magnetometer_fit_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/19_inflight_magnetometer_fit_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_inflight_magnetometer_fit_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_inflight_magnetometer_fit_setup.pdef.xml new file mode 100644 index 0000000..0ff0bd7 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_inflight_magnetometer_fit_setup.pdef.xml @@ -0,0 +1,41 @@ + + + + + + + m + 0 100 + 10 + + + 1.2 1.5 + 1.2 + + + 0 255 + 117 + + + 1 20 + 6 + + + 0 1 + 1 + + + m/s + 1/2 of WPNAV_SPEED + + + 16 24 + 18 + + + 0 1 + 1 + + + + diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/20_inflight_magnetometer_fit_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/23_inflight_magnetometer_fit_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/20_inflight_magnetometer_fit_results.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/23_inflight_magnetometer_fit_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/24_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/24_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/24_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/25_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/25_quick_tune_results.param new file mode 100644 index 0000000..20a5edb --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/25_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.006590242 +ATC_RAT_PIT_I,0.4121751 +ATC_RAT_PIT_P,0.4121751 +ATC_RAT_RLL_D,0.00362229 +ATC_RAT_RLL_I,0.2512255 +ATC_RAT_RLL_P,0.2512255 +ATC_RAT_YAW_D,0.01 +ATC_RAT_YAW_FLTD,57.5 +ATC_RAT_YAW_I,0.05 +ATC_RAT_YAW_P,0.5 \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/21_evaluate_the_aircraft_tune_ff_disable.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/26_evaluate_the_aircraft_tune_ff_disable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/21_evaluate_the_aircraft_tune_ff_disable.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/26_evaluate_the_aircraft_tune_ff_disable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_evaluate_the_aircraft_tune_ff_enable.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/27_evaluate_the_aircraft_tune_ff_enable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/22_evaluate_the_aircraft_tune_ff_enable.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/27_evaluate_the_aircraft_tune_ff_enable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/23_autotune_roll_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/28_autotune_roll_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/23_autotune_roll_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/28_autotune_roll_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/24_autotune_roll_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/29_autotune_roll_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/24_autotune_roll_results.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/29_autotune_roll_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/25_autotune_pitch_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/30_autotune_pitch_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/25_autotune_pitch_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/30_autotune_pitch_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/26_autotune_pitch_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/31_autotune_pitch_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/26_autotune_pitch_results.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/31_autotune_pitch_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/27_autotune_yaw_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/32_autotune_yaw_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/27_autotune_yaw_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/32_autotune_yaw_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/28_autotune_yaw_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/33_autotune_yaw_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/28_autotune_yaw_results.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/33_autotune_yaw_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/29_autotune_yawd_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/34_autotune_yawd_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/29_autotune_yawd_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/34_autotune_yawd_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/30_autotune_yawd_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/35_autotune_yawd_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/30_autotune_yawd_results.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/35_autotune_yawd_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/31_autotune_roll_pitch_retune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/36_autotune_roll_pitch_retune_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/31_autotune_roll_pitch_retune_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/36_autotune_roll_pitch_retune_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/32_autotune_roll_pitch_retune_results.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/37_autotune_roll_pitch_retune_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/32_autotune_roll_pitch_retune_results.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/37_autotune_roll_pitch_retune_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/33_windspeed_estimation.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/38_windspeed_estimation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/33_windspeed_estimation.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/38_windspeed_estimation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/34_barometer_compensation.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/39_barometer_compensation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/34_barometer_compensation.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/39_barometer_compensation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/35_system_id_roll.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/40_system_id_roll.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/35_system_id_roll.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/40_system_id_roll.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/36_system_id_pitch.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/41_system_id_pitch.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/36_system_id_pitch.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/41_system_id_pitch.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/37_system_id_yaw.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/42_system_id_yaw.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/37_system_id_yaw.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/42_system_id_yaw.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/38_system_id_thrust.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/43_system_id_thrust.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/38_system_id_thrust.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/43_system_id_thrust.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/39_analytical_pid_optimization.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/44_analytical_pid_optimization.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/39_analytical_pid_optimization.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/44_analytical_pid_optimization.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/40_everyday_use.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/45_everyday_use.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/40_everyday_use.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/45_everyday_use.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/41_position_controller.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/46_position_controller.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/41_position_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/46_position_controller.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/42_precision_land.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/47_precision_land.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/42_precision_land.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/47_precision_land.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/43_guided_operation.param b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/48_guided_operation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.5.1-params/43_guided_operation.param rename to vehicle_examples/diatone_taycan_mxc/4.5.1-params/48_guided_operation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/vehicle_components.json b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/vehicle_components.json index 63cef72..0abe92e 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.5.1-params/vehicle_components.json +++ b/vehicle_examples/diatone_taycan_mxc/4.5.1-params/vehicle_components.json @@ -68,7 +68,7 @@ }, "Telemetry": { "Product": { - "Manufacturer": "ESP", + "Manufacturer": "Espressif", "Model": "ESP32 WROOM", "URL": "", "Version": "" @@ -87,7 +87,7 @@ "Product": { "Manufacturer": "Matek", "Model": "H743 SLIM", - "URL": "", + "URL": "https://www.mateksys.com/?portfolio=h743-slim", "Version": "3" }, "Firmware": { @@ -117,14 +117,14 @@ }, "ESC": { "Product": { - "Manufacturer": "T-Motor", - "Model": "F45 4in1 ESC", - "URL": "https://store.tmotor.com/goods-899-F45A+6S+4IN1+V2+.html", - "Version": "2" + "Manufacturer": "Mamba System", + "Model": "F45_128k 4in1 ESC", + "URL": "https://www.diatone.us/products/mb-f45_128k-bl32-esc", + "Version": "1" }, "Firmware": { "Type": "BLHeli32", - "Version": "2.0" + "Version": "32.10" }, "FC Connection": { "Type": "SERIAL5", @@ -134,21 +134,21 @@ }, "Motors": { "Product": { - "Manufacturer": "Diatone", - "Model": "Mamba 1404 5000kv", - "URL": "https://www.diatone.us/products/mamba-toka-1404-3000kv-4000kv-racing-motor-green", + "Manufacturer": "T-Motor", + "Model": "T-Motor 15507 3800kv", + "URL": "https://www.fpv24.com/de/t-motor/t-motor-f-serie-f1507-cinematic-3800kv-3s-4s", "Version": "" }, "Specifications": { - "Poles": "12" + "Poles": "14" }, - "Notes": "" + "Notes": "store.tmotor.com offline at time of filling out this form, so no tmotor link available" }, "Propellers": { "Product": { "Manufacturer": "HQProp", - "Model": "3018, 3-Blade", - "URL": "https://shop.rc-hangar15.de/HQProp-3018-Durable-3-3-Blatt-Propeller-TMount", + "Model": "CineWhoop 3\", 8-Blade", + "URL": "https://shop.rc-hangar15.de/HQProp-76mm-CineWhoop-3-8-Blatt-Propeller-grau", "Version": "" }, "Specifications": { diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/03_imu_temperature_calibration_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/03_imu_temperature_calibration_results.param index 8a77a0b..2432681 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/03_imu_temperature_calibration_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/03_imu_temperature_calibration_results.param @@ -2,128 +2,128 @@ # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_X,972.9462 +INS_TCAL1_ACC1_X 115.946591342 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Y,304.8713 +INS_TCAL1_ACC1_Y 498.256973344 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC1_Z,171.2766 +INS_TCAL1_ACC1_Z -381.446151984 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_X,-9.342097 +INS_TCAL1_ACC2_X -22.931568706 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Y,-10.1848 +INS_TCAL1_ACC2_Y 13.578689275 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC2_Z,2.709858 +INS_TCAL1_ACC2_Z 19.361290207 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_X,-0.2591625 +INS_TCAL1_ACC3_X -0.601406268 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Y,-0.1429296 +INS_TCAL1_ACC3_Y 0.213798686 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_ACC3_Z,-0.06181677 +INS_TCAL1_ACC3_Z 0.011621521 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL1_ENABLE,1 +INS_TCAL1_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_X,45.58128 +INS_TCAL1_GYR1_X -32.634220542 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Y,135.7386 +INS_TCAL1_GYR1_Y 79.655005221 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR1_Z,-143.1902 +INS_TCAL1_GYR1_Z -151.124203469 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_X,0.3562318 +INS_TCAL1_GYR2_X -0.611429461 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Y,-2.431096 +INS_TCAL1_GYR2_Y -2.040988991 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR2_Z,3.511315 +INS_TCAL1_GYR2_Z 1.238329627 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_X,-0.018454 +INS_TCAL1_GYR3_X -0.009728067 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Y,-0.01438955 +INS_TCAL1_GYR3_Y 0.019491833 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL1_GYR3_Z,0.04182188 +INS_TCAL1_GYR3_Z 0.001409968 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL1_TMAX,53.27945 +INS_TCAL1_TMAX 56.0 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -131,134 +131,134 @@ INS_TCAL1_TMAX,53.27945 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL1_TMIN,-10.98182 +INS_TCAL1_TMIN -14.6 # Accelerometer 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_X,-536.5219 +INS_TCAL2_ACC1_X -1088.415600440 # Accelerometer 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Y,670.0316 +INS_TCAL2_ACC1_Y 806.840522393 # Accelerometer 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC1_Z,1020.751 +INS_TCAL2_ACC1_Z 327.521202466 # Accelerometer 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_X,2.741263 +INS_TCAL2_ACC2_X -13.630366124 # Accelerometer 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Y,-10.82371 +INS_TCAL2_ACC2_Y 6.347960639 # Accelerometer 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC2_Z,20.6932 +INS_TCAL2_ACC2_Z 9.967253125 # Accelerometer 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_X,0.08527539 +INS_TCAL2_ACC3_X -0.376738491 # Accelerometer 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Y,-0.2103454 +INS_TCAL2_ACC3_Y 0.002642167 # Accelerometer 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_ACC3_Z,0.1007276 +INS_TCAL2_ACC3_Z -0.065860983 # Enable temperature calibration -# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and -# also set the INS_TCALn_TMAX to the target temperature, then reboot +# Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 +# and also set the INS_TCALn_TMAX to the target temperature, then reboot # RebootRequired: True # 0: Disabled # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL2_ENABLE,1 +INS_TCAL2_ENABLE 1 # Gyroscope 1st order temperature coefficient X axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_X,-60.37366 +INS_TCAL2_GYR1_X -44.455145632 # Gyroscope 1st order temperature coefficient Y axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Y,14.72497 +INS_TCAL2_GYR1_Y -8.833005619 # Gyroscope 1st order temperature coefficient Z axis # This is the 1st order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR1_Z,79.62315 +INS_TCAL2_GYR1_Z 88.004538868 # Gyroscope 2nd order temperature coefficient X axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_X,2.357543 +INS_TCAL2_GYR2_X 1.435061412 # Gyroscope 2nd order temperature coefficient Y axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Y,-0.01480431 +INS_TCAL2_GYR2_Y -0.204452936 # Gyroscope 2nd order temperature coefficient Z axis # This is the 2nd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR2_Z,-1.617007 +INS_TCAL2_GYR2_Z -2.086231519 # Gyroscope 3rd order temperature coefficient X axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_X,-0.01039512 +INS_TCAL2_GYR3_X -0.048140576 # Gyroscope 3rd order temperature coefficient Y axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Y,0.002791975 +INS_TCAL2_GYR3_Y -0.002372842 # Gyroscope 3rd order temperature coefficient Z axis # This is the 3rd order temperature coefficient from a temperature calibration # Calibration: 1 # Default: 0 -INS_TCAL2_GYR3_Z,-0.02426609 +INS_TCAL2_GYR3_Z -0.028350688 # Temperature calibration max -# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN -# for calibration +# The maximum temperature that the calibration is valid for. This must be at least 10 degrees above +# TMIN for calibration # Range: -70 80 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL2_TMAX,54.74387 +INS_TCAL2_TMAX 56.5 # Temperature calibration min # The minimum temperature that the calibration is valid for @@ -266,4 +266,4 @@ INS_TCAL2_TMAX,54.74387 # Units: degC (degrees Celsius) # Calibration: 1 # Default: 0 -INS_TCAL2_TMIN,-10.0157 +INS_TCAL2_TMIN -13.3 diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/06_telemetry.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/06_telemetry.param index 818fc14..3db67c3 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/06_telemetry.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/06_telemetry.param @@ -23,4 +23,4 @@ BRD_SER1_RTSCTS,0 # we have no RTS/CTS pins connected # 57: 57600 1500: 1500000 # 111: 111100 2000: 2000000 # Default: 57 -SERIAL1_BAUD,57 # The mavlink over CRSF telemetry +SERIAL1_BAUD,460 # The MAVLink over ESP32 telemetry diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/07_esc.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/07_esc.param index 2ef9c47..47bbad3 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/07_esc.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/07_esc.param @@ -8,7 +8,7 @@ # Range: 0 200 # Increment: 0.5 # Default: 0 -ATC_RAT_PIT_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_PIT_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Roll slew rate limit # Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the @@ -20,7 +20,7 @@ ATC_RAT_PIT_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - ht # Range: 0 200 # Increment: 0.5 # Default: 0 -ATC_RAT_RLL_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_RLL_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Yaw slew rate limit # Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the @@ -32,7 +32,7 @@ ATC_RAT_RLL_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - ht # Range: 0 200 # Increment: 0.5 # Default: 0 -ATC_RAT_YAW_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_YAW_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Output PWM type # This selects the output PWM type, allowing for normal PWM continuous output, OneShot, brushed or DShot @@ -55,13 +55,13 @@ MOT_PWM_TYPE,6 # the most recomended speed for ArduCopter # Controls what types of Buzzer will be enabled # Bitmask: 0:Built-in buzzer, 1:DShot, 2:DroneCAN # Default: 5 -NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this +NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this # LED Driver Types # Controls what types of LEDs will be enabled # Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI, 13:LP5562 External, 14: LP5562 Internal, 15:IS31FL3195 External, 16: IS31FL3195 Internal, 17: DiscreteRGB, 18: NeoPixelRGB # Default: 123079 -NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) +NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) # Accel (vertical) slew rate limit # Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the @@ -73,7 +73,7 @@ NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Mat # Range: 0 200 # Increment: 0.5 # Default: 0 -PSC_ACCZ_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +PSC_ACCZ_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html # Serial 5 Baud Rate # The baud rate used for Serial5. Most stm32-based boards can support rates of up to 1500. If you setup a @@ -88,7 +88,7 @@ PSC_ACCZ_SMAX,25.0 # limit the slew rate to prevent possible ESC desync - https # 57: 57600 1500: 1500000 # 111: 111100 2000: 2000000 # Default: 115 -SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 +SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 # Serial5 protocol selection # Control what protocol Serial5 port should be used for. Note that the Frsky options require external @@ -118,7 +118,7 @@ SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in # 23: RCIN 46: IMUDATA # 24: EFI Serial # Default: -1 -SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 +SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 # BLHeli pass-thru auto-enable for multicopter motors # If set to 1 this auto-enables BLHeli pass-thru support for all multicopter motors @@ -126,7 +126,7 @@ SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 # 0: Disabled # 1: Enabled # Default: 0 -SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru +SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru # BLHeli bitmask of bi-directional dshot channels # Mask of channels which support bi-directional dshot. This is used for ESCs which have firmware that @@ -134,14 +134,14 @@ SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru # Bitmask: 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16, 16:Channel 17, 17: Channel 18, 18: Channel 19, 19: Channel 20, 20: Channel 21, 21: Channel 22, 22: Channel 23, 23: Channel 24, 24: Channel 25, 25: Channel 26, 26: Channel 27, 27: Channel 28, 28: Channel 29, 29: Channel 30, 30: Channel 31, 31: Channel 32 # RebootRequired: True # Default: 0 -SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot +SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot # BLHeli Motor Poles # This allows calculation of true RPM from ESC's eRPM. The default is 14. # Range: 1 127 # RebootRequired: True # Default: 14 -SERVO_BLH_POLES,12 # Number of Diatone Mamba 1404 5000kv motor's magnetic poles +SERVO_BLH_POLES,14 # Number of T-Motor 1507 3800kv motor's magnetic poles # BLHeli telemetry rate # This sets the rate in Hz for requesting telemetry from ESCs. It is the rate per ESC. Setting to zero @@ -149,7 +149,7 @@ SERVO_BLH_POLES,12 # Number of Diatone Mamba 1404 5000kv motor's magnetic poles # Units: Hz (hertz) # Range: 0 500 # Default: 10 -SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry +SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry # Servo DShot ESC type # DShot ESC type for all outputs. The ESC type affects the range of DShot commands available and the bit @@ -321,4 +321,4 @@ SERVO4_TRIM,1000 # Takeoff is not permitted until motors report at least this RPM. Set to zero to disable check # Range: 0 10000 # Default: 0 -TKOFF_RPM_MIN,3000 # Our motors should idle at around 3200 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html +TKOFF_RPM_MIN,1400 # Our motors should idle at around 1400 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/14_motor.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/14_motor.param new file mode 100644 index 0000000..1c5334f --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/14_motor.param @@ -0,0 +1,4 @@ +MOT_SPIN_ARM,0.02 # The Mamba F45_128K ESCs reliably start spinning with this value +MOT_SPIN_MAX,0.95 # Upper dead zone of the Mamba F45_128K ESC +MOT_SPIN_MIN,0.05 # MOT_SPIN_ARM + 0.03 +MOT_THST_EXPO,0.63 # Measured with the motor test stand RCBenchmark Series 1780 from Tyto Robotics diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/14_pid_adjustment.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/15_pid_adjustment.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/14_pid_adjustment.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/15_pid_adjustment.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/15_remote_id.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/15_remote_id.param deleted file mode 100644 index a130f62..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/15_remote_id.param +++ /dev/null @@ -1,29 +0,0 @@ -# DroneCAN driver number -# DroneCAN driver index, 0 to disable DroneCAN -# 0: Disabled -# 1: Driver1 -# 2: Driver2 -DID_CANDRIVER,0 - -# Enable ODID subsystem -# Enable ODID subsystem -# 0: Disabled -# 1: Enabled -DID_ENABLE,1 - -# MAVLink serial port -# Serial port number to send OpenDroneID MAVLink messages to. Can be -1 if using DroneCAN. -# -1: Disabled -# 0: Serial0 -# 1: Serial1 -# 2: Serial2 -# 3: Serial3 -# 4: Serial4 -# 5: Serial5 -# 6: Serial6 -DID_MAVPORT,2 # The serial port attached to the OpenDroneID module - -# OpenDroneID options -# Options for OpenDroneID subsystem -# Bitmask: 0:EnforceArming, 1:AllowNonGPSPosition, 2:LockUASIDOnFirstBasicIDRx -DID_OPTIONS,1 diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/15_remote_id.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/16_remote_id.param similarity index 87% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/15_remote_id.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/16_remote_id.param index a130f62..20170a5 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/15_remote_id.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/16_remote_id.param @@ -9,7 +9,7 @@ DID_CANDRIVER,0 # Enable ODID subsystem # 0: Disabled # 1: Enabled -DID_ENABLE,1 +DID_ENABLE,0 # Our RemoteID module does not communicate with ArduPilot # MAVLink serial port # Serial port number to send OpenDroneID MAVLink messages to. Can be -1 if using DroneCAN. @@ -26,4 +26,4 @@ DID_MAVPORT,2 # The serial port attached to the OpenDroneID module # OpenDroneID options # Options for OpenDroneID subsystem # Bitmask: 0:EnforceArming, 1:AllowNonGPSPosition, 2:LockUASIDOnFirstBasicIDRx -DID_OPTIONS,1 +DID_OPTIONS,0 diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/16_notch_filter_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/17_notch_filter_setup.param similarity index 93% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/16_notch_filter_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/17_notch_filter_setup.param index 1e34454..5cb4631 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/16_notch_filter_setup.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/17_notch_filter_setup.param @@ -23,7 +23,7 @@ INS_GYRO_RATE,2 # The Matek H743 Slim can do 4KHz here # Range: 5 50 # Units: dB (decibel) # Default: 40 -INS_HNTCH_ATT,20.0 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) # Harmonic Notch Filter bandwidth # Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of @@ -31,7 +31,7 @@ INS_HNTCH_ATT,20.0 # this is just a hunch, it must be improved after the first # Range: 5 250 # Units: Hz (hertz) # Default: 40 -INS_HNTCH_BW,20.0 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) # Harmonic Notch Filter enable # Harmonic Notch Filter enable @@ -48,7 +48,7 @@ INS_HNTCH_ENABLE,1 # the first notch filter will be used to filter the noise cr # Range: 10 495 # Units: Hz (hertz) # Default: 80 -INS_HNTCH_FREQ,160.0 # Start with 1.4 • INS_GYRO_FILTER +INS_HNTCH_FREQ,160 # Start with 1.4 • INS_GYRO_FILTER # Harmonic Notch Filter harmonics # Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next @@ -82,7 +82,7 @@ INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise cr # Bitmask: 0:Double notch,1:Multi-Source,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch, 5:Use min freq on RPM failure # RebootRequired: True # Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate # Harmonic Notch Filter reference value # A reference value of zero disables dynamic updates on the Harmonic Notch Filter and a positive value diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/17_notch_filter_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/18_notch_filter_results.param similarity index 90% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/17_notch_filter_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/18_notch_filter_results.param index 11283f8..b2f635b 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/17_notch_filter_results.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/18_notch_filter_results.param @@ -22,7 +22,7 @@ INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propelle # below the frequency in the FREQ parameter. # Range: 0.1 1.0 # Default: 1 -INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first notch filter +INS_HNTCH_FM_RAT,1 # Allowed undercutting of the base frequency of the first notch filter # Harmonic Notch Filter base frequency # Harmonic Notch Filter base center frequency in Hz. This is the center frequency for static notches, the @@ -32,7 +32,7 @@ INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first # Range: 10 495 # Units: Hz (hertz) # Default: 80 -INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to operate at +INS_HNTCH_FREQ,180 # the minimum frequency that the motors are expected to operate at # Harmonic Notch Filter harmonics # Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next @@ -40,7 +40,7 @@ INS_HNTCH_FREQ,240 # the minimum frequency that the motors are expected to opera # Bitmask: 0: 1st harmonic, 1: 2nd harmonic, 2: 3rd harmonic, 3: 4th harmonic, 4: 5th harmonic, 5: 6th harmonic, 6: 7th harmonic, 7: 8th harmonic, 8: 9th harmonic, 9: 10th harmonic, 10: 11th harmonic, 11: 12th harmonic, 12: 13th harmonic, 13: 14th harmonic, 14: 15th harmonic, 15: 16th harmonic # RebootRequired: True # Default: 1 -INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle +INS_HNTCH_HMNCS,3 # the motors produce secondary harmonics on this vehicle # Harmonic Notch Filter options # Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider @@ -53,4 +53,4 @@ INS_HNTCH_HMNCS,1 # the motors produce no secondary harmonics on this vehicle # Bitmask: 0:Double notch,1:Multi-Source,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch, 5:Use min freq on RPM failure # RebootRequired: True # Default: 0 -INS_HNTCH_OPTS,14 # One Notch per motor, update at loop rate, enable on all two IMUs +INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_inflight_magnetometer_fit_setup.pdef.xml deleted file mode 120000 index d1bddeb..0000000 --- a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_inflight_magnetometer_fit_setup.pdef.xml +++ /dev/null @@ -1 +0,0 @@ -../../../19_inflight_magnetometer_fit_setup.pdef.xml \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/18_throttle_controller.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_throttle_controller.param similarity index 82% rename from vehicle_examples/diatone_taycan_mxc/4.4.4-params/18_throttle_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_throttle_controller.param index 430d6ca..c8b676c 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.4.4-params/18_throttle_controller.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_throttle_controller.param @@ -9,14 +9,14 @@ ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value # Motor thrust needed to hover expressed as a number from 0 to 1 # Range: 0.2 0.8 # Default: 0.35 -MOT_THST_HOVER,0.38695 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 +MOT_THST_HOVER,0.2 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 # Acceleration (vertical) controller I gain # Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical # acceleration and actual acceleration # Range: 0.000 3.000 # Default: 1 -PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER +PSC_ACCZ_I,0.4 # 2 • MOT_THST_HOVER # Acceleration (vertical) controller P gain # Acceleration (vertical) controller P gain. Converts the difference between desired vertical acceleration @@ -24,4 +24,4 @@ PSC_ACCZ_I,0.816 # 2 • MOT_THST_HOVER # Range: 0.200 1.500 # Increment: 0.05 # Default: 0.5 -PSC_ACCZ_P,0.408 # MOT_THST_HOVER +PSC_ACCZ_P,0.2 # MOT_THST_HOVER diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/20_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/20_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/20_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/21_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/21_quick_tune_results.param new file mode 100644 index 0000000..71a2549 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/21_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.00659 # Tuned in a Hangar +ATC_RAT_PIT_I,0.412175 # Tuned in a Hangar +ATC_RAT_PIT_P,0.412175 # Tuned in a Hangar +ATC_RAT_RLL_D,0.003622 # Tuned in a Hangar +ATC_RAT_RLL_I,0.251225 # Tuned in a Hangar +ATC_RAT_RLL_P,0.251225 # Tuned in a Hangar +ATC_RAT_YAW_D,0.01 # Tuned in a Hangar +ATC_RAT_YAW_FLTD,57.5 # Tuned in a Hangar +ATC_RAT_YAW_I,0.05 # Tuned in a Hangar +ATC_RAT_YAW_P,0.5 # Tuned in a Hangar diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_inflight_magnetometer_fit_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_inflight_magnetometer_fit_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/19_inflight_magnetometer_fit_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_inflight_magnetometer_fit_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_inflight_magnetometer_fit_setup.pdef.xml b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_inflight_magnetometer_fit_setup.pdef.xml new file mode 100644 index 0000000..0ff0bd7 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_inflight_magnetometer_fit_setup.pdef.xml @@ -0,0 +1,41 @@ + + + + + + + m + 0 100 + 10 + + + 1.2 1.5 + 1.2 + + + 0 255 + 117 + + + 1 20 + 6 + + + 0 1 + 1 + + + m/s + 1/2 of WPNAV_SPEED + + + 16 24 + 18 + + + 0 1 + 1 + + + + diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/20_inflight_magnetometer_fit_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/23_inflight_magnetometer_fit_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/20_inflight_magnetometer_fit_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/23_inflight_magnetometer_fit_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/24_quick_tune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/24_quick_tune_setup.param new file mode 100644 index 0000000..9844569 --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/24_quick_tune_setup.param @@ -0,0 +1,14 @@ +QUIK_AUTO_FILTER,1.0 +QUIK_AUTO_SAVE,0.0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10.0 +QUIK_ENABLE,1 # enables quiktune script +QUIK_GAIN_MARGIN,60.0 +QUIK_MAX_REDUCE,20.0 +QUIK_OPTIONS,0.0 +QUIK_OSC_SMAX,5.0 +QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1.0 +QUIK_Y_PI_RATIO,10.0 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/25_quick_tune_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/25_quick_tune_results.param new file mode 100644 index 0000000..20a5edb --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/25_quick_tune_results.param @@ -0,0 +1,10 @@ +ATC_RAT_PIT_D,0.006590242 +ATC_RAT_PIT_I,0.4121751 +ATC_RAT_PIT_P,0.4121751 +ATC_RAT_RLL_D,0.00362229 +ATC_RAT_RLL_I,0.2512255 +ATC_RAT_RLL_P,0.2512255 +ATC_RAT_YAW_D,0.01 +ATC_RAT_YAW_FLTD,57.5 +ATC_RAT_YAW_I,0.05 +ATC_RAT_YAW_P,0.5 \ No newline at end of file diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/21_evaluate_the_aircraft_tune_ff_disable.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/26_evaluate_the_aircraft_tune_ff_disable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/21_evaluate_the_aircraft_tune_ff_disable.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/26_evaluate_the_aircraft_tune_ff_disable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_evaluate_the_aircraft_tune_ff_enable.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/27_evaluate_the_aircraft_tune_ff_enable.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/22_evaluate_the_aircraft_tune_ff_enable.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/27_evaluate_the_aircraft_tune_ff_enable.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/23_autotune_roll_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/28_autotune_roll_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/23_autotune_roll_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/28_autotune_roll_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/24_autotune_roll_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/29_autotune_roll_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/24_autotune_roll_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/29_autotune_roll_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/25_autotune_pitch_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/30_autotune_pitch_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/25_autotune_pitch_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/30_autotune_pitch_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/26_autotune_pitch_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/31_autotune_pitch_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/26_autotune_pitch_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/31_autotune_pitch_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/27_autotune_yaw_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/32_autotune_yaw_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/27_autotune_yaw_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/32_autotune_yaw_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/28_autotune_yaw_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/33_autotune_yaw_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/28_autotune_yaw_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/33_autotune_yaw_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/29_autotune_yawd_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/34_autotune_yawd_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/29_autotune_yawd_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/34_autotune_yawd_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/30_autotune_yawd_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/35_autotune_yawd_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/30_autotune_yawd_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/35_autotune_yawd_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/31_autotune_roll_pitch_retune_setup.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/36_autotune_roll_pitch_retune_setup.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/31_autotune_roll_pitch_retune_setup.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/36_autotune_roll_pitch_retune_setup.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/32_autotune_roll_pitch_retune_results.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/37_autotune_roll_pitch_retune_results.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/32_autotune_roll_pitch_retune_results.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/37_autotune_roll_pitch_retune_results.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/33_windspeed_estimation.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/38_windspeed_estimation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/33_windspeed_estimation.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/38_windspeed_estimation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/34_barometer_compensation.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/39_barometer_compensation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/34_barometer_compensation.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/39_barometer_compensation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/35_system_id_roll.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/40_system_id_roll.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/35_system_id_roll.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/40_system_id_roll.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/36_system_id_pitch.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/41_system_id_pitch.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/36_system_id_pitch.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/41_system_id_pitch.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/37_system_id_yaw.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/42_system_id_yaw.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/37_system_id_yaw.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/42_system_id_yaw.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/38_system_id_thrust.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/43_system_id_thrust.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/38_system_id_thrust.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/43_system_id_thrust.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/39_analytical_pid_optimization.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/44_analytical_pid_optimization.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/39_analytical_pid_optimization.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/44_analytical_pid_optimization.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/40_everyday_use.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/45_everyday_use.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/40_everyday_use.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/45_everyday_use.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/41_position_controller.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/46_position_controller.param similarity index 86% rename from vehicle_examples/diatone_taycan_mxc/4.3.8-params/41_position_controller.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/46_position_controller.param index 0374965..491e209 100644 --- a/vehicle_examples/diatone_taycan_mxc/4.3.8-params/41_position_controller.param +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/46_position_controller.param @@ -48,6 +48,14 @@ PSC_VELXY_FF,0.85 # PSCN.AE/PSCN.VE if you have flown North-South or PSCE.AE/PS # Default: 250 WPNAV_ACCEL,400 # high speed missions in auto +# Waypoint Cornering Acceleration +# Defines the maximum cornering acceleration in cm/s/s used during missions. If zero uses 2x accel value. +# Units: cm/s/s (centimeters per square second) +# Range: 0 500 +# Increment: 10 +# Default: 0 +WPNAV_ACCEL_C,800 # 2 * WPNAV_ACCEL so that the cornering behaviour is mostly controlled by WPNAV_RADIUS https://github.com/ArduPilot/ardupilot/pull/25928 + # Waypoint Vertical Acceleration # Defines the vertical acceleration in cm/s/s used during missions # Units: cm/s/s (centimeters per square second) diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/42_precision_land.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/47_precision_land.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/42_precision_land.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/47_precision_land.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/43_guided_operation.param b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/48_guided_operation.param similarity index 100% rename from vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/43_guided_operation.param rename to vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/48_guided_operation.param diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/vehicle.jpg b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/vehicle.jpg new file mode 100644 index 0000000..5b4926e Binary files /dev/null and b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/vehicle.jpg differ diff --git a/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/vehicle_components.json b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/vehicle_components.json new file mode 100644 index 0000000..0abe92e --- /dev/null +++ b/vehicle_examples/diatone_taycan_mxc/4.6.0-DEV-params/vehicle_components.json @@ -0,0 +1,177 @@ +{ + "Format version": 1, + "Components": { + "Flight Controller": { + "Product": { + "Manufacturer": "Matek", + "Model": "H743 SLIM", + "URL": "https://www.mateksys.com/?portfolio=h743-slim", + "Version": "V3" + }, + "Firmware": { + "Type": "ArduCopter", + "Version": "4.5.1" + }, + "Notes": "This is a custom build with a Matek H743 SLIM flight controller. The board is a 20x20mm stackable board with a 400Mhz processor, 1Mb flash, 512kb RAM, and a 32-bit STM32H743 processor. The board has a built-in barometer, 6 UARTs, 8 PWM outputs, and 8 ADC inputs." + }, + "Frame": { + "Product": { + "Manufacturer": "Diatone", + "Model": "Taycan MX-C", + "URL": "https://www.diatone.us/products/diatone-mxc-taycan-duct-3-inch-cinewhoop-fpv-drone", + "Version": "2022" + }, + "Notes": "A small 3'' ducted frame" + }, + "RC Controller": { + "Product": { + "Manufacturer": "Radiomaster", + "Model": "TX16S", + "URL": "https://www.radiomasterrc.com/products/tx16s-mark-ii-radio-controller", + "Version": "MKI" + }, + "Firmware": { + "Type": "EdgeTx", + "Version": "2.9.2-providence" + }, + "Notes": "Yaapu telem included, this is just the controller with the sticks. Some controllers include the RC transmitter, this one does not." + }, + "RC Transmitter": { + "Product": { + "Manufacturer": "TBS", + "Model": "TRACER Micro TX", + "URL": "https://www.team-blacksheep.com/products/prod:tbs_tracer_mtx", + "Version": "2" + }, + "Firmware": { + "Type": "Crossfire TX", + "Version": "4.0.0" + }, + "Notes": "This RC transmitter piggie-backs on the back of the Radiomaster TX16S" + }, + "RC Receiver": { + "Product": { + "Manufacturer": "TBS", + "Model": "Crossfire RX se", + "URL": "https://www.team-blacksheep.com/products/prod:crossfire_nano_se", + "Version": "" + }, + "Firmware": { + "Type": "Crossfire", + "Version": "7" + }, + "FC Connection": { + "Type": "SERIAL7", + "Protocol": "CRSF" + }, + "Notes": "This one is on the vehicle" + }, + "Telemetry": { + "Product": { + "Manufacturer": "Espressif", + "Model": "ESP32 WROOM", + "URL": "", + "Version": "" + }, + "Firmware": { + "Type": "dronebridge", + "Version": "1.5" + }, + "FC Connection": { + "Type": "SERIAL1", + "Protocol": "MAVLink2" + }, + "Notes": "A cheap WiFi alternative to the more commonly used 3DR and RFDesigns telemetry modems" + }, + "Battery Monitor": { + "Product": { + "Manufacturer": "Matek", + "Model": "H743 SLIM", + "URL": "https://www.mateksys.com/?portfolio=h743-slim", + "Version": "3" + }, + "Firmware": { + "Type": "ArduCopter", + "Version": "4.5.1" + }, + "FC Connection": { + "Type": "Analog Voltage and Current", + "Protocol": "Analog" + }, + "Notes": "Voltage is done via the flight controller. Current is done via the ESC." + }, + "Battery": { + "Product": { + "Manufacturer": "SLS", + "Model": "X-Cube 1800mAh 4S1P 14,8V 40C/80C", + "URL": "https://www.stefansliposhop.de/akkus/sls-x-cube/sls-x-cube-40c/sls-x-cube-1800mah-4s1p-14-8v-40c-80c::1568.html", + "Version": "" + }, + "Specifications": { + "Volt per cell max": "4.2", + "Volt per cell low": "3.8", + "Volt per cell crit": "3.6", + "Number of cells": "4" + }, + "Notes": "A normal battery" + }, + "ESC": { + "Product": { + "Manufacturer": "Mamba System", + "Model": "F45_128k 4in1 ESC", + "URL": "https://www.diatone.us/products/mb-f45_128k-bl32-esc", + "Version": "1" + }, + "Firmware": { + "Type": "BLHeli32", + "Version": "32.10" + }, + "FC Connection": { + "Type": "SERIAL5", + "Protocol": "Dshot600" + }, + "Notes": "Runs BDshot600" + }, + "Motors": { + "Product": { + "Manufacturer": "T-Motor", + "Model": "T-Motor 15507 3800kv", + "URL": "https://www.fpv24.com/de/t-motor/t-motor-f-serie-f1507-cinematic-3800kv-3s-4s", + "Version": "" + }, + "Specifications": { + "Poles": "14" + }, + "Notes": "store.tmotor.com offline at time of filling out this form, so no tmotor link available" + }, + "Propellers": { + "Product": { + "Manufacturer": "HQProp", + "Model": "CineWhoop 3\", 8-Blade", + "URL": "https://shop.rc-hangar15.de/HQProp-76mm-CineWhoop-3-8-Blatt-Propeller-grau", + "Version": "" + }, + "Specifications": { + "Diameter_inches": "3" + }, + "Notes": "" + }, + "GNSS receiver": { + "Product": { + "Manufacturer": "Holybro", + "Model": "H-RTK F9P Helical", + "URL": "https://holybro.com/products/h-rtk-f9p-gnss-series?variant=41466787168445", + "Version": "1" + }, + "Firmware": { + "Type": "UBlox", + "Version": "1.13.2" + }, + "FC Connection": { + "Type": "SERIAL4", + "Protocol": "uBlox" + }, + "Notes": "A very good receiver with an excellent antenna https://docs.holybro.com/gps-and-rtk-system/gps-led-and-buzzer/status-led-changes" + } + } +} \ No newline at end of file