A LITTLE HISTORY

A lot of the original setup to try and make Betaflight Whoops fly better in Angle Mode is owed to Scott Allyn from the MMW community as he was the first one I am of aware of to try to do this and got a lot of the basics figured out. But Betaflight Angle mode, slow PPM Betaflight FC’s and filtering just wasn’t that great back then, and it’s only really been since 3.2.2 and above that Betaflight has gotten A LOT better for Whoops.


OVERVIEW

This setup is optimized for the latest F4 based Whoop FC’s.  I have run it on an F3 BeeCore v2, but some things don’t work as great as with F4, so I recommend using F3’s with caution.  My personal favorite FC is the NewBeeDrone BeeBrain LITE, but have tested these settings on the AlienWhoop F4 and the BetaFPV F4 and they work well too!  For those that are interested, I will have DIFF’s for the BeeBrain LITE and the BetaFPV 65s (FrSky versions) so you can basically “flash and fly”


Links to awesome F4 Whoop FC’s I’ve used

BeeBrain LITE

AlienWhoop F4
BetaFPV F4

WHAT’S SO SPECIAL ABOUT PROJECT MOCKINGBIRD?

  1. THE BEST Angle Mode you can find for a brushed Betaflight Whoop.

  2. The ability to switch rates from Angle Mode for Racing and Acro Mode for Freestyle all with just a flip of the switch

  3. More power to your motors after extensive Blackbox testing

  4. PID’s tweaked and tuned from actual blackbox data


Here’s the secret sauce to Angle Racing for Whoops:
- DIALED in Linear Rates for Angle Mode

- Props Out just like the Inductrix handles corners much better
- On-FC Throttle Mixing for cornering and high speed turning

- Use of the FPV_Angle_Mix to turn with YAWTHORITY

- Throttle Boost to keep that power going

- Turning off Airmode for Angle

- TPA to control PID noise and increase consistent motor power

Shout-outs for v3:

Ethan Bayer - Once again, Ethan helps out and makes a great suggestion with TPA to reduce PID oscillation and noise, bringing more power to our motors in Betaflight.  He also was the one that discovered that Pitch and Roll rates didn’t control anything in Angle mode.

ctzsnooze - Betaflight Dev who is working on filtering in 3.5 and suggested new settings to RC Interpolation

Joe Lucid - Betaflight Dev who suggested some new “D” levels and helped with filtering and reviewed my blackbox data to get more power to the motors.

K1nslayer - He discovered the old code for “Throttle Mapping” in Betaflight and did some initial tests with brushed motors

The AlienWhoop Team - Their AlienWhoop F4 is the only Whoop FC to have blackbox data and the PIDs they used on it were derived from Plasmatree.  I used the AlienWhoop blackbox data to share with Joe and Ethan to tweak those settings to get more power from the motors and tweaked the base AlienWhoop F4 PIDs for other F4 Whoop FC’s.

The NewBeeDrone Team - During the development of the BeeBrain LITE they listened to all the feedback from the testers (including me) and it really shows in the BeeBrain LITE FC.  Introducing Active Braking adds a level of precision not found in other brushed Whoop FC’s.

SETTING UP YOUR WHOOP WITH MOCKINGBIRD

Jameson Malpezzi of NewBeeDrone did a great quick setup guide for the BeeBrain LITE, check it here:

https://youtu.be/2Azh6Wnd8zc


Step One-Betaflight config

In this step we are setting up FILTERS, PID’s, MODES and most importantly, RATES and ADJUSTMENTS.  

NOTE:  Please make sure you have “Enable Expert Mode” turned on, otherwise you won’t be able to see the Adjustments tab.

