Robot With Sensor Noise Filtering
I'm starting a project for school that is going to be based around a map-making robot idea. The plan right now is to outfit a boe-bot with a single range-finding sensor of some kind, then rotate the sensor and collect a lot of data about the robot's surroundings. The data will then be fed into a noise filter to get final estimates that will hopefully be close to the true distance values. If I make it that far, I'll also look into moving the robot and taking new measurements from a new position to increase the accuracy of the map.
The experiment itself will be to try different noise-filtering strategies to see what works the best. I'm still very much a beginner at robotics, though, so I'm not sure about the feasibility of parts of this:
-I'm going to need a lot of matrix math, so I was planning on using a Javelin stamp to take advantage of java's 2d array capability, which I'm already a little bit familiar with. However, I don't know if this is the right way to go or not... would a different stamp work better? All I know right now is that the BS2 that came with the kit doesn't have enough variable storage for the experiment I have in mind.
- I want a range finder that gives me a reasonably accurate reading, but since the experiment is concerned with reducing noise, I also really need something that will give me data with an appreciable amount of noise for me to filter out. Basically, I want good accuracy with less-good precision. I'm thinking of a PING ultrasonic sensor, but I haven't used one before and I don't know if it would fit my needs well.
I'd appreciate any advice on the best way to proceed with this project.
The experiment itself will be to try different noise-filtering strategies to see what works the best. I'm still very much a beginner at robotics, though, so I'm not sure about the feasibility of parts of this:
-I'm going to need a lot of matrix math, so I was planning on using a Javelin stamp to take advantage of java's 2d array capability, which I'm already a little bit familiar with. However, I don't know if this is the right way to go or not... would a different stamp work better? All I know right now is that the BS2 that came with the kit doesn't have enough variable storage for the experiment I have in mind.
- I want a range finder that gives me a reasonably accurate reading, but since the experiment is concerned with reducing noise, I also really need something that will give me data with an appreciable amount of noise for me to filter out. Basically, I want good accuracy with less-good precision. I'm thinking of a PING ultrasonic sensor, but I haven't used one before and I don't know if it would fit my needs well.
I'd appreciate any advice on the best way to proceed with this project.
Comments
If you meant that I should relay each reading back to a computer as it is taken, I'd rather stay away from that if possible, because I hope to have this robot moving around at some point and a bot that was tethered to a computer would cause complications.
Another thing to consider is that this project is going to be judged at some point, and I think it might be more impressive to have a robot that can filter noise out of data than it would be to have a robot that just collects data to be processed by a computer. Somehow it seems a little bit closer to a real world application to have a robot that analyzes its own readings.
My thought was that you want to visualize what your robot 'sees' with the Ping sensor. A large LCD screen would be nice for some simple 3D graphics. The Ping would be sitting on a revolving turret and sending several distance measurements for every revolution. An ideal thing would be to use a stepper motor for that and synchronize the rotation with the Ping measurements. Since the Ping needs power and 1 control pin it'd be easier to rotate the turret left and right instead of a full rotation.
Once you develop the code on your laptop (in Visual Studio for example) you can use a Single Board Computer (SBC) with a SSD to run your Wiondows (or any other OS) application. I used an SBC that was only slightly bigger than a credit card. Just a thought.
Keep in mind that the Ping can measure distances up to 3 meters only (~10ft).
http://www.youtube.com/watch?v=SKszVbnOOb4
The phone provides communication, some storage, and some processing abilities. The base PC does all the heavy crunching. Since it uses the cellular network, you can map any location that has cell coverage.
After quickly reading through the link erco provided, which looks almost exactly the way that I envisioned collecting my raw data, it seems to me that the largest source of inaccuracy in the eventual map comes from the Ping's relatively large detection area (I read somewhere that it picks up objects in something like a 40 degree range). Originally, I was expecting to get a bunch of distance measurements, then process those to approximate the actual distance at each sensor heading. Now, though, it looks like that won't help my map nearly as much as just finding a way to throw out the readings that are exaggerating the actual width of the objects being detected.
Is there still an experiment in this, or am I just going to end up with a mapmaking demo?