3D Robotics

ArduCopter 2.3 released

Jason is travelling this week, so I'll take the helm for the next software release post. 

UPDATE: the motor remapping thing was confusing everyone, so we took that out and returned to the regular motor mapping. That means that APM 2 users with Hexas and Octos should wait for the next version. APM 1 users should be fine with any frame.  

NOTE: Hexa and Octo users: there have been motor mapping changes that may affect you. Please don't upgrade until we can update the documentation to reflect the changes. This should happen by the end of the day today (Feb 1).

ArduCopter 2.3 is now available in the Mission Planner.  This is the next revision of the ArduCopter 2.2B6 code, which is perhaps the most tested code we've ever released (1288 comments in the thread!)  and certainly in my experience the best code, too. 

The default PIDs are optimized for a 3DR/Jdrones quad with 850 motors and 10" props. If you're using more powerful motors/props, start by turning down Rate Roll P (default is 0.14, so start by turning it down to 0.1. In general tune PIDs in 25% steps).

Now that we've got solid code out there, we can turn to collecting suggested gains for standard frames, and a better guide to how to tune PIDs for your unique setups. 

Here are Jason's note on the latest changes (mostly from 2.2B6)

A dampening term called STAB_D has been refined. A D term for all of the Rate based control loops has been added based on Igor's work. Landing for Baro and Sonar has been refined based on JLN's work. A slightly new approach to Loiter and Navigation is being used to try and linearize the pitch and roll for rate control. It tends to use lower gains, yet has a more assertive response in the air.

STAB_D : This is the gyro accretion dampener. This can remove small wobbles during sharp changes in angle commands. Making this too high can have a negative effect in performance and add a memory effect that can cause temporary loss in control. The in flight tuning is ranged so you are just below that effect.

If you haven't noticed before the control loops are in two stages. The first is a PI stage that converts some sort of position or angle error into a desired rate. These generally do not need to be tuned. They are more of a user preference on how fast you want the copter to perform a motion. 

The second stage is the actual PID loop that needs to be tuned for the copter. This converts the desired rate into a motor command of some sort. I added a D term based on Igor's recommendation to the PI's for each rate controller. These should show up soon in the mission planner for the release. I cannot give you a concrete answer for how to tune the D terms, because they each depend on their function such as alt hold or loiter, etc.

Still, the absolute most important term is always the Rate_P term for each loop. Start tuning here.

The default PIDs are in the what flies great for a stock jDrones/3DR Quad with the purple motors in X mode.

Note the Mission Planner does not yet highlight these D terms on the main tuning page (it will soon), but you can find them and modify them on in the Parameters list.

Autolanding should now work well (see video above) and the Tri servo issue is now resolved. 

The code should now compile with Arduino 1.0 (thank, Randy!), but remember that you need to use the "relaxpatch" version of Arduino in our downloads section

