Report bugs | Sign in
Powered by Melange
Release 0-6-20100201

Student Name: Jordi Polo
Mentor Name: Akira Tanaka
Title: Rubots
Abstract: I propose a learning environment for Ruby based on the actual usage of the language in a challenging environment : programming robots to compete in a simulation.
This project will be built on top of modern robotics middleware and simulator. Thanks to this, the Rubots API and bindings can also be used for serious purposes like programming real robots.
The goals are:
- Open a new field for Ruby (robotics).
- Create the most interesting introduction to a programming language available.
Public info:

Nowadays there exist several open source robotics simulators [1]. Among them Gazebo[2] is probably the most advanced.
Gazebo can connect to a robotics middleware called Player. When a program using Player controls a real robot, Player will read the data from sensors and send commands to the actuators of the robot.
When Player is connected to Gazebo, Gazebo sends data from sensors of the simulated 3D world to Player and Player send commands to simulated virtual models of robots actuators.
This way, a commanding program can be tested in simulation worlds and without further modification be used to command real robots.

The proposed project, Rubots, will be a learning environment for Ruby based on this software. The task of the user will be to program a robot in the simulation world. The goal of the program of the user is to compete with robots programmed by other users.
To make this a gentle and funny introduction to the Ruby language, a simple API will be created to access the sensors and actuators of the robot. Ruby is extremelly flexible, being possible thanks to it to even create doman specific languages [5], I plan to use this flexibility to create an API following the principle of least surprise and easy to use.
This idea is the same than the one that the highly successful Robocode project implements for Java language[3]. There are three big differences with the Robocode project:
-- The language to be taught is Ruby.
-- The simulator that Rubots will use features 3D graphics and realistic physics.
-- The Ruby API can be used to control real robots.

Benefits for the Japanese Free Software Community
- Grow of userbase of the Ruby programming language
-- Bindings for Player project
-- Fun software to learn ruby.
-- Real robots can be controlled by means of a simple Ruby API.
- Software to introduce robotics (a field specially important and advanced in Japan where there is not much free software)
- The interface and documentation will be translated to Japanese


Project schedule
- May 10th to June 5th
   Player's Ruby bindings (Player software is written in C++)
   Tests for Player bindings.
   Bindings to control the basic operations of the simulator (start, stop, enter model, etc.)
- June 15th to June 30th
  Creation of models for Robots, weapons, environments.
  If possible, already created models released with free license will be used for robots and weapons.
- July 1st - August 1st  
  Rubots API
  The API will create a very high level and Ruby like robot control and translate it to the low level bindings.
  A possible example of this API is:
  if sensor.find_robot?
    robot.speed = 100
  end
  These instructions in lower level may involve laser sensor readings, find patters of other robots, correctly categorize, etc.
- August 2sd - August 15th
  Minimal Gui interface (QtRuby) to load and start the game, the simulator already present the graphical result of user programming, the interface created by this GSoC will be, thus, almost inexistant.
  Documentation of the Rubots API
  Webpage of the project, posting information about the project in relevant forums, etc.
- August 16th - August 20th
  Final report for GSoC

System description

The current GSoC focus on bindings and Rubots API from the diagram above. What is called Game will be a minimum and simple GUI.

Player and Gazebo and the other components are already available as the PlayerStage project[4].


Deliverables
- Ruby bindings for Player (opensource robotics middleware). This will allow for programming of real world robots like iRobot's Roomba or Segway's Robotic Mobility Platform using Ruby language
- Game environment for the simulator, models, weapons, etc.
- Easy to program Ruby API for programming robots and controlling the simulator. This API is of a much higher level and easier to use than the Player bindings.