Arducopter 50 is our first fully Software in the Loop tested version. Special thanks to Tridge for developing the test suite!


Here is a quick video of the testing in action:



You can see the copter takes off, flies a simple square in manual and records the square with CH7 toggles at each corner. It then loiters and switches to AUTO to fly the recored WPs.

Once that's done it lands and loads a mission via mavlink. The mission is intended to test all commands including conditional commands and the jump command. The last two commands are RTL and land.


What else else is new:

More aggressive Alt hold control - You can now achieve rapid ascents & descents in alt hold. The throttle acts like a large dead zone with the upper and lower 20% being a proportional control. Adjusting the throttle resets the new target altitude.


Added the ability to log arbitrary data for better debugging.


Recording WP in normal flight with Channel 7. This is a great way to get WPs recorded in the field. Just toggle ch7 High for 1 sec and it will save the WP to memory building a WP list on the fly. Switching to AUTO mode will fly the WPs. Rebooting will allow you to start over on a new mission.


Added separate Acro PIs for people to tune Acro mode.


Z dampening - Alt hold now has an optional Z accelerometer dampening system. You need to compile it yourself to test. I'm eager to hear user's feedback on this so we can make it on by default. You can enable it in APM_Config.h by changing the '0' to a '1' like this "#define ACCEL_ALT_HOLD 1"


Y6 now has top and bottom missing ratio enabled. It's 1.0 for the top by default, but many users set it to 0.9.

Crosstrack correction is now enabled for WP navigation. Thanks to the SIL, we could test this properly. This makes the copter hold a very tight line to the next WP. The default gain is 4.0.


RTL now defaults to return at the current altitude.


Improved Circle mode performance.


Changed the Mission scripting execution order to be more intuitive. Conditional commands now execute after navigation commands are complete, not just loaded.

Various mission scripting bug fixes.


Removed some tests in the CLI for memory savings to fit the 1280.


Added precautionary safety preventing the user from entering flight modes that require GPS lock. If home has not been set you will get a stabilize mode instead of Loiter, or Auto, etc.


There were also many small bug fixes and code cleanups performed - too many to list.


If no one has any major issues, I'm going to call this the final stable release!


What's next in version 2.1 (target release early January):

- complete Mavlink 1.0 upgrade, ensure better Mission planner support.

- exploration of learning algorithms for auto-tuning.

- sensor/register level software simulation for testing more code.

- expanded test suite with more scripted scenarios

- secret cool stuff regarding the DCM

- ideas?


If you run into any issues, please post them to the issues list.







Views: 25570

Reply to This

Replies to This Discussion

wow. that is really excellent, being able to test so easily in this way is a game changer

WOOHOO !  Too bad the weekend is finished over here in Belgium.  I'm SO excited to test this !  Been way too long since I've tested something new :-)

Great job Jason and team !

And euhm, no more beta in the name ?

would it be possible to use channel 8 to activate simple mode now we use 7 for waypoints?

yes it's possible, but you would need to tweak some code. and be very careful to mind the HW failsafe on 8

You can also just upload with Arduino and change it to Simple in APM_Config.h




What hardware failsafe? I would like channel 7 for wp save and 8 for simple mode. How do I go and do this in de code? And how do I enable z damping in the code. I am looking in the config.h and am not finding it.

The hardware failsafe that was in the ardupilot for use in planes.  If channel 8 goes higher then 1750ms, the APM won't do its work anymore, but it will pass inputs 1,2,3 and 4 directly to outputs 1,2,3 and 4.  For a plane this means that you fly it manually, without APM having any infuence anymore.  For a quad it means basically the same...  So YOU control each motor independantly with your sticks : channel1 on your tx controls motor 1, ch2 controls motor 2 etc.  Good luck keeping your quad in the air like that.

Actually I'm thinking about activating both wp saving AND simple with ch7.  It doesn't hurt to be in simple for 1 sec while saving a waypoint, does it ?


For enabling Z-accel I'm guessing you have to change the following define to 1

#define ACCEL_ALT_HOLD 0


Edit : About the hardware failsafe, I read in the arduplane wiki : Anyway the header file allows you to disable this feature, this will also free another input channel that can be used for something else....

How do we disable the feature in the header file ?

You would have to reflash your ppm encoder with modified firmware that disables the mux check.

Little bug :

Compiling with 


produces following compile error :

ArduCopter:-1: error: 'void Log_Write_Data(int8_t, float)' used but never defined

I have never trusted Auto mode. Much damage can occur.

At times it will work corrrect though random.



You'll need to update the ppm encoder firmware to disable CH8 radio passthrough mode (hardware failsafe).


I advice to load the latest ArduPPM code if you plan to update the firmware. You'll need an ISP programmation cable to do this. Be aware that updating the ppm encoder firmware can be risky if you mess the AVR fuses.


I've just added a #define to disable CH8 hardware failsafe :



// Set it to "DISABLED" to remove radio passthrough mode (hardware failsafe for Arduplane)


ArduPPM firmware is here :



Martin: This would be a good time to try again. This is the most tested software we've ever released. 

I will grab the GIT and try again. Just to make sure I clone the recent.


Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service