Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nerdCopter/66fc3909f662c3573762fbb5f84359b8 to your computer and use it in GitHub Desktop.
Save nerdCopter/66fc3909f662c3573762fbb5f84359b8 to your computer and use it in GitHub Desktop.
starting point for tuning a generic HelioRC Spring 5"
# 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