Tuesday, April 12, 2005

Node Synchronization

Suppose you have many robots in an area or perhaps you have wireless sensors distributed in an environment. However, you would like to get them all synchronized so that they have the same time or that they do an action all simultaneously. How would you do this?

This is a problem of time and how to keep it across multiple locations on different computing resources. One solution is to just start all the nodes at the same time so they all have the same digital clock time. But this requires time-keeping hardware and the guarantee that nothing will ever happen to the nodes that will cause them to lose power temporarily or drift from their synchronized time. In fact, processors track time at different rates for a variety of different reasons, but this isn't important right now. The question is, what are ways you can synchronize these nodes?

Assuming you have the ability to communicate with your neighbors through a wireless communication, you can implement something called a pulse-coupled oscillator. This is essentially modeled after natural phenomena such as crickets, fireflies, and pacemaker cells. Each individual member in the population emits a periodic "cry" or "signal". In the case of crickets, its the screach. In the case of the firefly it's the photoluminescent flash of its torso. However, over time the periodic pulses of the individuals begin to synchronize over time by gradually adjusting their period to that of their neighbors. This allows you to synchronize the whole population without any notion of "global time" or a centralized time-keeper.

This phenomenon is very interesting and if you're interested in knowing how to implement it in a technological system, you can read this paper[1] on how they used it in coordinating the data transmission times in a wireless sensor network to conserve power.

[1] Wakamiya, N., Murata, M., "Scalable and Robust Scheme for Data Fusion in Sensor Networks", Proceedings of the First International Workshop on Biologically Inspired Approaches to Advanced Information Technology, Lausanne, pp. 305-314, January 2004

Thursday, April 07, 2005

Robot Software

One of the difficulties of doing research on robotic platforms is the lack of available software to accomplish basic functions like obstacle avoidance, mapping, vision, etc. For those software components that are available, they only work in limited circumstances on certain platforms. This situation makes the prospect of doing your own original robotics application an especially daunting task because you will have to re-write a lot of software to accomplish basic functions-- in effect, re-inventing the wheel.

The study of Robot Software Architectures seeks to alleviate the numerous problems encountered by novice robot programmers by providing easy and simple frameworks in which to test applications and re-utilize old software written by other groups for possibly different robot platforms.

MARIE is a project that seeks to unify and integrate all the various disparate software packages and testing suites. This would allow a person to rapidly develop and test software using tools that were not designed to work together.

Player is an abstracted device interface to various robotics research platforms. This allows you to run your programs on the real robot as well as on the two simulation environments, Stage and Gazebo.