CONFIGURATION - SECTION 1

  • MIXER

    • Motor Direction REVERSED: I run “props out”, so I turn on reverse motor direction

      • Make sure your motors are set up right in your Whoop with the black and white wires (CCW Motor) in front left/back right and the red and blue (CW Motor) in front right/back left

      • If you are using a STOCK BetaFPV 65s and using the DIFF below, I did not swap motors around and kept it as it shipped.  If you want to run props out on the 65s then you will have to alter the DIFF or change in Betaflight.

    • ESC Motor Features

      • Brushed Protocol

      • Motor PWM speed… turned on

      • Motor PWM Freq at 25000

      • Turn off Motor Stop (need this for Idle Up in Angle)

      • Minimum_Throttle = 1070

        • You may need to play with this number.  The goal is to have the motors spin a little when you arm in Angle Mode and don’t have Airmode turned on.  This is referred to as “Idle Up”.

    • Set Gyro Update and PID Loop Frequency to 8k

      • NOTE: If you are using an AlienWhoop F4, leave this to default settings

    • Turn on Accelerometer

    • Arming set to 180

      • This makes it so you can arm at any angle

    • Turn on Dynamic_Fitler

    • If you have OSD, turn it on here

    • Turn on Anti-Gravity




  • System configuration (AlienWhoop F4 users leave these at default settings)

    • Set 8k for Gyro Update

    • Set 8k for PID Loop Frequency

    • Turn Accelerometer on so you can do Angle Mode


CONFIGURATION - SECTION 2

  • Arming - Set to 180 so you can arm at any angle in Angle Mode

  • Camera - Set to a little more than half your camera angle on your Whoop (12 degrees for 20 camera tilt and 17 for a 30 tilt).

    • EXPLAINED- For Mockingbird Angle Mode, you are going to use FPV_Angle_Mix to help in cornering.  This number correlates with “FPV_Angle_Mix” in in the Modes tab. It mixes pitch and roll into yaw and makes cornering much better once you get used to it.  This is where your “yawthority” comes into play. You will find that you will use yaw more than you are used to instead of pitch and roll. If you start using it your corners will be sharper and flatter so you can keep your speed up.


PID Settings

  • PIDS: These PIDs have been tested on the AlienWhoop F4, the NewBee Drone BeeBrain LITE, the BetaFPV F4 and should be good for most F4 FC’s.  I don’t recommend using these PIDs on non-F4 boards.

    • You will notice slightly higher PID’s on the DIFF for the stock 65s.  It is a bit heavy out of the box, so raising P just a smidge helped. If you are building your own, I suggest using the ones here, if you are flying stock 65s, then just use the ones in the DIFF

  • PID Profile 3 (called profile 2 in the DIFF) is the tune I did.  Profile 1 (profile 0 in the DIFF) and Profile 2 (profile 1 in the DIFF) are just used for testing and troubleshooting.  

  • If you alter these PIDs, use caution raising Derivative as this adds PID oscillation and reduces motor power.  It’s a delicate balance between prop-wash and power. Use FeedForward to get that snappy feeling back using lower D and I.


FILTERS: These are the same as default on the AlienWhoop F4 and work great on the F4 FC’s I’ve tested:



GENERAL PID SETTINGS


  • Angle Strength: 100

  • Horizon Strength: 45

  • Transition: 80

  • Angle Limit: 60

Angle Strength and Limit EXPLAINED - These two things control your pitch and roll “feeling” (as well as limiting how far you can tilt).  Instead of RC Rate controlling it, Ethan Bayer found out that it’s actually controlled by these two settings.  There is a relationship between the two. The Limit controls how far you can tilt.  0 stick equals 0 degrees, and 100% stick equals 60 degrees. The Strength controls how much curve of resistance the quad tries to get back to 0 angle.  If you like a “looser” feel with more stick travel, lower Angle Strength and/or increase Angle Limit. I don’t like a lot of stick movement so, these numbers feel right to me.  Some might find an Angle Limit of 65 and Strength of 100-105 is more like the Inductrix with more stick travel but the ability to tilt much further.

Horizon Strength and Transition EXPLAINED - Horizon Strength is different than Angle strength as it uses your Horizon rates for Pitch, Roll, and Yaw, and works in conjunction with Transition on how much influence and how fast it goes from Angle-like flight to Acro Flight.

A LITTLE MORE ABOUT ANGLE AND HORIZON DIRECTLY FROM BETAFLIGHT
The strength of the auto-leveling correction applied during Angle mode is controlled by the LEVEL "P" PID term which is labeled "Angle", "Strength" in the GUI (prior to version v1.13.0 the parameter level_angle was used). This can be used to tune the auto-leveling strength in Angle mode compared to Horizon mode. The default is 50.

