Week 0

About Me Assignments Final Project Fab Lab 2017
About Me Assignments Final Project Fab lab 2017
×

PROJECT IDEA EXPLAINED

MAZE SOLVING ROBOT

Robot Sketchup

Final Banner

My Final Presentation Video

3D Model of Maze Solving Robot

As being a person from the computer science department I always think projects in the direction where computer is involved in solving the real time problems. So for this Fab Academy I also wanted to create some thing like that.

Since childhood I appreciate the field of robotics, as being here is a chance for me to enhance my experties, I would like to work on it.

I like to create a Line Following Robot which can solve Mazes.

Why Maze Solving Robot

Well nowadays Line Following robot is getting more and more used in the industry and real life, such as Industry Assemblies, conveyere belts, restaurants and many other places. So I wanted to make such a thing as well.

My main field of interest for this project is Hospitals where the passing of reports and medicines is done by the personell so instead of that its better for the robots to remember the shortest paths and move efficiently to pass things.

Robot Sketchup

The basic Robot Lookup

Being a computer scientist I am very excited about robotics, as it is a multi-disciplinary task, involving Electrical, Electronic and Mechanical Designing and requires sophisticated computer algorithms to pull all these things together.

For this project I will be deisigning a complete system bottom up. The major steps of this project will include

Double Motor Driving Circuit

To start work on proejct early than planned, I started making my week tasks based on the FINAL PROJECT. In Output Assignment I created the double motor circuit which will be used to move the car. While creating the circuit i found that I cannot make the circuit on single layer so I had to put one jumper to resolve this issue.

Robot Sketchup

Double Motor Driving Board reference

After this I went through all the process of milling and soldering and completed my circuit, the process is deeply explained in the weekly assignment

Robot Sketchup

Double Motor Driving Board Soldered

Arduino Leonardo

Well after a few tests I dropped this board and needed a replacement, as this board has the memory issue. Just after the installation of motor code the memory was 87% full. So I just found a replacement of it. My friend was working on the Arduino Leonardo board, so I asked him to help me build one also and after his help I made this board.

Robot Sketchup

Main Board Traces

Bill of materials

Soldering this circuit was a little issue, as the pads were to small and sometimes I combined a couple of pins together. Thankfully, I found some Magnetic Flux Solution, and then it was much easier to solder the board.

Robot Sketchup

After Soldering

IR Sensor

The next baord which I milled was obviously the IR sensor board, which I want to use in my project. I found the reference board on Sparkfun and then created a relatively same board for my own project. This board requires QRE1113 IR reflectance sensor. This sensor can read the IR reflective value.

Robot Sketchup

IR Reflectance Sensor

IR Reflecance sensor, well due to its smaller size, it was a little difficult to mill and solder.

Robot Sketchup

IR Reflectance Sensor Soldered

Motor Driving Circuit for Arduino Leonardo

After my previous motor driving circuit didn't worked so this time I thought to work in separate parts, and I chose the motor driving circuit to make it separate from my microcontroller.

Robot Sketchup

Motor Driving Circuit

Robot Sketchup

Motor Driving Circuit Soldered

Robot Sketchup

Power Controller Board

Robot Sketchup

Power Controller Board Soldered

Files available to download

I was focusing on multiple parts which can be 3D printed, so I went to make the auxillary parts like wheels and ballcaster based on 3D print.

I started off with working on Fusion 360 as I had best hands on practice on this one.

Robot Sketchup

3D Wheel Design Outlines

Robot Sketchup

After Applying 360 Revolve

Robot Sketchup

Decorating wheel with removing the extra parts and only retaining supports

Robot Sketchup

Making Axle Motor Support Place

Robot Sketchup

Body for holding the model together and PCB

Robot Sketchup

Complete Body with Ballcaster attached as well

After the models were ready I went for the 3D printing, I started off with the printing of the wheels, and the results quite better than even expected.

Robot Sketchup

3D Printed Wheels

Files available to download

I have designed the model for the lasercut in Rhino to cut, well the process of lasercutting is same which I explained in Laser Cutting Assignment, I just made one file and then sent them for the cut

Robot Sketchup

Laser Cut Model

LaserCut Process

Robot Sketchup

Laser Cut Result

List of parts of lasercut needed for project

Files available to download

For coding part I searched internet and found a relatively good help from here

I used 7 Line Reflectance sensors to read the output of the color of the line. It was a basically a little tricky. I have total 7 pins so the number of possible combos was also a little bigger.

I divided my sensors in 5 in front and 2 at the rear. Front sensors will help in finding the path and the rear sensors will help to remember the paths.

Here are the possible paths which my board can detect for a straight line. As I have used the black tape, its width was not bigger than to be detected by 2 sensors.

Robot Sketchup

Possible Paths

Robot Sketchup

LF Robots decision at different points of junctions

Then I created an array of the sensors in front to keep track of them

Robot Sketchup

Declaring the pins for the input

Robot Sketchup

Creating an array

This is the main code for solving the path and remembering them

void mazeSolve(void)
{
while (!status)
{
readLFSsensors();
switch (mode)
{
case NO_LINE:
motorStop();
goAndTurn (LEFT, 180);
recIntersection('B');
break;

case CONT_LINE:
runExtraInch();
readLFSsensors();
if (mode != CONT_LINE) {goAndTurn (LEFT, 90); recIntersection('L');} // or it is a "T" or "Cross"). In both cases, goes to LEFT
else mazeEnd();
break;

case RIGHT_TURN:
runExtraInch();
readLFSsensors();
if (mode == NO_LINE) {goAndTurn (RIGHT, 90); recIntersection('R');}
else recIntersection('S');
break;

case LEFT_TURN:
goAndTurn (LEFT, 90);
recIntersection('L');
break;

case FOLLOWING_LINE:
followingLine();
break;

}
}
}

Files available to download

I have already made the Project Development Plan here

I have done the networking part in Application Interface Assignment, I am refering the same work as I used the same thing in my project to on and off the car using bluetooth.

Well as I already have gotten all the components, now it was time to assemble all the parts.

Assebmling

Robot Sketchup

Final Look after complete assembling

After the assembling of parts now it was time of testing the movement.

Assebmling

After a few changes I finally made a working demo

Working Demo

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.