One of the best decisions we made was basing our autopilot system on Arduino (credit goes to Jordi for spotting its potential so early and selling me on it). The engineers all sniffed at it, complaining that it was just an 8-bit processor running at 16Mhz and could never compete with 32-bit ARM processors running at 70Mhz and faster. But what Jordi spotted was something more: the Atmel chips are RISC processors and very effecient, an autopilot is not actually a very computationally intensive task, and most importantly, it's not about "feeds and speeds", it's about community, which Arduino attracts by being cheap, open and very easy to use.
Arduino has won the community competition hands down. The chart above is from the latest status post, and it shows more than 750,000 monthly vistors to the website and nearly 5 million monthly page views. These figures continue to grow at 100% per year.
Community brings tens of thousands of smart people around a platform, and many hands make light work. The amount of code and libraries out there that can be used for free are staggering and there's little need to reinvent the wheel. What basing the ArduPilot line on Arduino has meant is that we're not just using a great technology platform; we're part of a movement. That means not just great tools and thousands of available developers, but also a "cool factor", that really helps with marketing and adoption. In short, the success of the Arduino revolution is thrilling to watch, not least because it means we've hitched our wagon to the right horse!
Comments
":even though the current chips can run at 20Mhz or faster."
only the smallest AVR run that fast.
Long term, the move to 32 bits and an RTOS will make this codebase future-proof. Thus the importance of Roberto's work.
@Mark,
wiht standard Arduino is impossible to understand exactly where is the error ... you have the number of line in .cpp file that is the join of all pde file .. :( So is not so good for debug complex code . With Eclipse instead you have exact point of error with full description and with OpenOCD you can debug it step by step in realtime using jtag connector.
@John,
in MP32 IDE we decide to use two kind of approach Eclipse ide for professional application that support Jtag debug ,too and a standard Arduino IDE as editor with a ARM Gcc compiler that is the same used on Eclipse ide , so is possible migrate from one enviroment to the other.With Eclipse is available a ChibiOS/RT as advanced OS.
Thi is the status of task in MP32 community http://www.virtualrobotix.com/forum/topics/olimex-jtag-eclipse-openocd
Best
Roberto
I am stuck troubleshooting using Ardrino IDE.. Here is the error.
ArduPilotMega_2_1:-1: error: expected constructor, destructor, or type conversion before 'void'
Now how do I find which 'void' it could be in any function. Help!
Robero, I don't think the point is on flash memory with large & chip memory chips and Atmega in 256K flavour (the coming APM board), but the processing capabilities, not only mips, but also DMAs ando others.
And don't want to leave without mention all your good work in your ARM based APM. Keep it going.
On the other hand, no one thought about migrating to Xmegas? It would be the closest to the current Atmegas (AVR core) and doubles de mips (by doubling the MHz up to 32) and has DMA, and so on, so more than twice the speed I think.
In starting stage of developing Arduino could be a good choose , but after some development became a limit.
infact the code is around up 100 kbyte now and standar Arduino UNO have only 32 kbyte of flash .. only
So now with Multipilot32 that use STM32 is possible to continue the development of AutoPilot Project on ARM M3 at 72 Mhz with 512 Kbyte of Flash and 64 kbyte ram.
Sure Arduino have a good and huge community and good Brand , the arduino core team are doing a great job :)
What was possible to do on AVR platform are doing.Is not only a problem of speed but also on the bus interface for example. So if you put more device on i2c for example it freeze ... i doing a lot of test on this limit but i cannot solve it . So in my new design i use a micro with 2 i2c bus one for ESC and other for sensor.
So really the DIYDrones developer don't use only Arduino framework to solve the problem of performance on imu , but develop a lot of good library that using directly the native code of AVR processor. Don't forget AVR Freaks community that was usefull for this years on development on AVR micro processor. http://www.avrfreaks.net
Best
Roberto
Recommended this nice article on Sparkfun Apollo landing with 1 Mips
Any nice tutorial for working with Arduino using Eclipse or AVRStudio?
For the sake of curiosity how many MIPS are left nowadays on the APM?