[Update: we've reverted the below. See update at the top of the post]

Important for Octo users:


We've changed some of the motor orders for some more exotic airframes. We'll be updating the docs on the Wiki in a day or two to reflect this. Pat Hickey explains:

As before, the hexa plus APM2 motor setup has changed from the ordering [1, 2, 3, 4, 5, 6] to [ 5, 6, 1, 2, 3, 4 ].

The Octa V layout for APM2 is:
6            4
  2        5
    8    1
      3 7
Motors 1 through 4 spin clockwise, and 5 through 8 spin counterclockwise.
Support for roll/tilt camera control on APM 2 should be coming in the next version. Traditional Heli will also be updating to this latest code as well once we track down a memory issue. 
As always, you can see a complete list of changes in the changelogs.

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

Join diydrones

Email me when people reply –

Replies

  • Hi All,

    does anyone know what's wrong with my "Pitch IN" and "Yaw IN" values? My "Pitch", "Yaw", "Roll IN" and "Roll" all seem fine....

    p.s. and yes, it's a crash (best seen in roll.jpg) between 12.55 -> 12.70 ;-(

    Thanks in advance!

    -Igor

    pitch.jpg

    roll.jpg

    yaw.jpg

  • Could I know why the optflow.x_cm value is not integrated at any place in the code to keep track of the translation of the quadrotor.It gets refreshed every time optical flow is updated? I see that in Attitude.pde, tot_x_cm accumulates the x_cm but it is not global. 

    Same is the case with the vlan and vlot values...

    Thanks in advance!

  • Just would like to say THANK YOU!!!

    2.3 is a huge achievement, I was able to test the code on my quad (3dr and 850kv motors) today and was properly amazed. The quad flew like a dream, extremely responsive to my every move and rock solid stable. I threw my gopro on top for a quick test flight. Can't wait for my mount that goes under the quad to come.

    https://www.youtube.com/watch?v=eygKgNWbgrE&hd=1

  • Help wanted - absolute altitude maintenance, and a stable yaw.

    I would be very grateful if anybody could point me in the right direction in terms of parameters, or code to comment/uncomment so that I can disable the manual altitude adjustment in alt hold and loiter. At the moment, I have to be incredibly precise in ensuring that the copter is not climbing/descending when I invoke Loiter, otherwise it keeps on going up/down. Furthermore, if I touch my throttle, even by half a click, it will start moving vertically - not great when you are trying to do video from a loiter. What I want is simple, for the copter to try and stay at the altitude it was at when Alt Hold and/or Loiter is invoked. I think my throttle/alt parameters are in a reasonable zone - Throttle Rate P 0.33 Alt Hold P 0.45 - I am still trying to tune out altitude oscillations, but those seem ok so long as I am on the button on invoke and don't breath on the stick (which is tricky when I am trying to control yaw as below).

    Secondly, I am trying to use a zoom video camera which needs a very precise and stable yaw. The problem I have is that if I simply dial up the Stab Yaw P, I still get errors and it is very hard to control. Too much and the copter yaws unpredictably in flight. What is the best way to tune yaw?

    Thanks in advance, Bill

  • Hey again everyone, trust you are all well and flying!

    Just a quick report from our latest flying 2.3. Just got back from a 2 day film shoot flying our octo and once again, it performed perfectly, without a single hint of a issue. We flew for 2 FULL days, in an average temp of about 35'C, it was super hot! Some hot glue of our octo even melted but the system worked flawlessly. I loaded 2.3 and did one or two very quick indoor test flights before packing the van and driving 5 hours to the shoot so was a little nervous as to wether it would keep up as the previous code (mostly .49) has, and it did.

    Just a big thanks again to all the developers and guys working hard on this code, if anyone needs any advice on running Arducopter on bigger octos, feel free to get in touch, any time!

    Hope to load some behind the scenes video clips we took soon!

    Regards

    Duran

  • As I read back  through the forum looking for hints to get mine better tuned it seems obvious many are having problems with the PID settings for 2.3 and particularly for loiter and RTL.   The default is suppose to be the starting point and modeled around Jrones Quad and 3Dr quads. 

    Wouldn't it be possible to work out table for the PID  to scale up for larger rigs or down for smaller rigs  by calculating the power to weight ratio and then a scalable adjustment for the PID default for those? eg, Kgs thrust versus rig weight etc.

  • Does anyone know why default parameters in 2.3 have Rate_D as 0 for roll and pitch but 0.002 for Yaw?
    Just trying to make some logical sense of it.
    Thanks in advance! 

  • Hi,

     

    any chance that for tri's something like that can be implemented in near future version?:

    in

    APM_Config.h

    #define TRI_YAW_SERVO_DIR REGULAR

    /*

    REVERSE

    */

    and in Arducopter.pde;

    static void fifty_hz_loop()

    ....

    #if FRAME_CONFIG == TRI _FRAME

    g.rc_4.calc_pwm();

    #if TRI_YAW_SERVO_DIR == REGULAR

    APM_RC.OutputCh(CH_TRI_YAW, g.rc_4.radio_out);

    #elseif TRI_YAW_SERVO_DIR == REVERSE

    APM_RC.OutputCh(CH_TRI_YAW, ( (-1 * (g.rc_4.radio_out - g.rc_4.radio_trim) ) + g.rc_4.radio_trim ) );

    #endif

    #endif

    ....

     Not the best, but a lot better as now!

    Thanks! 

     

  • Hi everyone,I am a novice but I follow this discussion with interest from version 2.0.XX,

    congratulations for the work.

    I try every version from 2.0.48 to 2.3 on my hexa with apm1 ,

    with this version i have a stab P Pitch and roll = 3 Stab I 0 Stab D 0,12

    Rate P 0,129 I=0 D=0 but i have a strange action

    when releasing the stick of pitch after a long forward progress, "the nose" of hexa goes up.

    how is the correct procedure for a good setup of 2.3?


  • Loiter behaviour - no/very low wind.

    Has anybody else observed this behaviour? When there is no wind, the Nav_P parameter needs to be quite low e.g. 1 to 1.2, otherwise you get pudding bowling. In very light winds, Nav_P can be more like 2 and then the copter is fine loitering in stronger winds. In very low winds, you need to increase Nav_P otherwise it gently drifts off. In other words, it seems very sensitive between no and very low winds.

    The good news is that later on, the wind got up - in 8-10mph winds, I had a 7-8 minute loiter, 400m track in a 6x6m box, which I thought was pretty good (anybody care to specify what it should be capable of?). Stock 3DR, APM1, 850kv motors, 10x4.5 props, Nav P 1.9, Nav I 0.01 Nav D 0.004.

This reply was deleted.

Activity