The strength of the auto-leveling correction applied during Horizon mode is set by the LEVEL "I" PID term which is labeled "Horizon", "Strength" in the GUI (prior to version v1.13.0 the parameter level_horizon was used). The default is also 50.

The transition between self-leveling and acro behavior in Horizon mode is controlled by the LEVEL "D" term which is labeled "Horizon", "Transition" in the GUI (prior to version of v1.13.0 the parameter sensitivity_horizon parameter was used) . This sets the percentage of your stick travel that should have self-leveling applied to it, so smaller values cause more of the stick area to fly using only the gyros.

For example, at a setting of "100" for sensitivity horizon, 100% self-leveling strength will be applied at center stick, 50% self-leveling will be applied at 50% stick, and no self-leveling will be applied at 100% stick. If sensitivity is decreased to 75, 100% self-leveling will be applied at center stick, 50% will be applied at 63% stick, and no self-leveling will be applied at 75% stick and onwards.

  • VBAT Compensation: ON

    • This changes PID values based on battery power.

  • Anti Gravity Gain: 5

  • Anti Gravity Threshold: 350


RATES

We are going to set up 3 different RATE profiles.  One for Acro, one for Angle and one for Horizon With this setup your rates will change when you switch from Acro to Angle.  On my TX Up is Acro, Middle is Horizon, and Down is Angle. I recommend this setup so that it automatically turns on and off Airmode and FPV_Angle_Mix for the appropriate flight mode.

  • Profile 1: Acro is setup more like my bigger quads for Freestyle, and has Rate/Super mixed to my taste, keep yours like you like your Freestyle Whoop.

  • Profile 2: Horizon is a lot like Acro rates, and will adjust Horizon Strength and Transition

    • If you plan on racing in Horizon, most pilots have found they need to increase their typical Acro RC Rate 100 d/s.  My settings displayed below are for racing in Horizon mode, if you want to do more “Freestyle” in Horizon, I would match my Acro Rates.

  • Profile 3: Angle will only have yaw rates as Pitch and Roll are derived from Angle Strength and Angle Limit

    • I prefer linear rates on yaw in Angle, but a good rule of thumb is to use your racing Acro yaw rate and increase it 100 deg/sec by increasing RC Rate and leaving Super as your Acro racing rates.

    • These are the same rates as earlier Mockingbird settings

    • A lot of people like to add 20-30% Expo, but I don’t run any expo.  It’s up to you if you like it.


RATEPROFILE 1 (Acro)

ROLL/PITCH RC RATE: 1

YAW RC RATE: 1

ROLL SUPER RATE: .8

PITCH SUPER RATE: .8


RATEPROFILE 2 (Horizon)

ROLL/PITCH RC RATE: .7

YAW RC RATE: .7

ROLL SUPER RATE: .8

PITCH SUPER RATE: .8

YAW SUPER RATE: .8


RATEPROFILE 3 (Angle)

ROLL AND PITCH - These are all set to zero as Roll and Pitch are controlled by Angle Strength and Angle Limit.

RC Rate: 0

Super Rate: 0

YAW

RC Rate: 2.1

Super Rate: 0

NOTE:  

  • Max Vel may not be exact depending on your “Deadband” settings...just get it close to 700 d/s

  • As mentioned above, these are my settings so if you want to race like I do, then use these, but I’ve had other well known racers say they used their yaw rates from Aco and just increased RC Rate until it’s about 100 d/s above what they usually run for Acro

Angle Strength: 100

Angle Limit: 60

EXPLAINED - These two things control your pitch and roll “feeling” (as well as limiting how far you can tilt).  Instead of RC Rate controlling it, Ethan Bayer found out that it’s actually controlled by these two settings.  There is a relationship between the two. The Limit controls how far you can tilt.  0 stick equals 0 degrees, and 100% stick equals 60 degrees. The Strength controls how much curve of resistance the quad tries to get back to 0 angle.  If you like a “looser” feel with more stick travel, lower Angle Strength and/or increase Angle Limit. I don’t like a lot of stick movement so, these numbers feel right to me.  Some might find an Angle Limit of 65 and Strength of 100-105 is more like the Inductrix with more stick travel but the ability to tilt much further.


