Home Forums Everything about the Mini Tricopter Debugging the tricopter mini racer

Viewing 15 posts - 31 through 45 (of 940 total)
  • Author
    Posts
  • #18261
    Terje
    Moderator

    @David Looks very promising! Is that the code for the integrated Naze32 board? I’m guessing the PIDs and TPA aren’t even tuned yet? At the moment I have mounted a standalone Naze32 on my 330 class, but if the code is for the integrated board, I’ll just switch back again 🙂 I’d really like to help test!

    #18262
    lauka
    Participant

    @LeoTheHuman, I will add a Github fork later, need to check if the unit tests require updating. Your idea sounds interesting, could you explain more how it would work?

    @David, Looking pretty good already :).

    @Terje, Yes the code is for standalone naze32 board.

    I will attach the HEX file here for now. I’m quite busy today but I’ll try to get in Github as soon as I have time.

    Here are instructions I wrote for taking it into use:

    Please do a backup (also CLI) and do a full chip erase when you flash this. This is because of the added configuration parameters, it might corrupt your configuration otherwise. The I term limit increase (-500,500) is also included in this version.

    The CLI parameters to configure this are:
    tpa_yaw_breakpoint – similar to the regular TPA breakpoint. Throttle breakpoint at which the TPA starts to kick in.
    tpa_yaw_rate – Now this is bit different as it supports reducing and increasing the PID values. Normal TPA only allows reduction. Value 100 (%) here means that no TPA is applied. Value 50 means that at maximum throttle the yaw PID gains are reduced to half. Value 200 % means that at maximum throttle the gains are doubled. It uses linear interpolation to calculate the throttle values between the breakpoint and max throttle (2000).

    I added debug parameters 0, 1 and 2 to represent the P, I and D gains of luxfloat, respectively. Go to the sensor tab in Cleanflight configurator, tick the debug parameter checkbox and observe how the gains are changed based on your throttle input. Use your radio to give some throttle and yaw input (props off!:). This is also a good way to familiarize how the PID controller is working.

    Keep in mind that the yaw TPA is now common for all PID terms, we could make the TPA rate or strength configurable also per term if deemed necessary.

    #18263
    lauka
    Participant

    And forgot to attach the file, why can’t I edit my posts sometimes?

    #18268
    LeoTheHuman
    Participant

    Basically, my first attempt would be to divide the throtte of the back motor by the cos of the deflection angle to keep vertical component the same while tilting the motor. It should increase yaw response and eliminate tail drop when yawing. We now have the setup for servo angle limits, so it should be quite simple change. If you don’t do it by the end of the week, I’ll try that on the weekend.

    #18269
    LeoTheHuman
    Participant

    I would suggest prioritizing getting that into a separate branch of your fork in git. I would also suggest to make separate branches for every small feature (like I limit increase, yaw tpa adjustments, etc.). That will help people to pick specific changes they want to test and will help Dominic to pull your changes into cleanflight main repo. If you also create a branch, that is the merge of all these, people will be able to get everything at once easier.

    #18272
    lauka
    Participant

    @LeoTheHuman, That sounds good but how does it differ from pitch PID controller which should keep the tail from dropping?

    I added my changes to a fork in Github. There are two separate branches for the I term range increase and the Yaw TPA. Both of these branches are merged to the master branch of that fork. Please go and review the changes.

    This fork is now based on the current Cleanflight master, so some things might have changed. We also discussed with @David that we should merge some interesting things form Boris B’s betaflight fork, such as gyro synced looptime, luxfloat optimizations and passthrough for ESC one-wire interface.

    #18273
    lauka
    Participant

    And please be careful if you’re compiling from the fork. I didn’t test anything but compilation after rebasing to Cleanflight master.

    #18274
    lauka
    Participant

    @LeoTheHuman, now that I gave it some more I think your idea should work. The yaw adjustment makes the correction to the drop effect on the same loop, removing lag from the process.

    Only small issue that I see with it is that the ESC probably actuates the change faster than the servo, especially when using Oneshot. But it’s still better than relying on the pitch PID.

    #18275
    LeoTheHuman
    Participant

    Yeah, there might be a need to dampen that a bit, but it should give better performance because it won’t depend on the sensors to detect the change first, which can lead to some oscillations.
    If you’re going to implement that, I’ll be able to try it Friday night, otherwise it will have to wait a bit longer. (:

    #18277
    lauka
    Participant

    I was kinda hoping you could help me here a bit and try implementing it. I’m running out of my “copter-time” and need to prioritize some family time:). Let’s put in on a todo-list.

    So the racing copter is having trouble braking, why don’t add brakes to it then? Every racing thing needs good brakes. It would be so cool if the copter had some folding wings under the frame or booms that would apply airbraking when needed. Something like this: a wing. One servo to the middle controlling them, it would make a world of difference if done properly:).

    Yes, I know it’s a bit far fetched brainfart … :).

    #18282

    Flew 3 more batteries today. Slowly getting the tail to behave really well.

    Firmware is the one posted by Lauka 8 posts above.

    # version
    # Cleanflight/NAZE 1.9.0 Aug 15 2015 / 21:48:58 (98f7549)
    # dump master
    
    # mixer
    mixer TRI
    
    # feature
    feature -RX_PPM
    feature -VBAT
    feature -INFLIGHT_ACC_CAL
    feature -RX_SERIAL
    feature -MOTOR_STOP
    feature -SERVO_TILT
    feature -SOFTSERIAL
    feature -GPS
    feature -FAILSAFE
    feature -SONAR
    feature -TELEMETRY
    feature -CURRENT_METER
    feature -3D
    feature -RX_PARALLEL_PWM
    feature -RX_MSP
    feature -RSSI_ADC
    feature -LED_STRIP
    feature -DISPLAY
    feature -ONESHOT125
    feature -BLACKBOX
    feature RX_PPM
    feature ONESHOT125
    feature BLACKBOX
    
    # map
    map AETR1234
    
    # serial
    serial 0 129 115200 57600 0 250000
    serial 1 0 115200 57600 0 115200
    
    # led
    led 0 15,15:ES:IA:0
    led 1 15,8:E:WF:0
    led 2 15,7:E:WF:0
    led 3 15,0:NE:IA:0
    led 4 8,0:N:F:0
    led 5 7,0:N:F:0
    led 6 0,0:NW:IA:0
    led 7 0,7:W:WF:0
    led 8 0,8:W:WF:0
    led 9 0,15:SW:IA:0
    led 10 7,15:S:WF:0
    led 11 8,15:S:WF:0
    led 12 7,7:U:WF:0
    led 13 8,7:U:WF:0
    led 14 7,8:D:WF:0
    led 15 8,8:D:WF:0
    led 16 8,9::R:3
    led 17 9,10::R:3
    led 18 10,11::R:3
    led 19 10,12::R:3
    led 20 9,13::R:3
    led 21 8,14::R:3
    led 22 7,14::R:3
    led 23 6,13::R:3
    led 24 5,12::R:3
    led 25 5,11::R:3
    led 26 6,10::R:3
    led 27 7,9::R:3
    led 28 0,0:::0
    led 29 0,0:::0
    led 30 0,0:::0
    led 31 0,0:::0
    
    # color
    color 0 0,0,0
    color 1 0,255,255
    color 2 0,0,255
    color 3 30,0,255
    color 4 60,0,255
    color 5 90,0,255
    color 6 120,0,255
    color 7 150,0,255
    color 8 180,0,255
    color 9 210,0,255
    color 10 240,0,255
    color 11 270,0,255
    color 12 300,0,255
    color 13 330,0,255
    color 14 0,0,0
    color 15 0,0,0
    
    set looptime = 1500
    set emf_avoidance = 0
    set mid_rc = 1531
    set min_check = 1100
    set max_check = 1900
    set rssi_channel = 0
    set rssi_scale = 30
    set rssi_ppm_invert = 0
    set input_filtering_mode = 0
    set min_throttle = 1010
    set max_throttle = 1990
    set min_command = 1000
    set servo_center_pulse = 1500
    set 3d_deadband_low = 1406
    set 3d_deadband_high = 1514
    set 3d_neutral = 1460
    set 3d_deadband_throttle = 50
    set motor_pwm_rate = 400
    set servo_pwm_rate = 250
    set retarded_arm = 0
    set disarm_kill_switch = 1
    set auto_disarm_delay = 5
    set small_angle = 25
    set flaps_speed = 0
    set fixedwing_althold_dir = 1
    set reboot_character = 82
    set gps_provider = 0
    set gps_sbas_mode = 0
    set gps_auto_config = 1
    set gps_auto_baud = 0
    set serialrx_provider = 0
    set spektrum_sat_bind = 0
    set telemetry_switch = 0
    set telemetry_inversion = 0
    set frsky_default_lattitude =  0.000
    set frsky_default_longitude =  0.000
    set frsky_coordinates_format = 0
    set frsky_unit = 0
    set frsky_vfas_precision = 0
    set hott_alarm_sound_interval = 5
    set battery_capacity = 0
    set vbat_scale = 110
    set vbat_max_cell_voltage = 43
    set vbat_min_cell_voltage = 33
    set vbat_warning_cell_voltage = 35
    set current_meter_scale = 400
    set current_meter_offset = 0
    set multiwii_current_meter_output = 0
    set current_meter_type = 1
    set align_gyro = 0
    set align_acc = 0
    set align_mag = 0
    set align_board_roll = 0
    set align_board_pitch = 180
    set align_board_yaw = 0
    set max_angle_inclination = 500
    set gyro_lpf = 42
    set moron_threshold = 32
    set gyro_cmpf_factor = 600
    set gyro_cmpfm_factor = 250
    set yaw_control_direction = 1
    set pid_at_min_throttle = 1
    set yaw_direction = 1
    set yaw_jump_prevention_limit = 200
    set tri_unarmed_servo = 1
    set servo_lowpass_freq = 100
    set servo_lowpass_enable = 1
    set failsafe_delay = 10
    set failsafe_off_delay = 200
    set failsafe_throttle = 1200
    set rx_min_usec = 985
    set rx_max_usec = 2115
    set acc_hardware = 0
    set mag_hardware = 0
    set blackbox_rate_num = 1
    set blackbox_rate_denom = 3
    set blackbox_device = 0
    
    # dump profile
    
    # profile
    profile 1
    
    # aux
    aux 0 0 0 1625 2100
    aux 1 12 2 1825 2100
    aux 2 0 0 900 900
    aux 3 0 0 900 900
    aux 4 0 0 900 900
    aux 5 0 0 900 900
    aux 6 0 0 900 900
    aux 7 0 0 900 900
    aux 8 0 0 900 900
    aux 9 0 0 900 900
    aux 10 0 0 900 900
    aux 11 0 0 900 900
    aux 12 0 0 900 900
    aux 13 0 0 900 900
    aux 14 0 0 900 900
    aux 15 0 0 900 900
    aux 16 0 0 900 900
    aux 17 0 0 900 900
    aux 18 0 0 900 900
    aux 19 0 0 900 900
    
    # adjrange
    adjrange 0 0 0 900 900 0 0
    adjrange 1 0 0 900 900 0 0
    adjrange 2 0 0 900 900 0 0
    adjrange 3 0 0 900 900 0 0
    adjrange 4 0 0 900 900 0 0
    adjrange 5 0 0 900 900 0 0
    adjrange 6 0 0 900 900 0 0
    adjrange 7 0 0 900 900 0 0
    adjrange 8 0 0 900 900 0 0
    adjrange 9 0 0 900 900 0 0
    adjrange 10 0 0 900 900 0 0
    adjrange 11 0 0 900 900 0 0
    
    # servo
    servo 0 1020 2000 1500 30 -1
    servo 1 1020 2000 1500 30 -1
    servo 2 1020 2000 1500 100 -1
    servo 3 1020 2000 1500 100 -1
    servo 4 1020 2000 1500 100 -1
    servo 5 1020 2000 1520 100 -1
    servo 6 1020 2000 1500 100 -1
    servo 7 1020 2000 1500 100 -1
    servo 8 1020 2000 1500 100 -1
    servo 9 1020 2000 1500 100 -1
    
    set gps_pos_p = 15
    set gps_pos_i = 0
    set gps_pos_d = 0
    set gps_posr_p = 34
    set gps_posr_i = 14
    set gps_posr_d = 53
    set gps_nav_p = 25
    set gps_nav_i = 33
    set gps_nav_d = 83
    set gps_wp_radius = 200
    set nav_controls_heading = 1
    set nav_speed_min = 100
    set nav_speed_max = 300
    set nav_slew_rate = 30
    set alt_hold_deadband = 40
    set alt_hold_fast_change = 1
    set deadband = 4
    set yaw_deadband = 5
    set throttle_correction_value = 0
    set throttle_correction_angle = 800
    set default_rate_profile = 1
    set gimbal_flags = 1
    set acc_lpf_factor = 4
    set accxy_deadband = 40
    set accz_deadband = 40
    set accz_lpf_cutoff =  5.000
    set acc_unarmedcal = 1
    set acc_trim_pitch = 0
    set acc_trim_roll = 0
    set baro_tab_size = 21
    set baro_noise_lpf =  0.600
    set baro_cf_vel =  0.985
    set baro_cf_alt =  0.965
    set mag_declination = 0
    set pid_controller = 2
    set p_pitch = 34
    set i_pitch = 35
    set d_pitch = 42
    set p_roll = 34
    set i_roll = 35
    set d_roll = 42
    set p_yaw = 53
    set i_yaw = 15
    set d_yaw = 10
    set p_pitchf =  1.400
    set i_pitchf =  0.430
    set d_pitchf =  0.021
    set p_rollf =  1.600
    set i_rollf =  0.480
    set d_rollf =  0.024
    set p_yawf =  3.200
    set i_yawf =  1.100
    set d_yawf =  0.055
    set level_horizon =  4.000
    set level_angle =  5.000
    set sensitivity_horizon = 101
    set p_alt = 50
    set i_alt = 0
    set d_alt = 0
    set p_level = 60
    set i_level = 6
    set d_level = 100
    set p_vel = 120
    set i_vel = 45
    set d_vel = 1
    set yaw_p_limit = 500
    
    # dump rates
    #18283
    LeoTheHuman
    Participant

    I think I’ll try to get by without the dedicated breaks and learn breaking with roll and yaw in turns. (:

    #18284
    lauka
    Participant

    🙂 but it would look cool.

    @David, seems that it’s not dumping the rate profile at the end. Probably a bug in the code… Need to check. What kind of values did you use for the yaw TPA?

    #18290

    Hmm that’s wierd, the TPA is set to 1100 break point and set to 60

    #18295
    Chadwick
    Participant

    Great work guys. I wish I had the coding knowledge to be able to help out. I’m eagerly watching the progress.

Viewing 15 posts - 31 through 45 (of 940 total)
  • The forum ‘Everything about the Mini Tricopter’ is closed to new topics and replies.