Programmable drones with Clojure/Java support?

329 views
Skip to first unread message

JPH

unread,
Oct 13, 2014, 11:20:56 PM10/13/14
to clo...@googlegroups.com
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

John Wiseman

unread,
Oct 14, 2014, 1:08:52 AM10/14/14
to clo...@googlegroups.com
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. The Clojure library by Carin Meier/gigasquid that speaks the AR.Drone protocol.  Includes some computer vision (with OpenCV) and belief-oriented programming.
  • 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.  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 by 3D Robotics and PIXHAWK/PX4 by ETH.  The AR.Drone supports a subset of MAVLink.
  • Drone API.  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 and 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 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.

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





--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

JPH

unread,
Oct 14, 2014, 7:21:10 AM10/14/14
to clo...@googlegroups.com
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/>.
Reply all
Reply to author
Forward
0 new messages