MODES

AUX 1: ARM

AUX 2: ACRO, ANGLE, HORIZON, FPV ANGLE MIX (on for Angle Mode), and AIRMODE (on for Acro and Horizon)

EXPLAINED- I recommend not using Airmode for Angle Mode.  Turning it off seems to help with crashing and glancing blows and also seems to help with more power as well as cruising low across floors.  That’s why it gets turned off when you select Angle Mode and why you have “Idle Up” (increased min_throttle on the config page).


ADJUSTMENTS

This is where we will set up a rate profile change upon the user switching from Acro to Angle to Horizon.  

EXPLAINED:

So you can run Acro and have higher rates and super, but when you want to be an Angle Racer, when you flip your Aux 2 to Angle, the Adjustments tab will change to Rate Profile 3 and you’ll have the more linear Angle Racing rates.  NOTE, I have my AUX 2 go UP=Acro, MID=Horizon, DWN=Angle so I can have Airmode on for Acro and Horizon, but not Angle. So my Adjustments and Profiles match. Change according to how you have your Mode switch set up.

  • Set AUX 2 to match your range for Angle in your Modes tab

  • Select “Rate Profile Selection” as your option in “then apply”

  • Using “Slot 2” to match the Rate profile of Angle

  • Via Channel AUX 2 - this matches your mode switch

Step Three: CLI Settings

There are some settings in Betaflight that can only be done in CLI.  Any text with //around it// is just explanation. Just copy the commands shown below.  There is also a DIFF ALL below if you have a stock Taranis QX7 that should just be plug and play other than binding.

//This is to reduce the "bounce" that you can get with airmode when you first arm.  I only use airmode for Acro//

set airmode_start_throttle_percent = 15

These two setting replace "Throttle Mixing" in older versions of Mockingbird.  This is much more accurate and in brushed I think it adds more power. The value is the "power" you want to your pitch and roll (how much throttle is added).  Don't change this too much, but I think 3 is about right. You'll find yourself not having to throttle through things as much, you'll just pitch, roll and yaw and the power will be there.//

set thr_corr_value = 3

set thr_corr_angle = 600

//Since we run higher PID numbers, this gives us more headroom//

set pidsum_limit = 1000

set pidsum_limit_yaw = 1000

//This improves responsiveness to fast throttle inputs.//

set throttle_boost = 8

//This is another brushed trick to get more power from the motors.  It seems to help in brushless too//

set throttle_limit_type = CLIP

//This makes it so you can do powerloops and other inverted like maneuvers easier//

set horizon_tilt_effect = 80

set horizon_tilt_expert_mode = ON


DIFFS

This should be very easy and get you up in the air as fast as possible.

Step 1: Put your motors in “Props Out”

  • Front Left and Back Right are BW wired CCW Motors

  • Front Right and Back Left are Red/Blue wired CW Motors

Step 2: Plug in FC to Betaflight

Step 3: Copy DIFF from here
Step 4: Paste DIFF in CLI

Step 5: Check RXRange, Bind, and Modes on your radio and Betaflight


NEWBEEDRONE BEEBRAIN LITE

BeeBrain Lite - Project Mockingbird Edition

DIFF for the BEEBRAIN LITE - FRSKY ONLY

# version
# Betaflight / BEEBRAIN_LITE (BBL) 3.5.4 Nov 20 2018 / 14:10:22 (c66355a61) MSP API: 1.40

board_name BEEBRAIN_LITE
manufacturer_id
mcu_id 0032001b3337510137313638
signature

# reset configuration to default settings
defaults nosave

# name
name MKNGBRD

# resources

# mixer

# servo

# servo mix


# feature

# map
map AETR1234

# serial

# led
led 0 5,7:W:C:1
led 1 6,7:E:CTOI:2
led 2 7,7::CTOI:10

# color

# mode_color

# aux
aux 1 1 1 1825 2100 0 0
aux 3 28 1 900 1550 0 0
aux 4 30 1 1450 2100 0 0

# adjrange
adjrange 0 1 1 1425 1575 12 1 0 0

