Some of you might have read the work that Siddharth, Andrew, Philip and myself (supported by many others) have been doing over the last months with APM in Linux through the BeaglePilot project. We are happy to share with you today a paper titled "Towards an Open Source Linux autopilot for drones" (available here) that has been accepted in LibreCon 2014: Business and Open Technologies Conference that will be held the 11th and 12th of November in Bilbao, Spain.
The paper will be presented by my colleagues from Erle Robotics and they will also be showing our drones flying with APM in Linux. Feel free to drop by and join.
Code availability:
Most of our work with the AP_HAL_Linux has already been merged in the master branch of the main APM repository. We would be happy to address any comments either here or through issues in the main BeaglePilot repository.
Acknowledgements:
As we point out in the publication, this work would not have been possible without the support of many people. We sincerely want to thank DIYDrones community members for their support, words of encouraging and guidance. We also like convey thanks to Beagleboard.org, Google, 3DRobotics and Erle Robotics for providing financial means and material.
We would like to highlight the importance of having Andrew Tridgell (tridge) as our mentor through all these months. We can only thank him for his support and patience. It has been an amazing experience to work under his supervision and nowadays, more than ever, we deeply respect the work he and many other developers have done to bring up APM to this level. We wish that this contribution is just the first of many that will (hopefully) benefit the community.
Comments
Michael,
You are correct it should be mentioned that %CPU and %MEM is the percentage of CPU time and memory consumed by Ardupilot during runtime. That's a glitch from my side, I’ll rectify that. Also, in the case of our usage of stress we always targeted to produced 100% CPU consumption and also attained it. In the case of minimal load where stress application was not run. Thank you very much for pointing out these issues.
Michael,
Probably we didn't make it clear enough in the paper:
"In order to generate an intensive computational task the stress linux command has been used. This command generates about 100% of computational load which is ideal for testing the different kernels reaction. The tests have been done using cyclictests, a benchmarking utility that measures the latency of response to a stimulus. This utility implements the following ... "
Both Sid and myself used stress to put the processor load close to 100%. Furthermore obtaining the same results with two different approaches provides a more reliable result.
Thomas and Michael, thanks for your comments. Your skepticism is quite welcome. We need it in order to steer in the right direction.
Michael, you may want to review the paper again. Refer to section 2.7 and the following content.
And also, given the direction Linux development taking lately, meaning things like the whole systemd debacle, bringing more Linux developers into autopilot programming is not necessarily an unmixed blessing, it seems to me.
Michael, some share your concerns. Many believe it is the future track. Our work here provides a path towards a safer Linux-based autopilot. We provide a deep analysis of RT aspects and we share timings and conclusions. Feel free to ask specific questions once you've read the article.
Beside the technical aspects i would also highlight the clear benefit of moving to Linux: opening autopilot development to a big and experienced community of developers.
The paper has been updated including more references of some previous work performed by Paparazzi developers.