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/>.

The PX4FMU autopilot is by the same group that came up with the PX4
hardware that APM Autopilot currently uses, and while it's probably not as
mature as APM it seems to have a lot of potential.

My current project is porting this demo I did last year of voice control of
an AR.Drone, using Python running on a laptop, to clojure running on an
Android phone: https://www.youtube.com/watch?v=uhBa11gdbeU


John





On Mon, Oct 13, 2014 at 8:20 PM, JPH <j...@hackworth.be> wrote:

> I watched Carin Meier's great talk last year at OSCon on "The Joy of
> flying robots with Clojure"
> (http://www.youtube.com/watch?v=Ty9QDqV-_Ak&html5=1), and seen her work
> on clj-drone (https://github.com/gigasquid), and have wanted a hackable
> drone ever since.
>
> I'm now in a position to purchase one, and was wondering what the
> options were if I wanted a programmable drone (ideally with Clojure).
>
> The Google namespace for "clojure drone" is dominated by clj-drone,
> which is designed for AR Parrot (http://ardrone2.parrot.com/), but my
> searches haven't found much else. Are there any / many alternatives to
> AR Parrot if I want to program one in Clojure/Java?
>
> JPH
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to