# rxrange
rxrange 0 988 2010
rxrange 1 988 2012
rxrange 2 988 2012
rxrange 3 988 2012

# vtx

# rxfail

# master
set gyro_lowpass2_hz = 751
set baro_hardware = NONE
set min_check = 1007
set max_check = 2000
set fpv_mix_degrees = 12
set airmode_start_throttle_percent = 15
set min_throttle = 1070
set thr_corr_value = 3
set thr_corr_angle = 600
set vbat_max_cell_voltage = 45
set vbat_warning_cell_voltage = 29
set yaw_motors_reversed = ON
set osd_warn_core_temp = OFF
set osd_cap_alarm = 250
set osd_vbat_pos = 2370
set osd_rssi_pos = 2082
set osd_tim_2_pos = 2102
set osd_flymode_pos = 2392
set osd_vtx_channel_pos = 2092
set osd_craft_name_pos = 2379
set osd_warnings_pos = 298
set vtx_band = 1
set vtx_channel = 7
set vtx_power = 2
set vcd_video_system = NTSC

# profile
profile 0

set vbat_pid_gain = ON
set iterm_relax = RP
set pidsum_limit = 1000
set pidsum_limit_yaw = 1000
set p_pitch = 50
set i_pitch = 40
set d_pitch = 35
set f_pitch = 140
set p_roll = 50
set i_roll = 40
set d_roll = 35
set f_roll = 140
set p_yaw = 50
set i_yaw = 40
set d_yaw = 35
set p_level = 100
set level_limit = 60

# profile
profile 1

set vbat_pid_gain = ON
set iterm_relax = RP
set i_pitch = 75
set d_pitch = 95
set f_pitch = 140
set i_roll = 75
set d_roll = 85
set f_roll = 140
set d_yaw = 10
set p_level = 100
set level_limit = 60

# profile
profile 2

set dterm_lowpass_type = BIQUAD
set vbat_pid_gain = ON
set iterm_relax = RP
set p_pitch = 95
set i_pitch = 80
set d_pitch = 45
set f_pitch = 200
set p_roll = 95
set i_roll = 80
set d_roll = 40
set f_roll = 200
set d_yaw = 10
set p_level = 100
set i_level = 45
set d_level = 80
set level_limit = 60
set horizon_tilt_effect = 80
set horizon_tilt_expert_mode = ON

# restore original profile selection
profile 2

# rateprofile
rateprofile 0

set roll_expo = 0
set pitch_expo = 0
set yaw_expo = 0
set tpa_rate = 65
set tpa_breakpoint = 1750

# rateprofile
rateprofile 1

set roll_expo = 0
set pitch_expo = 0
set yaw_expo = 0
set tpa_rate = 65
set tpa_breakpoint = 1750
set throttle_limit_type = CLIP

# rateprofile
rateprofile 2

set roll_rc_rate = 0
set pitch_rc_rate = 0
set yaw_rc_rate = 210
set roll_expo = 0
set pitch_expo = 0
set yaw_expo = 0
set roll_srate = 0
set pitch_srate = 0
set yaw_srate = 0
set tpa_rate = 65
set tpa_breakpoint = 1750

# rateprofile
rateprofile 3


# rateprofile
rateprofile 4


# rateprofile
rateprofile 5


# restore original rateprofile selection
rateprofile 1

# save configuration
save
#



BETAFPV 65S

BetaFPV 65s - FrSky 716 BNF

DIFF for the BetaFPV 65s FRSKY ONLY

NOTE:  This DIFF for the 65s is set up for a TOTALLY STOCK 65s (as of Feb 2019) out of the box, so there is no “props out” configuration.  I did this so that most users could just “flash and fly”. I still do recommend running props out, even on the 65s, but I will leave that up to the user to switch.  Just grab that 65s and fly!

If your 65s came with Betaflight 3.4, please flash it to the latest 3.5.x version.  It’s been reported some of them are still shipping with 3.4.

ALSO...this is with D8 “Frsky D” binding instead of D16.  Make sure your radio is set up to bind in D8

Newer versions of the 65s might be Omnibus targets, please make sure your 65s is using the MATEKF411RX target to use this DIFF

