A SHORT INTRODUCTION

The project is about making the robot move in a pre-defined path with precision, without making use of GPS or WiFi or Bluetooth for positioning, not even map or building layout plan. And draw its actual path (to the scale), in real-time. The bluetooth can be used as a substitute of wire, for transmitting real-time location information.

The robot car assembly


THE INTERESTING BACKGROUND STORY

Our team's prime agenda is to develop shoe-mounted pedestrian navigation sensors. However, we were approached by an academic research group with the requirement of navigating robot indoor and simultaneous monitoring its realtime position. They wanted to use such system for mapping radiation in an enclosed chamber or detected gas leakage in an industrial setup. Such places are hazardous to human beings. looking for a robust solution for indoor navigation of our Arduino based robot.

oblu - an opensource inertial sensing platform

Our obvious choice for any motion sensor module (IMU) was "oblu" (Ref above image). But the tricky part here was that oblu's existing firmware was suitable for foot-mounted indoor Pedestrian Dead Reckoning (PDR ) or Pedestrian Navigation, in simple words. Oblu's PDR performance in indoor as a foot-mounted IMU is quite impressive. Availability of Android app (Xoblu) for oblu's real-time tracking as shoe-sensor, adds to the advantage. However, the challenge was to make use of its existing algorithm which is based on human walking model, for navigating robot and monitoring it.

oblu IO map

A brief intro to "oblu" - "oblu" is a miniaturized, low cost and opensource development platform targeted towards wearable motion sensing applications. It is Li-ion rechargeable battery operable and allows onboard USB battery charging. It has an onboard Bluetooth (BLE 4.1) module for wireless communication. "oblu" hosts a 32-bits floating point microcontroller (Atmel's AT32UC3C) which allows solving complex navigation equations onboard. Therefore one perform all the motion processing on oblu itself and transmits just the final outcome. This makes integration of oblu with the associate system extremely simple. "oblu" also hosts multi-IMU (MIMU) array which allows sensor fusion and enhances motion sensing performance. MIMU approach adds to the uniqueness of "oblu".

Oblu's internal computations are based on human walking. Oblu gives out displacement between two successive steps and change in heading. How - when the foot comes in touch with the ground, speed of the sole is zero, i.e. the sole is at standstill. <Refer above video.> This way Oblu detects 'steps' and corrects some internal errors. And this frequent correction of errors, results in great tracking performance. So here lies the catch. What if our robot also walks in the same fashion - move, stop, move, stop..

Infact, oblu could be used for any object whose movement has regular zero and nonzero moments.

Thus we moved ahead with oblu and in no time we could assemble our robot and the tracking system. Rest of the story is in the following video...


SYSTEM DESCRIPTION

The robot moves in a pre-programmed path and transmits (over bluetooth) its actual movement information to a phone for real-time tracking.

Arduino is pre-programmed with path and oblu is used for sensing robot's motion. oblu transmits movement information to Arduino at regular interval. Based on that, Arduino controls wheels' movements to let robot follow the predefined path.

The robot's path is programmed as a set of straight line segments. Each line segment is defined by its length and orientation with respect to the previous one. The robot's motion is kept discreet, i.e. it moves in straight line, but in smaller segments (lets call 'strides' for simplicity). At the end of every stride, oblu transmits stride length and extent of deviation (change in orientation) from straight line, to Arduino. Arduino corrects the alignment of robot at every step on receiving such information, if it finds deviation from the pre-defined straight line.

As per program, the robot is always supposed...

Read more »