3D Robotics

ArduPilot 2012 Software Roadmap

3689441745?profile=original

About once a year we post our software roadmap for the next 12 months. Last year, we promised we would take ArduPlane and ArduCopter into their 2.x generation, with full two-way MAVLink control and a full featured ground station and setup process. The 2.x generations of the code were intended to give APM-based vehicles all the features of professional-quality autopilots at a tiny fraction of the cost. With a huge amount of effort from the whole dev team, which now numbers nearly a hundred people across its many projects, we've completed that. Yay!

 

The 2.x generations of ArduPlane and ArduCopter are now being flown by thousands of people, making the APM platform the most popular open source autopilot in the world.  With the introduction of APM 2 (above), with vastly improved sensors, lower price and fully-assembled delivery, this growth looks likely to accelerate. After a shipment of 150 boards to early-adopters last month, full production of APM 2 will resume in early Feb. The current 2.x codebases already fully support the new APM 2 boards.

 

So at this point the 2.x codebases are essentially feature complete, and we can move on to 3.x. (That said, the 2.x software will see continued updates to improve performance and reliability. In particular the traditional heli version of ArduCopter is a couple versions behind the more mature multicopter code, and will continue to evolve over the next few months--helis are hard!).  

 

As the dev teams focus on the 3.x code, you should see far fewer public code updates for a period of about three months (until April 2012). Lots of work will be going on behind the scenes in the Git repositories, but we will not be rolling out public releases of new features that risk drowning the team in tech support and documentation demands. Again, we will continue to fix any issues that are identified in the 2.x code and otherwise ensure that it's flying well for everyone, but we won't be adding new features to it during this period.

 

The 2012 Software Roadmap

 

The main objective of the 3.x codebases will be a new architecture that emphasizes modularity and portability. This is to help with the following:

  • Better reliability by making the code easier to understand, debug and maintain
  • Easier accessibility for new dev team members
  • Easier portability to new hardware platforms
  • RTOS compatibility, to prepare for the forthcoming ARM-based versions of APM

Examples of Planned New 3.x Features:
  • MPU-6000 DMP support. 
  • Inertial dead reckoning drift compensation
  • Full scriptable camera control on both ArduPlane and ArduCopter, with interactive camera gimbal setup
  • Auto-trim:  sets RC trim points when exiting manual mode
  • Loss of signal failsafes for GCS link
  • ArduCopter: Autonomous "follow me/look at me" control with handheld GPS groundstation
  • ArduCopter: Support for I2C/SPI/CAN motor controllers and forthcoming "smart" motor controller/PDB board
  • ArduPlane: Support for Flaps with automatic speed dependent deployment
  • ArduPlane: Servo control loop gains with speed scheduling
  • ArduPlane: Airspeed nudging from the RC TX in autonomous modes
  • ArduPlane: Inverted flight mode and scriptable acrobatics
  • ArduPlane: Sonar flare control

Architecture changes:

Make RTOS support possible:
  • Eliminate global state in sketches. This is a broad, fundamental change required to effectively use an RTOS.
  • Modularize sketch code into classes with interfaces. This will improve code comprehension and help enforce communication with messages rather than global state (again, required for RTOS)
  • Replace loop()-style structures with explicit periodic scheduling. This will increase code comprehension, enforce non-reliance of ordering of loop items (& global state), and make it easier to move to RTOS later.
  • Eliminate remaining synchronous blocking IO
Coding style:
  • Rename library class methods and members to meet coding standards
  • Run automated ‘indent’ script on all source, implement indent bot which fixes whitespace issues checked into repository nightly
  • Dramatically reduce reliance on preprocessor in sketches: features like HIL & ArduCopter traditional heli will be implemented using standard interfaces rather than source code manipulation
Logging:
  • Proposal: switch from special dataflash logging packets to MAVLINK 1.0 data
  • Modularize logging, move to libraries directory
  • Add SD card support for APM2

 -------------------

Join us!

If you'd like to join the dev teams, please read this post on the best ways to do it. (Short form: pick something specific that you'd like to help with and show some familiarity with the code). We're always looking for more programmers, but we're careful about taking time to figure out how to integrate them best and on which project, both for their sake (to have the highest impact soonest) and for the sake of the existing dev team members, who have limited time. 

 

You can always PM me with a request to join the team, and I'll generally start by adding you to the dev team mailllist so you can see how we work and get a feel for where you might fit in best.

E-mail me when people leave their comments –

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

Join diydrones

Comments

  • 3D Robotics

    Jonathan: Yes. Right now we're just offering basic APM 2 support, which is to say that the APM 1 code will run on it so it should be equivalently usable. But with the 3.x software releases, we'll be unlocking the extra power of APM 2, including the DMP. Probably around March.

  • 3D Robotics

    Ron: sounds good. Just PM me your email address. 

  • 3D Robotics

    Hugo: Just PM me your email address and I'll add you to the dev list. You'll quickly get a feel for where you might be able to participate most productively. 

  • Developer

    @Gerry, Instead of a phone, why not use a beagleboard, gumstix or similar single board system that support Android? And then just get and connect your sensors of your choice for the IMU part.

  • Chris, I'd like to help out on the new ardustation if you need any help that is. I sent Jordi some pictures of my latest prototype using the mega chip and a graphic lcd yesterday. I'll blog about it in the next day or two. I didn't realise you had some test hardware up and running for a new version, I would be very interested in the details
  • 3D Robotics

    Brad: You've misunderstood. We are not moving "away from Arduino and towards an RTOS on an ARM platform". Arduino itself is moving towards an RTOS on ARM (see this for more). We are 100% committed to Arduino, and are part of the effort to extend it to more powerful hardware platforms. 

  • I applaud the direction away from Arduino and toward an RTOS on an ARM platform.  Eventually, larger UAVs and/or any commercial applications of aerial robotics will virtually require fail-safe and redundant control systems.  The APM grows up!  Vision is a good thing.

  • @ Jack,

    I'm on my 3rd attempt to find an android phone which has a usable imu. Started with the LG Optimus V & Droid 2 Global, then bought 2x Samsung Galaxy S Epic 4gs, now am waiting on an HTC Evo 3d.

    The Samsung Galaxy S II is supposed to have a usable gyro according to the samsung tech I talked to, but I'm not going to risk it having already spent ~$300 on the first "Six Axis Accelerometer" mistake.

    Backstory: the Epic 4g was released with froyo pre-gingerbread's "sensor fusion" so they did it on a hardware/driver level turning accelerometer data into "gravity" & "linear acceleration" but with no yaw angular rate from anything but the magnetometer.

    This will change with demand perhaps, but right now it's near impossible to find an android 2.3.4 handset with the ADK USB accessory drivers installed which has a working gyro accessible from the API.

    I'm a die hard android guy, but I've seriously considered throwing my hands up and resorting to an iPhone(better floating point performance without the virtual machine OS). I've got nearly a $1000 sunk cost in bad choices on phone selection.

  • 3D Robotics

    Jack: We already have an Android board (the PhoneDrone). This post was just the ArduPilot roadmap.

  • 3D Robotics

    Grips: You mean the hardware ground station? (Ie, ArduStation?) We've got prototype hardware or ArduSation 2 (wifi/xbee/bt) with the developers already. If you would like to help with that, pls PM me. 

This reply was deleted.