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 –


  • Has anybody managed to get Loiter to work in differing wind conditions?

    I have posted before about the sensitivity of 2.3 between no wind and low wind conditions i.e. that it appears that the loiter tuning is quite different between the 2 states. However, it gets worse. Over the last 2 days I have had a few flights in 10-15 mph winds. The settings that appear to work are again greatly different from the low wind settings, but more worryingly, there is no consistency. On successive days I have ended up with settings that appear to be getting somewhere, and then on the next flight, it all goes to rat sh**, i.e. loiter does not hold at all and the copter gets blown downwind and does not "take" at all even when you ramp everything up. It is possible that on both days the wind increased slightly, which would suggest that there is an upper limit to what the code can cope with, or something else is going on (cold affecting the electronics? It was about 0 Centrigrade, plus wind chill, but I did leave the copter out for a while beforehand). Either case is not good.

    It worries me that there seem to be discussions about having even more parameters to tune for loiter. I can understand having to tune parameters on basic flight responses, but honestly, to my mind, Loiter should be about holding position and any tuning should be simply about how aggressively or smoothly that is undertaken (some people may be more interested in absolute precision e.g. the 1m box, others like myself want a smooth stable platform and mind less if it wanders a few metres). It should not be about trying to tune so that it loiters at all and that is the situation that I appear to be in at the moment.

    Can anybody help or advise? Regards, Bill


    I´ve removed this mod from here to put in GIT for devs to check. Apologize for that.


  • Hi all, here are my two cents on the new version.

    First of all, ESC's really do not like cold weather (-15 °C, west germany), so I had to recalibrate them to get my quad up in the air.

    I did 3 short test flights. First one was with "old" 2.2b6, default settings, second with v2.3 default, third with v2.3 and the settings Thomas uploaded.

    Summary: v2.3 is definitively way more stable than 2.2 in stab mode. (3DR frame, 850kv motors, 10x4,5 props, 2650 3S)

    Default 2.3 settings are good, really good. Nice response, smooth control, just as one is flying with a good old friend, I noticed the small twitches during hover.

    Thomas' 2.3 settings are nearly perfect (for me). This is flying with a good old friend who knows my intentions without the need to speak them out loud, no twitches but a little crackling noise from the motors.

    Thomas: could you please re-upload your settings WITHOUT the "modes-settings" for CH5? Aftert uploading your params I nearly crashed the quad because I didn't realised my flying modes changed! I know, my fault, but no need to have extra risks for other users...

    Dave: could you upload your 2 settings (the moderate one and the "flying beast") so users can test them on their own?

    Another side note: my yaw-not-responding-issue has dissapeared with v2.3! Before those test flights, i resoldered all the pins from RX to APM, without effect when using v2.2. In v2.3 i have perfect yaw-control all over the time.

    Guys, you are doing a great job, please keep on going just u are doing right now!

  • Hey again guys, as promised, here is a very short clip of us flying aerials for a tv commercial over the weekend, using our octo and AC2.3 (loaded just before the shoot) As mentioned a few times before, it performs perfectly everytime and have now done close to 2000 flights using Arducopter. Thanks again to Chris, Jason and all the dev guys!

  • I flew 2.3 today and generated a tlog attached. The arming starts near 30% playback.

    This time it is a square. Waypoints were added using CH7. They are added when loiter mode is switched.

    The landing was a little rough and I see that has been addressed in next update.

    It really works well in auto mode.

    Next maybe is to have it point forward toward the next waypoint?

    I am yet to use auto takeoff because a version in the past flew it fast and hard right up against a wall.

    If anyone has verified the auto takeoff is reliable I will try it again.

    The gopro gimbal test video is neat.

    Next step is to add this.


    2012-02-09 02-14-17.tlog

  • I look forward to the upcoming release of 2.3.1   :-)

    But, briefly, what are the fixes and news that we may expect for the release?

    Anyone? Chris?

  • I noticed that two of my motor pairs were tilted slightly and which was causing the quad to constantly yaw to the right always spinning. But even so I would have tough in stabilize  mode without simple  the AMP would try to keep it in one heading. Is this correct?

  • Just hat a quick test with my new GoPro Gimbal. I think I need a better servo for the pitch, but for a start I like the result.

  • MP 1.1.34. Modes not working

    Modes are correctly shown in setup page (as usual), but not shown well in "flight page" or "Simulation page" (always shown "stabilize").

    Where can I get the MP 1.1.33? (not in download page, only the 34). UPDATE: got it (you need to click on search  "all downloads")

    Could you check that?


  • Hi,

    I tried to run the 2.3 firmware in HIL mode using the tutorial in http://code.google.com/p/ardupilotdev/wiki/HILTestAeroSIM. However I was not successful. Any comments?

    1- I downloaded arducopter 2.3 firmware.

    2- I added below two lines to the end of APM_Config.h
    #define X_PLANE       ENABLED
    3- I compiled and uploaded the firmware using arduinocpp while motor signal cables were removed. Then I removed USB cable.
    4- I connected first Lipo than USB cable to the IMU oilpan. 
    5- I connected the GCS (1.1.34) to the copter via USB at 115200.
    6- I performed radio calibration. I adjusted all my three modes to stabilize/simple. I selected plus orientation.
    7- I disconnected the GCS, removed USB and unplug lipo.
    8- I connected motor signal cables to not hear beeps during simulation.
    9- I connected first Lipo than USB cable to the IMU oilpan. I connected the GCS to the copter via USB at 115200.
    10- I jumped to simulation section of GCS. And selected AeroSIM RC/Display All and adjusted gains as follows:
    Roll Gain: 10000
    Pitch Gain: 10000
    Rudder Gain: 8000
    Throttle Gain: 10000
    11- I saved the settings, and clicked Sim Link Start/Stop button to start the sim link.
    12- I opened Aerosim RC 3.81
    13- I selected Quad IV model and opened APMHil plugin (its dll is attached). 
    14- When I turned to GCS I saw GPS:3D Fix, however lat and long are both zeroes and the position of the copter was not available in the map.
    15- I returned to AeroSim RC. When I changed the sticks of my RC controller nothing changed in AeroSim. (RC controller was not connected to the PC via USB.)
    16- I returned to GCS simulation screen. When I changed the sticks of my RC controller again nothing changed in the output window.
    17- Then I put the throttle stick to the arming position, Real quadrotor was armed, when I gave throttle the motors of real copter started. (Props were removed :) )
    Thanks in advance!


This reply was deleted.


Shivchand Jaysaval liked Shivchand Jaysaval's profile
Aug 25