Y4 Tricopter setup??

I couldn't see Y4 setup in arducopter wiki. Is it possible to set up a Y4 with APM 2.0? ( Y4 is a tricopter with 4 motors and w/o servo)

Thanks and regards.

Zafer Turkeli

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • I am having issues compiling your Y4 patch, and I was hoping you could offer some advice for how to fix the issue. When compiling this is what I get along with multiple lines saying certain variables are declared but never used. Thanks in advance.

    In file included from C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_Motors.h:17:0,
    from C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AC_AttitudeControl/AC_AttitudeControl.h:14,
    from ArduCopter.ino:123:
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsY4.h: In constructor 'AP_MotorsY4::AP_MotorsY4(RC_Channel*, RC_Channel*, RC_Channel*, RC_Channel*, uint16_t)':
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsY4.h:19:217: error: no matching function for call to 'AP_MotorsMatrix::AP_MotorsMatrix(RC_Channel*&, RC_Channel*&, RC_Channel*&, RC_Channel*&, uint16_t&)'
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsY4.h:19:217: note: candidates are:
    In file included from C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_Motors.h:7:0,
    from C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AC_AttitudeControl/AC_AttitudeControl.h:14,
    from ArduCopter.ino:123:
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsMatrix.h:24:5: note: AP_MotorsMatrix::AP_MotorsMatrix(RC_Channel&, RC_Channel&, RC_Channel&, RC_Channel&, uint16_t)
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsMatrix.h:24:5: note: no known conversion for argument 1 from 'RC_Channel*' to 'RC_Channel&'
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsMatrix.h:20:7: note: AP_MotorsMatrix::AP_MotorsMatrix(const AP_MotorsMatrix&)
    C:\Program Files\Git\ardupilot-master\ardupilot-master\libraries\AP_Motors/AP_MotorsMatrix.h:20:7: note: candidate expects 1 argument, 5 provided
    motors.ino: In function 'bool pre_arm_gps_checks(bool)':
    motors.ino:551:28: warning: comparison between signed and unsigned integer expressions

    • What version of the Ardupilot code are you using? I haven't looked at the newer ones (still running with an old one since it works for what I do), it might be that patch doesn't work anymore. Does it compile cleanly without the patch?

  • any Y4 support coming? 

    this looks pretty cool


  • Hey John,

    Do you still fly your Y4? I'd like to test this out on a proper Y4 frame and would therefore like to try out your code

    Would your patch still be working in the 3.1?

    I have yet to set up the IDE to compile this so this is why I ask - I'm in the process of setting it up try myself but if you could update us with any videos or even more of your experience on the matter I'd like to work this into a usable frame for APM.

    Additionally I have a working Multiwii Board that supports Y4, so I could also test out flight characteristics between the two for comparison

    • I flew it earlier this summer, but crashed it and broke the frame and have not had time to rebuild it. Haven't looked at the newer source code (like 3.1), but the patch is pretty simple and should be easy enough to rewrite for it.

      • Hey John, so I've figured out what I needed to modify to get it flying - after testing a bunch of different parameters.

        It has a big tendency to lean forward as you said it would.

        This is my motor mix for it (having removed front YAW completely)

        add_motor_raw(AP_MOTORS_MOT_1, -1.0, 0.666, 0, 1);
        add_motor_raw(AP_MOTORS_MOT_2, 1.0, 0.666, 0, 3);
        add_motor_raw(AP_MOTORS_MOT_3, 0.0, -1.333, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 3); //mot 4 on y6a frame - must be bottom motor of Y4
        add_motor_raw(AP_MOTORS_MOT_4, 0.0, -1.333, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 4); //mot 6 on y6a frame - must be bottom motor of y4

        Video of it flying - to keep it level I have to push back on the pitch in order to avoid too much forward drift.

        However I'd like to see if its possible to fix the forward pitching without playing with the CG, the way that multiwii does it.

        Anyone have any ideas where to start?

        • It was so long ago I fiddled with the code that I am not entirely sure of what I was actually flew with (I set it up and left it alone and just flew it).

          I did get rid of the forward-pitch tendency by just trimming it, I remember lowering the back a bit when zeroing the accellerometer (but that might have been when just testing things out).

          I also did try with having the front motors configured for "zero yaw" (as you have above), same as the tail motors, or a small fraction of the tail rotors. It didn't make that much difference (some combinations made it roll a bit when yawing), but I think this is what I ended up flying with:

          add_motor_raw(AP_MOTORS_MOT_1, 1.0, front_pitch, 0, 4); //Front left, CCW
          add_motor_raw(AP_MOTORS_MOT_2, -1.0, front_pitch, 0, 1); //Front right, CW
          add_motor_raw(AP_MOTORS_MOT_3, -Y4V_TAIL_WIDTH, rear_pitch, AP_MOTORS_MATRIX_MOTOR_CW, 2); //Tail right, CW
          add_motor_raw(AP_MOTORS_MOT_4, Y4V_TAIL_WIDTH, rear_pitch, AP_MOTORS_MATRIX_MOTOR_CCW, 3); //Tail left, CCW

          I was trying out a lot of math, Y4V_TAIL_WIDTH is basically the component of the tail motor perpendicular to the roll axis (tail width * cos(tilt angle)). Fiddled with the same thing for yaw and pitch, but it didn't make much difference, it was all tunable&trimmable without it. I ended up running 12x4.5 props in front and 10x4.5 back, which made the whole thing fly level easier, and also made the tail rotors have even less effect on roll.

          This setup is for an "A tail" (upside-down V), so the left rear rotor is "pulling" the tail to the left, rotating the multicopter in the clockwise direction. I also chose the direction of the motor/prop so the "yaw torque" would work in the same direciton, so the left-rear prop is CCW.

          I will probably be rebuilding a new and improved V-tail Y4 soon and spend some more time fiddling with the firmware, will update with how it goes.
      • Thanks for answering! I've already patched in all the changes you've made into 3.2rc4 however at the moment I'm just trying to make sure there isn't anything else I'm missing.

        Did you ever ascertain what caused your crash? 

        • I had an ESC glitch mid-flight (bad connection somewhere), had nothing to do with the APM. Lost power to the front-right motor, made a roll and inverted dive into terrain.

