Sunday, September 18, 2011

Algorithms

This post conveys the formulas and algorithms that I went through before ending up at my current C program.  The first algorithm was purely math based and relied on some some very simple algorithms. 
Here was version 1:
        

Things learnt for this project

To complete my project, without outsourcing any of the work to anybody else, I would have to learn how to transfer the ideas in my head to rough algorithms. From these algorithms, in order to transfer this logic to an actual machine, I would have to use a computer language. Of course, there are steps to any complicated process so before jumping right into the language that exists on the final device, I had to learn a much simpler computer language. I decided to learn a computer language called "Scratch". This is a very intuitive, visual language that teaches the basics of logic in computer languages, without all the confusing syntax. With this software, I created a program called trilateration_1 that would calculate the device's current position using some formulas mentioned in another post. After somewhat mastering Scratch, I realized that this simple language wasn't advanced enough to put onto a physical robot. Since, at the time, I had no skill in such complicated robots, I got in touch with a professor at the Indian Institute of Science who then referred me to a PhD student who was working on something very similar. 
          This man, Kaushik Sonur was working on an industrial robot used by car manufacturing firms to transport parts from one place to another. His robot used a line following method in which the robot would follow a black tape all around the factory. The robotics came in when the robot encountered an obstacle. It would either wait for the obstacle to move, be moved, or if not either, would navigate around it. I thought he could help me on the obstacle avoidance part of the project which was absolutely essential to the project. 

Friday, September 16, 2011

Navigation

Previously, I mentioned how to find out where you are. That's only a small part of the whole challenge. The next step is to find out where you're going. If you don't know where you are going, you won't know which route to take. This part of the project will determine the shortest route (not including obstacle avoidance; next post). 
         First, the easiest thing to do is to is to represent everything on a graph. By putting things on a graph, you can more precise in terms of distances and direction plus, you can choose the degree of accuracy. 

Friday, September 9, 2011

Location Finding

For anything to know how to go somewhere, it has to know where it is. You won't be able to plot a route to the destination. For example, a GPS won't work if if it can't trilaterate its position on a map. This brings us to a word used in the previous sentence, trilaterate. This means to determine absolute or relative locations of points by measurement of distances, using the geometry of circles or spheres. 
This is a simple, graphical representation of trilateration. These are the steps that are used to find your place on, in this case, a graph:
  1. Find out the distance from each point B, C and D (known locations) and name these distances b, c and d.
  2. Use each point B, C and D as the center of a circle with respective radii b, c and d
  3. The coordinates of the point at which these three circles intersect is the coordinates of the device








Wednesday, September 7, 2011

Planning

As the steps mentioned earlier are no simple steps in terms of low-level programming, I decided , instead of jumping into creating a handheld device, I would create a robot that uses all the same technology as the final device, but has the ability to move on its own. This would help me concentrate on the most important parts, location finding and navigation. I wouldn't need to worry about the device-human interaction at all at this stage.
          Of course, even this robot is no simple task either so I made an even more detailed plan that revolved around the two key features mentioned earlier. The following post will talk about these two steps in more detail.

Introduction

My Project
Objective: To create a device that helps the visually handicapped navigate around their homes.
The following are the specifications the device must have:


  • It should be portable
  • it should be able to tell where in the house it is
  • it should plot the shortest route to an inputted destination
  • it should be able to avoid obstacles such as people and furniture
  • it should have some sort of mechanism to communicate with the user to efficiently and tell him/her how to navigate the house
Following these rules sounds simple but nothing could be harder than actual implementation