Friday, July 3, 2009

Rubots!

Hello planet!

I have just committed a game to playground in pre-pre-pre-alpha stage called Rubots.

The game us written in Ruby (qt-ruby so far, needs help for kde-ruby) and uses Player/Gazebo as backend.

What I am talking about? What is this software?

Gazebo
Gazebo is a robotics simulator. A .world file is created where one can introduce models (everything written in XML, not very nice but usable). This defines the 3D world of the simulation. Gazebo is done in C++ and provides an API to control de robots' actuators and read their sensors.
It also have a plugin for Player.

Player
Is a robotics middleware. One of many. The idea is create an abstraction with interfaces. For instance Position2d interface has commands to set the speed and the position of the robot. One dont really care about what is the actual architecture of the robot (how many wheels, where is the driving train), this is done by low level drivers.
This software is used to control REAL robots, is popular and has Ruby bindings.

When used together, Gazebo via its plug-in cheat Player and make it believe it is controlling a real robot when in fact it is controlling a robot inside the simulation.

So this is the idea:

Gazebo simulating a couple of robots in a battleground scenario
Player controlling and passing data around thanks to ruby bindings and Gazebo plugin
Ruby programmed robots to actually move the robots around and fight!

Think of this as Robocode in 3D and programed in Ruby.

Benefits:
- For Player/Gazebo : lot of testing. I have already found deficiencies and solve them in that software thanks to the stress of the game.
- For Ruby: The game tries not to cheat if possible, meaning the robots programmed for the game will work as it in real hardware!
- For KDE: Get a neat new game :D There are any serious KDE application done in Ruby?

Currently most code is kept in two files as it is easier to develop like this, it will eventually break into files

I have set up a site for planning.

Help and comments are very very much welcomed.

3 comments:

  1. awesome!!! I've been looking for something like this in ruby

    ReplyDelete
  2. Damn, dude - sounds great! And good to see Korundum getting some extra stress-testing!

    ReplyDelete