Last active
January 2, 2021 21:55
-
-
Save nerdCopter/66fc3909f662c3573762fbb5f84359b8 to your computer and use it in GitHub Desktop.
starting point for tuning a generic HelioRC Spring 5"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# nerdCopter's unprofessional biased starting point | |
# for tuning a generic Helio 5", maybe 6". | |
# Recommend BBL analysis for LPF modifications. | |
# Recommend raise P's as needed and balance D's afterward. | |
# Raise I's as needed. | |
# | |
# This is not exactly a diff, but definitely not a dump. | |
# It's closer to a "preset" | |
# Start with your settings, then add these configs. | |
# | |
# This enables Matrix; However, with Helio, | |
# it's most likely unnecessary. Feel free to test. | |
# I'm running IMF250 without Matrix and only one dTerm LPF. | |
# | |
# Dec 04 2020 | |
# version | |
# EmuFlight / HELIOSPRING (HESP) 0.3.2 Oct 7 2020 / 19:15:35 (e0270d5fd) MSP API: 1.49 | |
# IMU-F Version: 250 | |
# name | |
name Helio | |
# feature | |
feature AIRMODE | |
feature DYNAMIC_FILTER | |
# beacon | |
beacon RX_LOST | |
beacon RX_SET | |
# master | |
set gyro_sync_denom = 3 | |
set imuf_roll_q = 6000 | |
set imuf_pitch_q = 6000 | |
set imuf_yaw_q = 5000 | |
set imuf_w = 48 | |
set imuf_pitch_lpf_cutoff_hz = 90 | |
set imuf_roll_lpf_cutoff_hz = 90 | |
set imuf_yaw_lpf_cutoff_hz = 80 | |
set dynamic_gyro_notch_q = 400 | |
set dynamic_gyro_notch_min_hz = 100 | |
set dshot_idle_value = 500 | |
# !!!! MINIMIZE SHARPNESS !!!! | |
set imuf_sharpness = 250 | |
# for IMUF231 or less, values 1 through 250 should provide least variance. =1 may or may not prodcue expected results, so i chose 250 based on this sourcecode: | |
#./src/filter/filter.c:83: sharpness = (float)filterConfig.sharpness / 250.0f; | |
#./src/filter/filter.c:110: float errorMultiplierX = ABS(setPoint.x - filteredData->rateData.x) * sharpness; | |
#./src/filter/filter.c:111: float errorMultiplierY = ABS(setPoint.y - filteredData->rateData.y) * sharpness; | |
#./src/filter/filter.c:112: float errorMultiplierZ = ABS(setPoint.z - filteredData->rateData.z) * sharpness; | |
set imuf_sharpness = 0 # for IMUF250 | |
# now for versions that accept it, just turn sharpness off. | |
# profile | |
profile 0 | |
set dterm_lowpass_type = BIQUAD # You may wish to test PT1, especially with IMUF250. here i'm choosing BiQuad for general safety in regards to motor temperature and kD tolerance | |
set dterm_lowpass_hz_roll = 110 | |
set dterm_lowpass_hz_pitch = 110 | |
set dterm_lowpass_hz_yaw = 100 | |
set dterm_lowpass2_hz_roll = 0 | |
set dterm_lowpass2_hz_pitch = 0 | |
set dterm_lowpass2_hz_yaw = 0 | |
set smart_dterm_smoothing_roll = 0 | |
set smart_dterm_smoothing_pitch = 0 | |
set smart_dterm_smoothing_yaw = 0 | |
set witchcraft_roll = 0 | |
set witchcraft_pitch = 0 | |
set witchcraft_yaw = 0 | |
set spa_roll_p = 100 | |
set spa_roll_i = 70 | |
set spa_roll_d = 100 | |
set spa_pitch_p = 100 | |
set spa_pitch_i = 70 | |
set spa_pitch_d = 100 | |
set spa_yaw_p = 100 | |
set spa_yaw_i = 50 | |
set spa_yaw_d = 100 | |
set iterm_relax_cutoff = 10 | |
set iterm_relax_cutoff_yaw = 20 | |
set feathered_pids = 50 | |
set dterm_boost = 0 | |
set dterm_boost_limit = 0 | |
set i_decay = 5 | |
set emu_boost = 100 | |
set emu_boost_yaw = 100 | |
set emu_boost_limit = 40 | |
set emu_boost_limit_yaw = 50 | |
set p_pitch = 52 | |
set i_pitch = 50 | |
set d_pitch = 22 | |
set p_roll = 47 | |
set i_roll = 50 | |
set d_roll = 21 | |
set p_yaw = 70 | |
set i_yaw = 90 | |
set d_yaw = 7 | |
# rateprofile | |
rateprofile 0 | |
set tpa_rate_p = 75 | |
set tpa_rate_i = 110 | |
set tpa_rate_d = 65 | |
set tpa_breakpoint = 1500 | |
# |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment