Introduction
The ZoneRobotics Video Robotics Development system “VRDS” is a educational development platform for makers or students who want to develop uses that benefit from having a streaming camera. It consists of a mobility platform, modular hardware platform, a service and various user front end applications.
It is similar to the Arduino in that it can control gpio, adc, and talk protocols such as uart, spi, i2c; however it is very different in that it’s logic is stored in a remote system that runs the service. The hardware does nothing but process input from the service and forward a video stream and information to the service. All of the complexity of maintaining and handling hardware devices is handled by drivers that run on the hardware.
User Base
Something for Everyone
No Development – Turn on Push Button – Client Applications
People who simply want one of the development systems for the end use created by others. These are people who simply want one to drive it around and use its modules. They also benefit by the games and applications created by other users.
Quick Development – Drag and Drop Programming – Web Based
Children using the web interface to build programs that the VRDS will follow fall into this category. As well as people who have an application they would like to achieve but no programming experience. Very high level access is exposed to this level such as the ability to detect and process shapes in the video feed, and the ability to move and turn modules on and off.
Script Development – High Level Language –
College and high school level students who wish to develop applications that will be used by the upper levels. This level will interface with the simple service using high level languages such as Javascript, Python and others. They will develop and create scripts that can be used by others.
Application Development – Java, C++, C – IDE
College and high school students can develop applications inside of the service to get fast raw access to the video feed. This will be for the development of games or adding new functionality to the upper levels. This is also for development of Apps that you would develop for android that would be downloaded in the play store.
Driver Development – C C++ – Embedded IDE
Engineers and Computer Engineers who know how to program on the STM32 line of processors can add drivers to add functionality for the upper levels. For example if there is a i2c or spi device that would expand the abilities of the development system you could add a driver for it here.
Hardware Development – Schematic and Layout – Eagle
Develop new modules and the PCB around them. Add any standard module with gpio, i2c or spi. This would require a driver be written for i2c, spi but no driver would be required if controlled if the module was controlled by gpio.
Mechanical Development – 3d Design and Printing –
Develop new mobility platforms and add on modules to give more abilities to the development system and the upper levels. Design mobility platforms that can handle multiple VRDS development platform and have multiple drivers.
Educational Synergy
All of the development levels develop applications that help the other levels of development. All senior projects and maker development can be added to the project and used by the average user and those who don’t have the experience to create their own module or mobility platform.
Parts
Mobility Platform
Mobility platforms are basically any enclosure that helps the hardware to interact with its environment. The standard platform is the “Tank” platform which allows the unit to move around and overcome obstacles. There are also up and coming basic platforms such as the Car, QuadCopter and the Wall-E/Johnny 5 platform. Mobility platforms can support more than one set of VRDS platforms, for example you could have one VRDS to drive and another to control an arm or turret, multiple human operators or AI modules would be required.
Modular Hardware Platform
There are three main components: face board, brain board and body board. Each of these hardware component expose a header where they can inteface with other modules. A good example of this is the Lazer module that plugs into the face board. We encourage users to design and create their own custom modules and submit them to the community.
Service
The service is an application that serves as the glue between the embedded world and the user application. It handles all of the complicated processes such as parsing the data out of the video stream as well as serving the video stream to the user application. On top of the service other libraries exist such as web server, JSON Api, OpenCV that allow the users to pull detailed information from the stream over http/json, such as the number, type and location of objects in the video stream. Users can build on top of the service or interface with it through http/json.
User Front End
There are several front end applications the user can use to interface with the device. These applications allow the user to drive the device or show its basic functionality. They also serve as a template so that users can use the existing code to create their own applications or games.
Typical Application
A typical application of the VRDS is to follow or interact with objects based off of sight and object recognition. There are also several applications where we will simply want to augment the users experience while using the bot, for example creating a game with an objective that expects a human operator.
Example Applications
Lazer Tag: blast each other in the camera module with the lazer
Animal Feeder: Dispurse food and take a picture or video
Face Recognition: perform activity on recognition of face
Line Follower: Follow line using video stream, follow different color lines, follow paths
3d Mapping: Map enviroment using lazer and camera
Online Trap and Release: close door to trap animal, take picture and release, share online
Security Patrol: Patrol area and recognize differences
Online Buddy: Let your friends control your bot across the internet