Thanks for the amazingly detailed response John!
And here's some related news for good timing:
http://www.suasnews.com/2014/10/31767/linux-foundation-and-leading-technology-companies-launch-open-source-dronecode-project/.
I wonder how much of this is accessible via Clojure?
On 10/14/2014 01:08 PM, John Wiseman wrote:
> Hi, JPH. I'm interested in clojure + drones too. I'll try to describe the
> relevant parts of the current landscape as I see it.
>
> Unless you're writing your own firmware, at the moment most higher level
> drone programming is done with libraries that communicate with a remote
> drone, over a comms link:
>
> - clj-drone <
https://github.com/gigasquid/clj-drone>. The Clojure
> library by Carin Meier/gigasquid that speaks the AR.Drone protocol.
> Includes some computer vision (with OpenCV) and belief-oriented programming.
> - turboshrimp <
https://github.com/wiseman/turboshrimp>. My fork of
> clj-drone. Fewer dependencies (OpenCV is not required) and can run on
> Android. Focuses more on drone control/protocol without mixing in higher
> level concepts like belief-oriented programming. Supports receiving
> telemetry data from AR.Drone, like altitude, speed, heading, GPS location,
> onboard vision capabilities (marker identification), etc.
> - mavjava
> <
https://github.com/geeksville/arduleader/tree/master/thirdparty>. A
> Java library that implements the MAVLink protocol, which is the currently
> the leader in the "open drone communications protocol" category. MAVLink
> is spoken by a lot of different drone systems including APM
> Autopilot/Arducopter/Arduplane <
http://ardupilot.com/> by 3D Robotics
> and PIXHAWK/PX4 <
https://pixhawk.ethz.ch/> by ETH. The AR.Drone
> supports a subset of MAVLink.
> - Drone API <
http://dev.ardupilot.com/wiki/droneapi-tutorial/>. This is
> a Python library that speaks MAVLink but provides higher-level
> functionality for management of waypoints, etc. It's Python, but is
> relevant because MAVLink is a rather low-level, somewhat annoying protocol
> and this code will be useful to look at if you want to build higher level
> abstractions on top of MAVLink.
>
> The AR.Drone is a fun platform because the API is easy, the drone itself
> has a lot of functionality (video, wifi, GPS) and can be flown indoors. It
> usually just works. It has an ARM CPU running Linux and has USB, which
> makes it easy to cross-compile your own code, run it on-board, and
> interface to other hardware. E.g. see these experiments with connecting a
> software defined radio to the drone so it can pick up aircraft
> transponders: Augmented Reality Display of Air Traffic for Drones
> <
http://lemondronor.com/blog/indexphp/2013/5/augmented-reality-display-of-air-traffic-for-drones>
> and Cheap ADS-B on Amateur Drones
> <
http://lemondronor.com/blog/indexphp/2013/4/cheap-ads-b-on-amateur-drones>.
> The AR.Drone is limited by wifi range and payload capability, and it is
> closed software and hardware.
>
> APM Autopilot is the current leader of open source drone hacking. It runs
> on lots of different drone platforms (including the AR.Drone) and is open
> hardware and software. The comms links are typically 1 km/line of sight,
> and there are a variety of payloads available. The software is very
> capable, though it's not always stable. The development process is
> maturing, but it still has a way to go (today's announcement of the
> creation of the Dronecode foundation <
https://www.dronecode.org/about> is a
> good sign). It uses the NuttX OS on really limited hardware (168 MHz
> Cortex M4F CPU w/ 256 KB RAM, compared to the AR.Drone's 1 GHz ARM Cortex
> A8 w/ 1 GB RAM), which is annoying, though they have just started
> experimenting with a port to Linux on a Beaglebone Black. An example of
> some awesome hacking using APM is the search & rescue work done by
> CanberraUAV <
http://canberrauav.org.au/2014-uav-challenge/>.