VTOL with Tricopter setup

Hello everyone,

I decided to build a VTOL with EDFs on flying wing with tricopter style as described below image

I actually almost finished building as below

I setup as default Tricopter + setup and successfully flew in vertical mode.

Now I need to figure out how to make transition from vertical to flying mode.
I tried to search for any selectable option in the default setup but could not find anything yet.
Maybe I have to write my own script file for this? Any idea and suggestions would be much appreciated.


Check out the convergence configuration, it should work with your design with little changes.

OK so I wrote my own script file as follows.

In init.d folder, I added a file named “13014_vtol_tricopter” which includes following lines of code.

# @name VTOL EDF Flyingwing
# @type VTOL Tricopter
# @maintainer Kyuhyong You <kyuhyong@gmail.com>
# @output MAIN1 Motor 1
# @output MAIN2 Motor 2
# @output MAIN3 Motor 3
# @output MAIN4 Yaw servo
# @output AUX1 Elevon right
# @output AUX2 Elevon left
# @output AUX3 Tilt servo front

sh /etc/init.d/rc.vtol_defaults

if [ $AUTOCNF == yes ]
    param set BAT_N_CELL 4
    param set VT_MOT_COUNT 3
    param set VT_FW_MOT_OFFID 3
    param set VT_IDLE_PWM_MC 1080
    param set VT_TYPE 1

    param set VT_B_TRANS_DUR  1.0
    param set VT_FW_DIFTHR_EN 1
    param set VT_FW_DIFTHR_SC 0.17
    param set VT_FW_PERM_STAB 0
    param set VT_F_TRANS_DUR  1.2
    param set VT_F_TR_OL_TM   4.0
    param set VT_TILT_FW  1.0
    param set VT_TILT_MC  0.0
    param set VT_TILT_TRANS   0.45
    param set VT_TRANS_MIN_TM 1.2
    param set VT_TRANS_P2_DUR 1.3

    param set FW_L1_PERIOD 17
    param set FW_MAN_R_MAX 50.0
    param set FW_ACRO_X_MAX   270
    param set FW_ACRO_Y_MAX   270
    param set FW_ACRO_Z_MAX   180
    param set FW_PR_FF    0.5
    param set FW_PR_P 0.08
    param set FW_PSP_OFF  5.0
    param set FW_P_LIM_MAX    30
    param set FW_P_LIM_MIN    -30
    param set FW_P_RMAX_NEG   60
    param set FW_P_RMAX_POS   60
    param set FW_RR_FF    0.33
    param set FW_RR_P 0.11
    param set FW_YR_FF    0.3
    param set FW_YR_P 0.05
    param set MC_PITCHRATE_D  0.003
    param set MC_PITCHRATE_P  0.15
    param set MC_PITCH_P  6.0
    param set MC_ROLLRATE_D   0.003
    param set MC_ROLLRATE_P   0.15
    param set MC_ROLL_P   6.0
    param set MC_YAWRATE_MAX  120
    param set MC_YAWRATE_P    0.27
    param set MC_YAW_FF   0.35
    param set MC_YAW_P    2.5

    param set MC_YAWRATE_P 0.3
    param set MPC_LAND_SPEED 1.2
    param set MPC_TKO_SPEED 2.5
    param set MPC_Z_VEL_MAX_UP 3.0

    param set CBRK_AIRSPD_CHK 162128
    param set FW_ARSP_MODE 2

    param set SENS_BOARD_ROT 8

set MIXER tri_y_yaw+
set PWM_OUT 1234
set PWM_RATE 400

set MIXER_AUX vtol_tricopter

set MAV_TYPE 22

and in mixer folder. I added a file named “vtol_tricopter.aux.mix” which includes following lines of code.

Elevon 1 mixer
M: 2
O:      10000  10000      0 -10000  10000
S: 1 0  -6000  -6000      0 -10000  10000
S: 1 1   6500   6500      0 -10000  10000

Elevon 2 mixer
M: 2
O:       10000   10000    0 -10000  10000
S: 1 0  -6000  -6000      0 -10000  10000
S: 1 1  -6500  -6500      0 -10000  10000

Tilt Servo
M: 1
O:      10000  10000      0 -10000  10000
S: 1 5  10000  10000      0 -10000  10000

How do you think about this code?

Quickly looks good, however I believe the convergence uses the 1-4 for the tilt servo.

Yes I checked Convergence uses servos in main from 5 to 8.
One of the reason I believe is that its tilt servos response much faster than that of my setup. The font tilt servo in my setup only being used while transitioning between vertical and forward flight mode.

I flashed using QGC and successfully load the newly added airframe however servo on AUX channels are not working. No signal on the pin.
I did supply 5V power on the AUX power rail and checked other airframe using similar AUX channel works fine.

nsh shows it is not loading AUX mixers.
INFO [logger] logger started (mode=all)
INFO [logger] log root dir created: /fs/microsd/log
INFO [init] Mixer: /etc/mixers/tri_y_yaw+.main.mix on /dev/pwm_output0

Am I missing something here?

I accidentally placed a space between .aux .mix and that is why it cannot load the file correctly.

Great! keep us updated on your progress!

Now I am trying to figure out how to match the pwm output to servo motor.
When I triggered transition, tilt servo does not seems to move its maximum position vs directly controlled by receiver.
Below image shows the two outputs. CH1 is from AUX, CH2 is from the receiver.

When all the way down, AUX only reach about 1.48ms while the receiver generating 1ms duty pwm signal.
I did increased the Tilt servo mixer in my mixer file to 15000 but nothing change much.
Tilt Servo

M: 1
O: 10000 10000 0 -10000 10000
S: 1 4 15000 15000 0 -10000 10000

Is there anything I can do to solve this issue?

It think the problem is in the scaling and offset value of your mixer. The parameter “VT_TILT_FW”, “VT_TILT_MC” dictate the tilt control output value in each mode. Since in your case it’s 0 and 1 the trick is to setup your mixer using the positive scale and a offset.

Yes you’re right and figured it out myself too.
I changed the mixer as follows and now I can get the right pulse

M: 1
O: 10000 10000 0 -10000 10000
S: 1 4 0 22000 -10000 -10000 10000

Thanks for your comments.
Now I can fly the thing!

I am going to start a project similar to yours. I am very new to Pixhawk and Ardupilot.
I was looking at the Convergence model, but I want to use a tilting rear motor.
How would I go about using your airframe type?
Will you add it to model choices?
Thank you.

Did anyone gave help on tilting rear motor?

@Kyuhyong_You Looks like a cool project.

What is advantage of tilting the tail rotor rather than having two servos at the front as the convergence?

Hi, thanks for your comment. I still haven’t really finish the project yet tho.
Regarding your question, compare to convergence, the overall size is bigger and would require big tilting mechanism. So I decided to tilt rear motor rather than having two tilting for front thrust motors.

Can you clarify how you fixed the AUX channels not working issue? I am using Tricopter frame and I setup my Pixhawk mini using QGC.

Horizontal flight yet?


What plane did you use?

Hi @Kyuhyong_You great work. I am trying to fly a custom TriCopter as well. But I have an issue where the TriCopter rolls to one direction (left usually) upon attempting to take-off. I used the standard config and mixer (TriCopter y-) then added two summing mixers so as to tilt all three rotors rather than the tail only. Any ideas would help. Thank you

I’m working on dual swashplate and would be happy to coordinate changes to HelicopterMixer to accommodate more than a single swashplate. Presently, HelicopterMixer supports only single swashplate.

13014 is using by babyshark