This reply was deleted.


DIY Robocars via Twitter
RT @Smartphone89: DonkeyCar Racing League Korea #donkeycar @diyrobocars https://t.co/mDlHDR1d98
7 hours ago
Jørn Ramnæs liked VIDEO LINK's profile
22 hours ago
Mark Harrison left a comment on Moderators
"Wow, Ning2 looks really great on mobile. I had sort of drifted away as my browse-time went more on my phone, so this is great."
Hank Deucker left a comment on PIXHAWK
"I am sure most will say not again, Pixhawk telemetry. I do need help and all can be reassured that I have spent many hours scouring the net for useful information. I am not new at quadcopter flying, I started in 2012 and have progressed through many…"
DIY Robocars via Twitter
Hank Deucker left a comment on PIXHAWK
"Tomorrow, I am thinking about the wording at the moment."
DIY Drones via Twitter
Welcome to the new DIY Drones design!. You may have noticed that DIY Drones looks a little different today. That's… https://t.co/cg2EmeDGMQ
DIY Drones via Twitter
New! Online Training on Drones for Disaster Response https://t.co/brqRuujjY2
DIY Robocars via Twitter
DIY Robocars via Twitter
RT @OttawaAVGroup: We are going to try something new this week. We will be having a drop-in style meeting Wednesday @ 7-9pm EST. Pop in and…
DIY Robocars via Twitter
RT @tawnkramer: Thanks Everyone for another fun virtual race! Amazing Ai racers competing head-to-head, Virtual Makers Fair event. Catch us…
DIY Robocars via Twitter
RT @make: Find out the latest from @diyrobocars at 10am PT from @chr1sa of @3DRobotics on Virtually Make Faire! #makerfaire #maketogether #…
May 23
DIY Robocars via Twitter
RT @Heavy02011: Join us Saturday online: Virtual Race League: @DIYRobocars Race #2 - Parking Lot Nerds https://t.co/aJUu4sdutx #Meetup via…
May 22
DIY Robocars via Twitter
RT @donkey_car: Yay, we are part of the virtual @makerfaire with @diyrobocars. Come see our race or better yet train a model and race with…
May 21
DIY Robocars via Twitter
RT @chr1sa: The @DIYRobocars Virtual AI Race is going to be part of the virtual @makerfaire on Sat! https://t.co/wnMDAboLID
May 20
DIY Robocars via Twitter
RT @tawnkramer: Please join us next week for our second DIYRobocars online race. We will be using a new Mountain Track course! https://t.co…
May 19