Dronely: A Visual Block Programming Language for the Control of Drones

Slides:



Advertisements
Similar presentations
Programming Paradigms and languages
Advertisements

Chapter 3: Modularization
Creating Mobile Apps with App Inventor! Day 4 Google search Kris Gordon Ludlow for links.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Comparing Python and Visual Basic
CS102 Introduction to Computer Programming
Adapted for STLP Camp ‘09 Mobile Robots Why do robots need to move?
Why do robots need to move?
Dynamic Choreographies Safe Runtime Updates of Distributed Applications Ivan Lanese Computer Science Department University of Bologna/INRIA Italy Joint.
Se Over the past decade, there has been an increased interest in providing new environments for teaching children about computer programming. This has.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Methodologies of the SDLC Traditional Approach to SDLC Object-Oriented Approach to SDLC CASE Tools.
1 5 Nov 2002 Risto Pohjonen, Juha-Pekka Tolvanen MetaCase Consulting AUTOMATED PRODUCTION OF FAMILY MEMBERS: LESSONS LEARNED.
Review of Applications By Phoebe Stewart. Introduction I shall be talking about the features, strengths and weaknesses of two different apps, a learning.
Practical Programming COMP153-08S Week 5 Lecture 1: Screen Design Subroutines and Functions.
Framework for Interactive Applications Matthew Korchinsky Advisor: Aaron Cass Senior Project – Computer Engineering – 2006 Abstract The Java language was.
Introducing Scratch Learning resources for the implementation of the scenario
Nickolas McCarley University of Alabama Abstract Robotic Navigation through Gesture Based Control (RNGBC) assists people who may not be able to operate.
Chapter 17 The Need for HTML 5.
Product Training Program
The ULTIMATE Resource for Beginning Researchers!
Introduction to Visual Basic. NET,. NET Framework and Visual Studio
BASIC PROGRAMMING C SCP1103 (02)
CSC 222: Object-Oriented Programming
Using AppInventor2 for teaching
Architecture Brief Pepper
Data Collection and Analysis
Principles of Good Screen Design
Design Components are Code Components
ULTRASONIC DISTANCE METER USING 8051
Teacher Configurable Coding Challenges for Block Languages
FOP: Buttons and Events
Chapter Topics 15.1 Graphical User Interfaces
Coupling and Cohesion 1.
Physical Data Model – step-by-step instructions and template
BASIC PROGRAMMING C SCP1103 (02)
System Design Ashima Wadhwa.
CharacterCreator: An Educational 3D Modeling Application
System Design.
Principles of Programming and Software Engineering
Lecture 2 Introduction to Programming
Hierarchical Architecture
Introduction to Computer Programming
Introduction With TimeCard users can tag SharePoint events with information that converts them into time sheets. This way they can report.
Lesson 1: Buttons and Events – 12/18
Lesson 10: Building an App: Color Sleuth
VISUAL BASIC.
Concepts From Alice Switching to Java Copyright © Curt Hill.
Chapter 4 Functions Objectives
Windows xp PART 1 DR.WAFAA SHRIEF.
User Interface overview
CIS16 Application Development – Programming with Visual Basic
Storing Values as Variables
Chapter 1 Introduction(1.1)
Introduction UI designer stands for User Interface designer. UI designing is a type of process that is used for making interfaces in the software or the.
Using Functions
Design Components are Code Components
Android Topics Limited Resources and why we need to consider them.
Middleware, Services, etc.
How Are Algorithms Developed?
Chapter 15: GUI Applications & Event-Driven Programming
A Trusted Safety Verifier for Process Controller Code
Introduction to Computer Systems
Digital Literacies for learning
Programming Logic and Design Eighth Edition
Low-Fi Prototyping.
AN INEXPENSIVE ROBOTIC KIT FOR CHILDREN EDUCATION
Chapter 1: Introduction to Computers and Programming
Presentation transcript:

Dronely: A Visual Block Programming Language for the Control of Drones Eric Tilley Department of Computer Science, University of Alabama Abstract Dronely is a visual block programming language that allows users to build programs for the control of small drones. Dronely uses drones as a way of raising interest in computer science among K-12 students by presenting a user-friendly and intuitive drag-and-drop interface for building programs that have a physically observable effect. Although the language was designed so that simple tasks are straightforward to accomplish, more complex programs can still be implemented in Dronely. Language and Implementation Safety Features Safety is one of Dronely’s key design elements. Because Dronely is designed to be used by beginner programmers, it will naturally be used by younger users, so safety is a particularly important concern. Dronely sets conservative maximum velocity and acceleration limits and prohibits operations above a safe altitude. It also provides an “Emergency Stop” button which is available at all times. Dronely’s drone communication module maintains an internal state machine with frequent sanity checks, which helps to ensure that the drone will never deviate from its commanded path while it is under the control of Dronely. Dronely is implemented as an integrated development environment (IDE) for Android tablets. It presents the user with an intuitive interface for building visual block programs (see figure to left). The interface is powered by Google Blockly, a popular framework for building blocks-based programming languages [3]. On the left side of the screen, a list of block categories is displayed. When the user taps on a category, he or she is allowed to select a block from that category, which they can then “drag and drop” onto the current program canvas. Blocks fit together like puzzle pieces, so it is very clear to the user which blocks are compatible with one another— unlike traditional text-based languages, where the user has to worry about parameter and return types. Background & Related Work Visual block languages have become very popular, especially in the field of computer science education. They allow beginning programmers to “get their feet wet” in programming without facing the steep learning curve of traditional text-based programming languages. There are many existing applications that implement block languages for the control of robots and drones. One popular application, Tickle, provides its users with a blocks-based interface for building programs targeting smart home devices, connected toys, and robots, but not flying drones [1]. Another application, Tynker, allows its users to use a block-based interface to build programs to solve puzzles, build games, and control robots and drones [2]. Both Tickle and Tynker are commercial, closed-source applications that require payment to unlock certain functionality. Dronely is designed to be different than existing applications like Tickle and Tynker. Dronely focuses solely on Parrot drones, avoiding the clutter of additional functionality and presenting the user with a clean interface designed for a single purpose. Dronely is also completely free of charge, removing potential barriers for its use in education. Most importantly, Dronely is open source, allowing its users to modify it as needed to fit their purposes. Dronely provides a variety of blocks for controlling the drone (e.g., “take off”, “land”, “climb x feet”, “do a barrel roll”, etc.) Dronely also provides blocks for control flow, Boolean logic and mathematics functions. It supports user-defined global variables, which are implicitly typed. In order to maintain simplicity, user-defined subroutines are not allowed. Because it is primarily an educational language, Dronely is designed to make simple tasks straightforward and easy to accomplish, but to still make complex tasks possible (e.g., Papert’s “low floor/high ceiling”) [4]. Two sample programs are shown at the top right. Since Dronely is powered by Blockly, its code generation engine must emit JavaScript code (an example of code generation is shown to the right in the middle). When the user runs a program, JavaScript code is generated and run in a hidden WebView. This WebView is connected back to Dronely through a JavaScript bridge, with which Dronely relays the user’s commands to the drone. A block diagram of Dronely usage is shown at the bottom right. Conclusion Dronely balances simplicity and power and allows the user to accomplish many programming tasks with a Parrot drone, both ranging from simple take-offs and landings to complex choreographed aerobatic stunts. Dronely is designed from the ground up to integrate its safety features with the pre-existing Parrot drone safety features in order to ensure operations are as safe as possible at all times. References [1] Tickle—https://tickleapp.com/ [2] Tynker for Tablets— https://www.tynker.com/mobile/ [3] Blockly Overview – https://developers.google.com/blockly/guides /overview [4] Papert, S. Mindstorms: Children, Computers, and Powerful Ideas. New York, NY: Basic Books, 1980.