Tuesday, 16 October 2012


After trying some basic runs of the Roomba 561 with the default modes of spot cleaning and docking I tried to program it using very basic codes sent through via a serial port communication software. 

I used the following hardware;
  1. Roomba 561 robot 
  2. a FTDI USB cable 
  3. my laptop, ACER V3-571G
I used Windows after a long time for developmental purposes. I followed this tutorial and installed Realterm in Windows-7.

The following videos are the outcomes of my efforts.

Two things which need a precaution are,
  1. Realterm has to be used in XP (SP3) compatibility mode in Windows-7 
  2. The Baud has to be set to 115200 in the Realterm software for Roomba 5XX series 
A special thank you goes to Bill Morris (bill at iheartengineering.com) for helping me procure the FTDI USB cable and ship it to India.

Sunday, 30 September 2012



For a windows enthusiast, installing ROS is nothing short of a trauma. Install Ubuntu -- Update Ubuntu -- Install ROS -- Configure ROS, all of which over a bad connection can take more than 6-8 hours and getting acquainted with Ubuntu, bash and the ROS commands steepens the learning curve and thus the installation process.

I have been working with a virtual OS (vmdk) on Virtual Box 4.1, though this download is a 3 GB file, however once downloaded it comes pre-installed with ROS electric and Player/Stage on a Ubuntu 10.04 OS. Online installation and configuration is no more an issue. 


Download link; http://ubuntuone.com/1NHvytU3My6TakjeCFgqTi
Download and extract the vmdk file. 

OS details
OS : Ubuntu 10.04.4
login : electric
password : electric

ROS installation details
version : 1.6.9, electric emys
ROS_PACKAGE_PATH is set to ~/ros_packages

Player/Stage installation details
Player version : 3.0.2
Stage version : 3.2.2
The installation files can be found at ~/player-3.0.2 and ~/Stage-3.2.2-Source
  1. After a full ROS installation, some basic packages have been downloaded and installed, can be found at ~/ros_packages  
  2. The installation of ROS and Player/Stage does not conflict. However while using Stage in ROS, it is advisable to use stageros than stage.
  3. C++ code to run Player/Stage can be found at ~/player-3.0.2/examples/libplayerc++ 
  4. world and cfg files for basic simulations in Stage can be found at ~/Stage-3.2.2-Source/worlds 
  5. gazebo is known to have issues when used on a virtual OS
  6. vmdk has been tried and tested in Virtual Box 4.1 on Ubuntu 12.04 host. Prospective users are welcome to try it out in VMWare
  7. Make sure to enable 3D acceleration in the Virtual OS
  8. Any issues - please email me at arkapravobhaumik at gmail dot com

Thursday, 16 August 2012


Hey all!,  

About the machine in the picture:
Which stands for ANalog inNOVAtion amaTEUR
My 3rd line follower bot, a definite improvisation on its predecessors
A line follower, completed in March 2012 after 4 months of work, mostly post midnight

BOT Description
  • Body  : Glass fibre PCB. Designed for a low CG. Lightweight,
  • Drive Assembly: Pololu Micrometal Gear Motors 1000 rpm driven by TB6612FNG motor driver bought from sparkfun
  • Microcontroller: 32 bit ARM Cortex M3 based LM3S9B96, made by TI Fitted with accelerometer, for precise calculations for turning, for optimizing speed constants during second run
  • Line sensor: Self designed, home-made 10 IR-pair based analog sensor array, laser printed with cloth-ironed on a copper clad plate.
  • Battery pack: 4 Lithium-ion BL5C soldered in series to generate around 14V
  • About the Code: Elements for ambient compensation, PWM Motor control for implementation of PID based control algorithm
  • Performed at : APOGEE 2012, BITS,Pilani
  • Accolades : 1st Position at Track-o-Mania, Apogee 2012, BITS,Pilani

Line followers are many but "ANNOVATEUR" is one. Class apart feature of this bot is the self fabricated, designed Infrared sensor Analog Array, which allows for much more flexibility in the control algorithm. This is the feature that makes ANNOVATEUR just not any other bot, but 'My Bot'.

The path for a plain hobby to something meaningful wouldn't have been possible without the ardent support of my mentor Prof. Samir Lohani. I'm highly grateful to such a stalwart who always provided his humble support even through his busy schedule as a railway officer. His lines of coding are capable of springing dead machines to life and this is aptly proved by a couple of patents that he has to his name. With hands-on experience on both Mechanical and Electronics Engineering, I couldn't have found a better guide, a better friend.

