Programmable path navigator Robot

The project achieves complete concept, design and development of a programmable path grid navigator robot. The project deals with the design and development of the mechanical, hardware, embedded software and the user interface (for path feeding) aspects of the robot. The developed robot is a fully functional wireless robot in which the path to be traced is programmed with the help of an interactive user interface in Matlab environment, and there after the robot can trace the path to the accuracy of 0.75 millimeter on a surface after being detached from the computer.

The epitomizing features of the robot which make it efficient are:

• Easy way to enter the path into the robot, through mouse clicks on a scaled graph.
• Excellent concept, mechanical design and stability with zero turning radius effects which makes the robot capable of tracing paths with the accuracy of 1mm and makes any sharp angle turn possible at any juncture.
• Zero inertia effects and sharp stoppage.
• Moving reference algorithm and intelligent processing by the robot to eliminate co ordinate errors.
• Magnification and other control inputs can be given to the robot at runtime.
• Robust physical design.
• Self powered and rechargeable. Doesn¡¦t require any external source of power
• Absolutely no restrictions on the nature of path. The grid navigator can trace any path be it a piecewise linear sharp quadrilateral or any random curve. 

The project uses Atmega 8515 microcontroller for path memory and runtime processing and uses Matlab for user interface and uses AVR studio for programming the Robot

Description of circuit:

Components used:

  1. Microcontroller ATmega 8515L, 8PI, 0528C.
  2. 7805 voltage regulator I.C (L7805CV).
  3. RS 232 interface using HIN232CP I.C.
  4. IC ULN2003 for stepper motor interface.
  5. DB9 connector (to connect the board to the computer via the serial PORT)
  6. Light emitting diodes.
  7. Capacitors.
  8. Resistors.
  9. Jumpers.
  10. Switches.
  11. Diodes.
  12. 2 stepper motors 12volts, 1.08 amperes rating.

Power supply to the system:

12volts DC supply to the board and the stepper motors, through a rechargeable battery.

Description of microcontroller board:

All the above-mentioned components have been soldered on a two layer PCB and the connections can be seen from the schematic attached. The micro controller has 4 PORTS A, B, C, D out of which three have been used.
The PORT B has been set as the output PORT and the 4 pins are connected to the stepper motor on the right side.
The PORT A has been connected to the bipolar stepper motor on the left of the robot.
The PORT C has been connected to the tactile switches sw1 to sw8 (pin 0 to sw1, pin1 to sw2 and so on). These switches are used to take the start command and the magnification factor input from the master.
The schematic of the board can be referred for the exact description of connections.
The project board is programmed through the serial port of computer via RS232 interface. The red led indicates the supply of power to the board. The board requires 9 volts dc power, which can be given through an adapter.
The switches in the project serve as runtime commands to the robot for start ,stop and magnification controls.
The LED¡¦s serve the purpose of displaying the running status of the robot and keep on displaying the signals being passed to the motors.
The following figure shows the pin diagram of the IC used in the robot for programming purpose, and the figure thereafter shows the arrangement of the various components on the board.

The schematic:

Design and construction

We can identify 3 design stages namely:

  1. User interface design
  2. Embedded software design
  3. Mechanical design and stability analysis.

All the three design aspects were pursued separately and tested individually. Then they were unified and tested as a whole. Finally the design was successful with the successful operation of the robot meeting all the objectives. All three design developments have been covered one by one in the documentation to follow.

User Interface Design

The objective was to develop a platform for the user to embed path into the microcontroller with the help of a grid based path with proper dimensional scaling. The way of entering should have been simple with the help of mouse clicks alone.
This was done with the help of Matlab wherein an image was created by displaying a matrix whose elements were given certain intensity values in 8-bit format. The image was formed in the form of a white mesh with a black background

There after a program was developed to display the image automatically, capture the mouse clicks on the image and store the X and Y co ordinates according to the image in two separate arrays:

[x0 y0 val]=impixel(image); 
[len ns]= size(x0); 

The image developed was stored in the location of disk as shown; also values have been modified according to the Grid based Cartesian coordinate system from the original co ordinates in the complete image domain.

Also in the user interface we enter a magnification input from the user and do the remaining calculations accordingly. The user may give the input ranging from 0 to any higher value and the above factor multiplies the distance the robot covers on ground accordingly.
Mag = input (‘DEI GRID NAVIGATOR ROBOT ROVER greets you..!please specify the magnification factor’);

The code being embedded into the robot was a C code.
Thus the next target was to transfer the values of the arrays to the C program automatically, i.e open the C file in append mode, create a function there and initialize the required arrays with the values just calculated through the user interface in Matlab, and thereafter close the C file and save it and all this should happen automatically. It was quite a tricky job but finally we were able to make the entire process Automatic through file handling.
The matlab code for the same is attached as a seperate file by the name of grid_navigator_plus.m
The user interface image and the graphical image of the path for a specific case is attached as files by the name of user_interface.jpg and example_path.jpg respectively

