Some work related to my research ...

Sunday, November 1, 2009

My First robot with Arduino


This is my first robot with Arduino Mega boards. The body of the robot is made with the components of RobotDesigner kit (Japan Robotech Ltd.) This includes wheels (motors), IR sensors and the body. Here we use an array of 6 IR sensors to avoid obstacles on its path. Arduino MEGA provides 16 Analog input pins and 13 PWM outputs which can be used to drive motors. We use Toshiba TA7291AP full-bridge driver to drive the dc motors. It can give an output current of 1A and can provide forward and reverse rotations. We use two battery supply for this robot. One for powering the Arduino board and the other one for driving the motors.
The one thing I must mention here is that I could assemble and program the entire thing only because of the help that I received from my labmate Mr. Asuki Kohno, who is a final year under-graduate student in our lab. He is very good at these things.

I recently modified the design. The new one makes use of a caterpillar track that enables it to move over things like wires, cotton, threads and other soft  objects lying on the ground. Putting caterpillar track on to the robot took some time. Its because we are not using an off-the-shelf caterpillar module. That would have saved our time, but these are not readily available. I mean you need to order from abroad. We could get hold of "Tamiya Track kit" to build our own caterpillar system. It costs only $10 to get one such kit. But one has to align the wheels and mount them on his robot properly so that the track does not slip over the wheel etc. A better one with its own frame to house caterpillar track may cost little higher. For instance, RP5 track chassis costs around $50.

Thursday, October 22, 2009

Swarm Robots and Data Mining

My current work is about extracting some "Higher Knowledge" using Data Mining on the log data collect from external sensors like a camera. Before going any further, let me tell you about the kind of robots I am using here.


  1. The price of one robot is around 20K JPY or US$ 200. 
  2. It runs on a 6V battery. It has two motors to control its motion.
  3. It uses only 3 IR sensors to detect obstacles.
  4. There is no way, we can store on-board signals (for instance, IR readings) and analyse it off-line using a computer. 
  5. It does not have any communication capabilities (like wireless, radio or blue tooth) with which it can communicate with other agents or with a central computer.
Hence the controller design completely depends on the designer who 'observes' the robot behaviour during its motion (say using his eyes, or a camera) and then based on his understanding, he modifies the controller to improve its performance  while achieving certain goals.

Now, our purpose is to build a system, where behaviour of several robots are analysed using data mining methods and useful hints are derived which could be used by the designer to improve the controller. The story is like this ...

A designer (a person) writes an algorithm for the swarm robots to perform a task and then goes away at night for sleep. During his absence, robot behaviour is recorded through an external sensory system (say multiple camera system in a building).  An autonomous data mining system (ADMS) analyses these logs and finds out if any robot manifested any kind of anomalous behaviour. It also enumerates the possible causes for such a behaviour and suggests some improvements that could be incorporated to overcome this anomaly. So in the morning, the designer comes back and analyses the results. He either incorporates the suggestion made by the ADMS in improving the controller or rejects its suggestions. 

This sounds more like science fiction at this stage. However, we have just started working on it ... Following video shows the motion of 4 robots which have been programmed to avoid obstacles (walls or other agents) while navigating the workspace. In this task, the robots are to be designed to increase the patrol rate which is the rate at which robot explores the workspace.

Tuesday, October 20, 2009

Making your own Swarm Robot ... where to start.

Many labs in big universities make their own robots. For instance, S-bot (Swarm-bot) is being developed and maintained by LIS at EPFL. Here I would list  few commercial companies which provide you cheaper ready-to-use components to build your own robots :

1. Lego Mindstorm Nxt 2.0. The third party C interface could be obtained easily. Mindstorm Nxt 2.0 provides advanced capabilities like bluetooth or wireless communication, color detection.

2. Robot Designer by Japan Robotech Ltd. One of the good thing about this product is that they provide an integrated development environment for writting codes in C which can transferred on to robot by serial port. So, complicated algorithms can be implemented on it.However, it can not support more than 5 sensor inputs.


With Arduino boards, the capabilities of your robot could be increased to a great extent.For instance, it can support nearly 50 sensors ( I need to check this one, though!)

With time, I would try to update this information ....

Installing Player/Stage on Ubuntu Jaunty64bit

My system:

$ uname -a
Linux swg-desktop 2.6.28-14-generic #47-Ubuntu SMP Sat Jul 25 01:19:55 UTC 2009 x86_64 GNU/Linux


First install following packages using synaptic packet manager:

python-gdal netcdfg-dev libpq-dev libhdf4g-dev libgeos-dev libatk1.0-0 lib3ds-dev freeglut3-dev

Apart from this, you would need following more packages:

1. Opencv
2. Gtk
3. libtool
4. libboost
5. GDKpixbuf
6. G++
7. Glut/OpenGL
8. GSL
9. libdevice
10. Gnomecanvas
11. imagemagick
12. Swig
13. Ruby
14. libstatgrab
15. libXmu
16. xmms

Don't forget to install development packages (-dev) for these packages.


In order to install xmms, follow the instructions given here .

I downloaded the player-3.0.0-rc1 and stage-3.1.0-Sources packages from sourceforge site .

Untar these packages and follow the instructions given in README.txt and INSTALL.txt files. Once you have installed the files correctly, you should check if you are able to execute simple commands as mentioned in the player/stage homepage. Instructions for installing Player is given here . Follow this link to find out if player/stage is installed correctly and instructions for Stage installing is given here .

Basically, you should be able to the run the following command successfully. Go to the stage source folder.

$ which stage
/usr/local/bin/stage

$ cd Stage-3.1.0-Source
$ stage worlds/simple.world

This should give you following animation screen :


In case you get an error saying shared library could not be loaded, you need to include the folder containing player/stage libraries (/usr/local/lib) into the file /etc/ld.so.conf and then run following command on terminal :

$ sudo ldconfig


for Stage 3.1.0, install libfltk1.1.x, libpng, libtool (libtdl) and opengl libraries. Read the INSTALL.txt file inside the source package.


I also tried installing it on a 32 bit Jaunty and it works fine. The configuration is as follows:

Linux swg-laptop 2.6.28-14-generic #47-Ubuntu SMP Sat Jul 25 00:28:35 UTC 2009 i686 GNU/Linux

I faced problem while installing this on Ubuntu Intrepid (8.10). While everything compiled properly, it gave me an error like "Insufficient GL support" when I tried to execute the stage command. The problem was allegedly with unsupported ATI drivers.

Real life robot applications

I just came across this amazing blog which posts the recent developments in robotics.


http://www.botjunkie.com/

It has some amazing robot videos ... starting from squeezing robot to dish-washer to wagging tails ....