Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browser-based IDE and language for the Parrot.AR Drone 2
JavaScript CSS
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
static
.gitignore
LICENSE
README.md
package.json
stormborn.js

README.md

drogo

A browser-based IDE (Stormborn) and language (Drogo) for the Parrot.AR Drone 2, targeted at beginner programmers and students. Goals:

  • clean, C-like syntax with common constructs like loops, conditional statements
  • feedback in the form of drone path visualization, and camera feeds
  • sane error handling (land if an exception occurs), and clear error messages (low battery, no connection, etc.)
  • debugging mode to test code before flying

There are two components right now, which communicate using Socket.IO:

  • the Node.JS backend, which interfaces with the robot and maintains position information
  • the static frontend, which compiles the code and sends instructions to the backend

Stormborn Features

  • Takeoff and landing are handled automatically
  • Status is reported in the dashboard, including battery level and connection issues
  • Program flow is shown step-by-step: currently executing instruction is highlighted
  • Programs are checked before take-off
  • Drone position is visualized

Language Syntax

Drogo uses a C-style syntax with lines terminated by a semicolon (;) and code blocks deliminated by braces ({ }). Whitespace is largely optional, except where it terminates a keyword (like function, var).

The initial target for Drogo includes:

  • C-style, single-line comments terminated by a newline
//This is a comment
up(1); // This is also a comment
  • methods in the default namespace for controlling the drone
up (duration in seconds, [speed])
down (duration in seconds, [speed])
forward (duration in seconds, [speed])
backward (duration in seconds, [speed])
right (duration in seconds, [speed])
left (duration in seconds, [speed])
clockwise (duration in seconds, [speed])
counterclockwise (duration in seconds, [speed])
  • arbitrary, user-defined methods which accept arguments:
function <method name> ([argument list]){
    <argument body>
}
  • implicitly-typed variables which must be declared before use with the 'var' keyword
  • a set of binary operators for variable assignment, mathematical operations and comparators:
var a = 1;
var b = 2;
var x = a+b;
x = a-b;
x = a * b;
x = a ^ b; // exponentiation
x = a > b;
x = a < b;
x = a == b; // equality 
  • if, while and for loops:
if (a > b){
    // commands
}

while (a > b){
    // commands
}

for (var i=0; i<b; i=i+1){
    // commands
}

Milestones

The language will be developed gradually, so we're trying to maximize the value of each milestone for new developers using Drogo:

  • drone-control methods in the default namspace, with literal arguments (complete)
  • user-defined methods with literal arguments (complete)
  • variable declaration and assignment using binary operators (in progress)
  • method invocation with variables and arbitrary operations (incomplete)
  • flow-control statements - conditional blocks, loops (incomplete)
Something went wrong with that request. Please try again.