Obstacle avoidance with an UGV -HELP PLEASE-

Do a search on "robomagellan" for background material on GPS and
outdoors travel.

So the whole reason I started this project was for a program in my high school called the Authentic Science Research Program. I'm not sure if you've heard of it or not--we apply to the Intel talent search senior year. I'm currently a junior. Currently, I want to do a study on something in the robotics category, but it looks like I'm going to study obstacle avoidance. Does anyone have any ideas for a research topic for me? I need some sort of "question" that hasn't been answered or something that has never been done before. Maybe create a new obstacle avoidance method, I'm not sure---but any ideas?

For algorithms, consider using a Braitenberg "algorithm" for you avoidance mechanism. This works well as a "background" always on behaviour.

Also consider Potential fields - might work better with your multiple sonar setup:

http://www.cs.mcgill.ca/~hsafad/robotics/index.html

I've seen the potential field method before, and it seems to have its various drawbacks. Maybe improving one of these methods might make a good research topic.......also, would I have to use interrupts to make the GPS tell the car to go from point "a" to "b" and have the car avoid obstacles along the way?

also, would I have to use interrupts to make the GPS tell the car to go from point "a" to "b" and have the car avoid obstacles along the way?

Do you understand what interrupts are? A ringing phone is an interrupt. It occurs at random times, needs pretty much immediate attention, and is externally caused. Which of those attributes applies to you (not the the GPS) telling the car to go from point a to point b? How will you define point b? All the the GPS does is tell the car where it currently is. It still needs to figure out where point b is in relationship to where it is now, and make the appropriate turn(s) to move in the direction of point b, until "here" is point b.

For background on pathfinding, look up the A* Algorithm.

something that has never been done before.

Good luck. Do you know how many grad students there have been at MIT and CMU
trying everything and its cousins in regards robotics. Zillions upon zillions.

OTOH, to me, to a large extent robotics bogged down in the 90s, when a lot of people
started using subsumption and really went nowheres. AI-robotics kind of stalled, although
there have been some "minor" advances in the 2000s. For many years, people in robotics
clubs did little more than build line-followers and mini-sumos. At least robot soccer and
robomagellan were a huge step up.

If you're interested in following up robotics in your future education, learn AI and apply it
to robotics. There are too many dumb robots around.

PaulS:
Do you understand what interrupts are? A ringing phone is an interrupt. It occurs at random times, needs pretty much immediate attention, and is externally caused. Which of those attributes applies to you (not the the GPS) telling the car to go from point a to point b? How will you define point b? All the the GPS does is tell the car where it currently is. It still needs to figure out where point b is in relationship to where it is now, and make the appropriate turn(s) to move in the direction of point b, until "here" is point b.

Yes, I understand interrupts and I created a program which was originally going to use interrupts for the car, but stopped because I needed the algorithm and GPS code first. I thought I would have to use interrupts to constantly check the IR sensors, and when they detect something within a certain range, avoid the obstacle, then get back on course. Point a is the starting location and point b is the goal location. I didn't mean use interrupts in the GPS literally---maybe my wording is just bad.......but I thought in order to read from sensors and go to a place, I would need interrupts. Does this still hold true?

oric_dan(333):
If you're interested in following up robotics in your future education, learn AI and apply it
to robotics. There are too many dumb robots around.

I'm sorry but just for clarification AI is artificial intelligence right? Just want to make sure---and what exactly would it do for robots? I'm not fully understanding what you mean.... :-/

but I thought in order to read from sensors and go to a place, I would need interrupts. Does this still hold true?

I don't think so. If the car/robot/UGV is moving at 60 mph, you might. At more reasonable speeds, polling is usually good enough.

So just run through a loop of checking GPS data, updating servo, check IR sensors(in a while loop), and if there is a "problem" (ie--obstacle in the way) avoid the obstacle, then go back to the gps?

I'm not fully understanding what you mean

AI is about intelligence. Most robots are not very intelligent.

oric_dan(333):

I'm not fully understanding what you mean

AI is about intelligence. Most robots are not very intelligent.

Actually, AI today seems to be more focused on statistics and probabilities than anything else.

For the OP: If you are serious about this project, you'll want to take a few online (but free) classes. They will teach you a lot; also - if your knowledge/understanding of probabilities, statistics, and linear algebra is lacking, you'll want to brush up on those, first - ask me how I know...

Anyhow - here are the classes:

Free Intro Statistics Course | Free Courses | Udacity - Intro to Stats
Introduction to Artificial Intelligence | Free Courses | Udacity - Intro to AI
Artificial Intelligence for Robotics | Free Courses | Udacity - AI for Robotics
https://www.coursera.org/course/ml - Machine Learning

You might also check out some of the other offerings; there are many other classes which could be beneficial from a robotics and AI/ML standpoint.

The "CS271 - Intro to AI" is a recent addition to Udacity's lineup; it was only recently announced. It, along with the Machine Learning course from Coursera, were the two original "free online" courses brought out by Stanford last fall/winter of 2011. I took both, but I ended up having to drop out of the AI class about halfway through due to personal issues related to my employment. I went on to complete the ML class, then earlier this year (spring 2012) I took the "CS373 - AI for Robotics" class from Udacity (Coursera and Udacity both were spinoffs that grew out of those original two Stanford classes; this was done so as not to dilute the Stanford brand and recognition, while being able to bring more courses and such to a wider audience).

I found the CS373 class to be very challenging - you basically learn enough in it to "build" (well, program) a simplified version of a self-driving, path-planning robotic vehicle, much like Google's self-driving car (take a guess as to who Prof Sebastian Thrun is, and what his relationship is to robotics and Google's car)...