Embedded Software Design

This design stage was the most important one as this was the basic intelligence of the Robot. The tasks were:
• To convert the co ordinates from a fix frame of reference to a moving frame of reference as the axis moves with the movement of the robot.
• To convert these into parameters at each stage such that the robot by referring these parameters at each intermediate point of its path can decide the next angular and forward movement.
• To convert the parameters into the angular and forward movement of the robot by giving appropriate signals to the stepper motor.
• Finally to develop the complete navigation algorithm.
As explained in the mechanical design section the movement of the robot is broken into a piecewise linear motion such that at every stage the robot has to first align itself into the required direction and then move forward and repeat the same process at each intermediate point. The orientation angle and forward navigation distance can be easily calculated if we assume the current point to be origin and take positive x axis along the current orientation of the robot. The next point is then calculated with respect to the current position and orientation of the robot and the quadrant in which the point lies tells the robot whether to move clockwise/anticlockwise and by how many degrees and also after orienting itself, the forward distance it is supposed to move.
Thus at every point we need to do axis translation and make the current location of the robot as origin and current orientation as axes and recalculate the remaining path to be navigated according to the new frame of reference.
Axis translation and rotation:

X1=x0 cos (theta) ¡V y0 sin (theta) ¡Vx0 
Y1=x0 sin (theta)) + y0 cos (theta) ¡Vy0

The above equation would find convert a point (x0, y0) with respect to an old axes to a point (X1, Y1) with respect to the new axes obtained by rotating the earlier axes by theta degrees clockwise and shift the origin to the point (x0, y0).
Thus after translation of points the number of steps required for orientation and navigation are given to the required functions and the appropriate signals given to the motors which make the navigator first orient and then navigate the required number of steps.
• The above process repeated at each intermediate point results in an accurate navigation movement of the robot.
• Also the robot takes magnification and speed input from the user and also the start and stop command.
• The robot can be operated in continuous mode or a single iteration mode.
• Also the robot can be stopped manually at any stage and when again given the start command it continues its movement from where it was stopped
All the above inputs can be are given to the robot in runtime. This has been achieved using the switches connected to the port C of the Robot.
The logic explained above has been developed into the programs which have been attached as files grid_navigator_plus.m and navigator1.c

Mechanical Design and Stability

design comprised of only two prime mover wheels and a supporter wheel. This design best suited our needs and provided the desired movements, explained as follows:

1. Independent Drives

Two stepper motors each of step angle 1.8 degree were used for each wheel, the motors were identical in current rating , step angle, and power output ,thus providing the following advantages:
(a) Motion about its own axis.
(b) Ability to turn at any angle

(a) Motion about its own axis

Two independent motors gave a distinctive advantage to the rover of being able to rotate about its own axis. Both of the motors were given the same volts and current, the direction being different for each drive, thus one motor was rotating anticlockwise and the other was rotating clockwise, thus the vehicle was able to rotate about its own axis satisfying the condition for equal distance covered by each motor.
(b) Ability to turn at any angle

The concept of independent drives gave a very desired feature to the rover, it¡¦s ability to turn at any angle. This was achieved by giving the desired number of steps to each motor, their direction being different , or fixing the position of one wheel and making the other to rotate about it. Thus any desired angle could be taken by the rover.
This facilitated the rover to take very sharp and complex turns, which increased its mobility and maneuverability hence satisfying our primary design consideration.


The navigator after complete assembly was tested for various paths. The navigator traced the paths with a tolerance of 0.75 mm. The navigator was tested under a variety of paths including sharp quadrilaterals, curved paths, piecewise linear paths, alphabets etc. and the paths were successfully traced.

Thus the development of path navigator was completed and tested successfully.

Files attached:

  1. grid_navigator_plus.m: the matlab portion of the code for the grid navigator. Includes path capture through mouse clicks on a graph and appending the c file
  2. navigator1.c: the C file which finally goes into the microcontroller of the robot before setting it to mission


  1. Microcontroller ATmega 8515L, 8PI, 0528C.
  2. 7805 voltage regulator I.C (L7805CV).
  3. RS 232 interface using HIN232CP I.C.
  4. IC ULN2003 for stepper motor interface.
  5. DB9 connector (to connect the board to the computer via the serial PORT)
  6. Light emitting diodes.
  7. Capacitors.
  8. Resistors.
  9. Jumpers.
  10. Switches.
  11. Diodes.
  12. 2 stepper motors 12volts, 1.08 amperes rating.

Power supply to the system:

12volts DC supply to the board and the stepper motors, through a rechargeable battery.

Robot Body : wooden frame,aluminium bushes for stepper motor, hard plastic wheels.

Leave a Reply

Your email address will not be published. Required fields are marked *