# version

# Betaflight / MATEKF411RX (M41R) 3.5.3 Nov 15 2018 / 00:03:29 (61d5abf00) MSP API: 1.40

board_name MATEKF411RX

manufacturer_id

mcu_id 0026002c3437510b33353431

signature

# reset configuration to default settings

defaults nosave

# name

name MKNGBRD 65s

# beacon

# map

map TAER1234

# aux

aux 0 0 0 1800 2100 0 0

aux 1 1 1 1800 2100 0 0

aux 2 2 1 1200 1600 0 0

aux 3 28 1 900 1550 0 0

aux 4 30 1 1700 2100 0 0

# adjrange

adjrange 0 1 1 1425 1550 12 1 0 0

# rxrange

rxrange 0 988 2010

rxrange 1 988 2012

rxrange 2 988 2012

rxrange 3 988 2012

# vtx

# rxfail

# master

set gyro_lowpass2_hz = 751

set min_check = 1007

set max_check = 2000

set fpv_mix_degrees = 20

set airmode_start_throttle_percent = 15

set rx_spi_protocol = FRSKY_D

set min_throttle = 1007

set motor_pwm_rate = 25000

set thr_corr_value = 3

set thr_corr_angle = 600

set bat_capacity = 260

set vbat_max_cell_voltage = 45

set vbat_min_cell_voltage = 29

set vbat_warning_cell_voltage = 29

set vbat_scale = 114

set ibata_scale = 1728

set small_angle = 180

set pid_process_denom = 1

set runaway_takeoff_prevention = OFF

set osd_warn_esc_fail = OFF

set osd_warn_core_temp = OFF

set osd_vbat_pos = 2402

set osd_rssi_pos = 2082

set osd_tim_2_pos = 2102

set osd_flymode_pos = 2423

set osd_craft_name_pos = 2409

set osd_warnings_pos = 2345

set cpu_overclock = 108MHZ

set vtx_band = 1

set vtx_channel = 7

set vtx_freq = 5745

set vcd_video_system = NTSC

set frsky_spi_tx_id = 189,24

set frsky_spi_offset = -3

set frsky_spi_bind_hop_data = 5,163,88,13,173,98,23,183,108,33,193,118,43,203,128,53,213,138,63,223,148,73,233,158,83,8,168,93,18,178,103,28,188,113,38,198,123,48,208,135,58,218,143,68,228,153,78,0,0,0

# profile

profile 0

set dterm_lowpass_type = BIQUAD

set dterm_notch_cutoff = 0

set vbat_pid_gain = ON

set iterm_relax = RP

set pidsum_limit = 1000

set pidsum_limit_yaw = 1000

set p_pitch = 115

set i_pitch = 80

set d_pitch = 45

set f_pitch = 200

set p_roll = 110

set i_roll = 80

set d_roll = 40

set f_roll = 200

set p_yaw = 200

set i_yaw = 75

set d_yaw = 10

set p_level = 100

set i_level = 40

set d_level = 80

set level_limit = 60

set horizon_tilt_effect = 80

set horizon_tilt_expert_mode = ON

# profile

profile 1

profile 2

# restore original profile selection

profile 0

# rateprofile

rateprofile 0

set roll_srate = 80

set pitch_srate = 80

set yaw_srate = 80

set tpa_rate = 65

set tpa_breakpoint = 1750

# rateprofile

rateprofile 1

set roll_rc_rate = 70

set pitch_rc_rate = 70

set yaw_rc_rate = 70

set roll_srate = 80

set pitch_srate = 80

set yaw_srate = 80

set tpa_rate = 65

set tpa_breakpoint = 1750

set throttle_limit_type = CLIP

# rateprofile

rateprofile 2

set roll_rc_rate = 0

set pitch_rc_rate = 0

set yaw_rc_rate = 210

set roll_srate = 0

set pitch_srate = 0

set yaw_srate = 0

set tpa_rate = 65

set tpa_breakpoint = 1750

# rateprofile

rateprofile 3

# rateprofile

rateprofile 4

# rateprofile

rateprofile 5

# restore original rateprofile selection

rateprofile 0

# save configuration

save

#

7 Comments