Though this is just a beginning with my passion, endurance, innovation and the guidance of my mentor, I'm sure to come up with many more innovations in future, so keep looking up this space for my future endeavours.

About Me:
Aditya Sharma
                                                                                                         Mech Engg undergrad student

Adios !!

Tuesday, 31 July 2012


My friend Luke is planning to do a series on social robotics. This is a sampler of his efforts till now.

More to come ........

Saturday, 19 May 2012



I recently purchased a Roomba 561. In these two videos I am trying out simple pre-programmed runs of the robot.

Monday, 23 April 2012


...... birds do it, bees do it. Even educated fleas do it ..... oh yes ! ... they all form swarms. The sense of collectivism runs deep into insects, fishes, animals and human beings. The collective exhibits traits which are not present in the individual. 

Anthropomorphism of such collective intelligence into the mobile robots domain has been  the motivator for swam robotics. The central idea is forming distinguishable flocks of mobile robots. As Çelikkanat etal. puts it, "... aims to develop self-organization in large groups of robots with no centralized control while putting emphasis on flexibility, robustness and scalability ..."

The earliest work on swarm robotics was by Mataric. Later research into animal robot interaction by Vaughan, Henderson, Halloy, Bonabeau etc; into particle swarms by Vicsek and philosophical insights and arguments by Reynolds, Dorigo and Şahin structured the discipline to its current form. 

Fig.1. Mobile robot flocks, experiments by Mataric
Fig.2. Sheepdog project by Cameron and Vaughan
Fig.3. Experiments by Halloy etal.
In mobile robot context, the terms flocking and swarming are often used synonymously. Swarm may be structured by various control paradigms, some well known scenarios are; 
  1. Same pose - similar angular orientations will clearly distinguish a swarm
  2. Goal driven - similar destination/intentions will implicitly form swarm. Such can also be seen in, foraging for food and escaping from the same predator/adversary - 'follow the leader' or 'follow landmarks' can be seen to be an extension of this idea wherein the goal is dynamic.
Like these there are very many ways to form flocks, it is worth a note that agents with similar velocity or similar position do not reflect a control paradigm and do not necessarily form flocks.
The above calls for a classification of swarms, which would be based on a behaviour based approach and would aid in developing a pedagogy for studying swarms. Such an ontology is provided by Turgut etal., swarming is attributed as an vector like addition of behaviours much in the spirit of Brooks and Arkin. Turgut defines f as the flocking control vector;

where p is the proximal control vector, that encodes attraction/repulsion roles, a is the alignment control vector and g is the goal direction vector. While α, β and γ are arbitrary constants.

Proximal control (p) is manifestation of the idea that the agents should come close enough to form a swarm but not too close to crash into each other, this level of control is chosen as the lowest level in order to form the swarm and maintain it. Couzin etal. illustrates this notion with a zone model.
Fig.4. Zones model as suggested by Couzin etal.
Angular alignment (a) is a popular tool for flock formation, aligning the agents with a common heading angle ensures a common trait across the group. However a swarm structured on angular alignment without proximal control, the agents may exhibit a collision prone Brownian motion like behaviour. 

Goal directedness (g) is not a behaviour exhibited by swarms, however for researches as those by Couzin, Turgut and Ferrante this serves to incorporate informed agents, which whence would implicitly guide the swarm to its goal.  

This superposition of 3 control vectors to yield a flocking control vector can be seen an extension of layered control as suggested by Brooks in subsumption architecture. 

Fig.5. Layered control for swarming
Thus, with Turgut's flocking control vector; 
  1. Same angular alignment : f = a but probably there will be oodles of collisions !!!! thus a better option may be, f = p + a 
  2. Goal driven : f = g which is not very realistic, thus f = p + g 
Scenarios of  f = p + a + g, will be seen in effect in a swarm formed by angular alignment, which also has informed agents equipped a sense of goal directedness.