The "Intro to AI" and "Machine Learning" courses are more generalized; geared toward a broad overview and application of AI/ML algorithms to computing problems in general - but I found them very interesting, and one guy in the ML course created this based on his learning and study:

http://blog.davidsingleton.org/nnrccar

...so you can see that all of these courses have application and knowledge which can transfer to robotics, path-planning, navigation, etc.

I'm personally glad that Udacity brought back the "Intro to AI" course; many people were wanting it back, and when I had to drop out, it was during a very difficult time for me, and I hated having to do it. I intend to go back and take the course again, as I found it very instructive and informative (and it wasn't easy, either - I'm also going to take that intro to stats course as well - if there is one thing these courses have taught me, it's that I am very lacking in my understanding of statistics and probabilities, and understanding of both are needed for modern AI/ML algorithm implementations).

Oh - one other thing - that CS373 course offers one of the best explanations of the PID algorithm I have ever seen; you go from zero understanding of PID, to implementing the P, then the D, then the I (they do it this way to prove a point about the algorithm) - and having a real solid understanding of it at the end. The coding was done in Python (whereas the coding for the ML class was done in Octave/MatLab - which is a very cool language all on its own, but takes a bit to wrap your head around the primitives of vectors and matrices - but once you understand how to vectorize an algorithm, the possibility of immense processing power understanding is unleashed; if only I had access to a Beowulf cluster, or a nVidia Tesla machine!)...

]Might be a bit much for one sitting.
OP is 16-YO.

oric_dan(333):
]Might be a bit much for one sitting.
OP is 16-YO.

Perhaps, but that CS373 course is excellent. Even if the OP doesn't take it all in on the first sitting, it's worth doing because it'll be an eye opener on just how hard the problem domain is.

I looked at the course with Sebastian Thrun recently, and I'll look into them in the future. So if I understand, A robot has artificial intelligence if bases its movements on probability, as well as the real world interface and sensing? And I would also assume that it is programmed to react to every possible scenario that could ever happen--am I correct?

So if I understand, A robot has artificial intelligence if bases its movements on probability, as well as the real world interface and sensing? And I would also assume that it is programmed to react to every possible scenario that could ever happen--am I correct?

Well, this is a little optimistic. Thrun wrote a book called Probabilistic Robotics, and his
robot driving course material comes straight out of this book [except for the Python
programming stuff]. He believes the best way to interpret sensor data is probabilistically.

Also, one of the prime areas of AI research is currently in Bayesian Networks, which are
also a probabilistic fabrication. However, there are many many many other methodologies
at use in AI, which would be covered in an introductory course.

Also, the idea of "react to every possible scenario" is a deeply philosophical question, that
has been discussed for decades. Practically speaking, most AI systems function in a
relatively limited domain, and would fail immediately if loosed upon the world in general.
Even humans cannot deal with every possible scenario very well, so it might be a while
before AI systems and robots are able to.

Well, I have to say thanks to everyone for the help, and I'm going to start a new post today about working the GPS and compass together into the robot to make it go to specific waypoints--Hope to see you all there!

sora628:
I looked at the course with Sebastian Thrun recently, and I'll look into them in the future.

If, as another has stated, you are really only 16 years old, you will likely -not- want to jump into the Udacity CS373 course on first go; I would say do the courses in roughly the order I placed them in (although I would place the machine learning one from Coursera at the same level or slightly below that of the CS271 course from Udacity).

If you don't have at least a good basic level of understanding of probability and statistics, you will get lost very quickly. I found that out myself when I took the ML course and the CS373 course; I had to do some remedial cramming over at the Khan Academy (highly recommended, btw) to brush up on those skills. You'll also want a good base level of understanding of linear algebra, and vector/matrix math.

I don't know what your level of understanding is on any of these; I know when I was your age (a couple of decades ago), such concepts were given fairly short amounts of time for learning, then on to the next thing (IIRC, the vector/matrix stuff was taught far more than the other topics). Your experience might be different.

sora628:
So if I understand, A robot has artificial intelligence if bases its movements on probability, as well as the real world interface and sensing?

No - the basic concepts behind probabilistic robotics is that a robot can't know where it is in an environment until it takes a measurement, and when it does, it can't trust that measurement implicitly, because all sensors have an range of error. Also - if you set a robot down in an unknown environment, and it takes a measurement of it's environment, that doesn't give it much knowledge about where it is at in the environment. It must "move" in some manner, and take another measurement. Of course, this movement may not be exact either (it has it's own error range) - so that has to be taken into account as well. On the second measurement, though, it can then compare what it has to what was measured before, and thus build up a "confidence map" of where it is located in the environment. Do this kind of thing over and over, and you ultimately can build a map of the environment (to a certain level of confidence - it will /never/ be exact, but merely a good model/interpretation) and know (again, to a certain level of confidence) where in that environment the robot is located.

That is the basic idea behind the concept of SLAM (Simultaneous Localization And Mapping) - see this wikipedia article (and also check the link to "SLAM for Dummies" in the external links):

...it should be noted that SLAM is a problem far from being solved. Professor Thrun makes this point several times in the Udacity CS373 course (though looking at how well the Google self-driving car handles, you would think it was!)...

sora628:
And I would also assume that it is programmed to react to every possible scenario that could ever happen--am I correct?

That's the point behind probabilistic robotics - you /can't/ program a robot to react to every possible scenario. Instead, through using various machine learning algorithms (it should also be noted that you can't just "pick one" and stick with it - real robots using PR systems utilize many/multiple systems in a collaborative fashion - sometimes even these are linked in a probabilistic fashion so that one system can't always override another), you can (hopefully) give the robot enough tools to sense and learn about the environment on the fly, and come up with solutions to unique or novel situations that present themselves, on the fly.

Thanks cr0sh!