Fig.6. The Nerd Herd by Mataric
  1. Maja J Matarić, "Interaction and Intelligent Behavior", MIT EECS PhD Thesis, May 1994, MIT AI Lab Tech Report AITR-1495,Aug 1994.
  2. Richard T. Vaughan, "Experiments in Automatic Flock Control", PhD thesis, University of Oxford, 1999.
  3. Ali Emre Turgut, "Self-organized Flocking with a Mobile Robot Swarm", PhD thesis, Middle Eastern Technical University, 2008
  4. Halloy, J., Sempo, G., Caprari, G., Rivault, C., Asadpour, M., Tache, F., Said, I., Durier, V., Canonge, S., Ame, J.M., Detrain, C., Correll, N., Martinoli, A., Mondada, F., Siegwart, R. & Deneubourg, J.L. 2007.  Social integration of robots into groups of cockroaches to control self-organized choices. Science 318: 1155-1158.
  5. Turgut, A. E., Çelikkanat, H., Gökçe, F., & Şahin, E. (2008). Self-organized flocking in mobile robot swarms. Swarm Intelligence, 2(2-4), 97-120. International Foundation for Autonomous Agents and Multiagent Systems.
  6. Çelikkanat, H., Turgut, A. E., & Sahin, E. (2008). Guiding a robot flock via informed robots. Distributed Autonomous Robotic Systems DARS 2008 (p. 215–225). Springer-Verlag.

Thursday, 22 March 2012


Once I tried to explain ROS to one of my friends, after about 15 minutes of blabbering and tapping keys on the computer .... he looked at me and asked; "We need to open 4 terminal windows to get this thing moving ?". Though the terminal window is what most of us just love to use, a colourful GUI is always more welcome. Such a GUI, rxDeveloper is provided by Filip Muellers at  http://code.google.com/p/rxdeveloper-ros-pkg/.

The clear advantage that rxDeveloper has over the terminal window is that everything is pictorial and would lure the potentially non-initiated robot enthusiast. I used Stage and Gazebo launch scripts through rxDeveloper and everything worked nearly all right.

The GUI works well with launch files and it doesn't need to explicitly start the master. Tools as rviz, roswtf, rxgraph, rxconsole etc are available as a drop down menu, a bash like script keeps track of the execution of the launch files, each node/process is  pictorially denoted and there are facilities to create, edit and save all kinds of launch files.

With some effort it was  possible to add rxDeveloper to my Applications menu in Ubuntu 10.04,

NOTE : All observations are for rxDeveloper version 1.0b, ROS diamondback version 1.4.10 installed on Ubuntu 10.04 LTS

Friday, 3 February 2012


Stage 3.X.X onwards, it is a stand alone simulator and the robot behaviour can be controlled using 'controllers', the installation provides with some basic controllers which serves the purposes of wandering, laser noise, swarm formation etc. However such calls for the facility for writing custom made stage controllers.

Dr.Vaughan has provided a template for designing such controllers for stage 4.X.X, https://github.com/rtv/stagectrl; I have forked out a version of the same for stage 3.X.X; https://github.com/Arkapravo/stagectrl_stage3

The README file has instructions on how to use this template.
Fig.1. The default simulation for the template

Saturday, 28 January 2012



An interesting recreation in player/stage is walle, which was designed by Richard. I have made a ROS package of the same. The package can be downloaded here, http://mobotica.googlecode.com/files/walle_ros.tar.gz . The simulation may be run with the following command;

rosrun stage stageros `rospack find walle_ros`/world/simple.world 

This stage window should pop-up,

The simulation script employs the stage wander controller, and the simulation starts off in the 'PAUSED' mode, left click on the stage window and press P to get things moving. Walle will wander around.

To have a closer look at walle, left click on the stage window and press R (Perspective camera). 

  1. Tested on ROS diamondback, should work on ROS electric
  2. Any issues with the ROS package, please write to me at arkapravobhaumik at gmail dot com

Sunday, 15 January 2012



We have met the roomba robot in one of my previous articles. Here, I work on some simple teleoperation on it, this time with a 3 dimensional model in gazebo.

I am thankful to Jeff for providing a URDF for the irobot create at http://code.google.com/p/aptima-ros-pkg/ .


I used this roomba model with simple_office.world, which is one of the environments provided by the installation files for gazebo. I was able to move the robot around using teleoperation from teleop_base

  1. The simulations were done in ROS 1.4.10, Diamondback, installed on Ubuntu 10.04 LTS
  2. The codes for the simulation are provided at https://github.com/Arkapravo/irobot_create_gazebo