Shop OBEX P1 Docs P2 Docs Learn Events
Robot With Sensor Noise Filtering — Parallax Forums

Robot With Sensor Noise Filtering

JPGJPG Posts: 7
edited 2011-08-27 15:56 in Robotics
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.

Comments

  • alex123alex123 Posts: 102
    edited 2011-08-24 12:41
    Why don't you send a raw data about the distance measurements from the robot back to a host computer and process it there. This way you have all the processing power and memory in the world.
  • JPGJPG Posts: 7
    edited 2011-08-25 09:13
    You're talking about gathering all the data first, then reporting back to a computer, right? That method would work, but I'm still planning on collecting a LOT of data, and I'm not entirely convinced that the BS2's memory would even work for just a container. I haven't used Ping sensors before -- would I be able to store each data point in EEPROM as a single byte?

    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.
  • alex123alex123 Posts: 102
    edited 2011-08-26 12:28
    Yes, I was talking about gathering the data and sending it back to a laptop for processing. No tethering. Using ZigBee or a WiFi module would be perfect for this. In this case you need only a minial storage on the robot.
    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).
  • prof_brainoprof_braino Posts: 4,313
    edited 2011-08-26 15:12
    You could also try using an android phone like the nasa people in android phone bridge thread from earlier this month

    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.
  • JPGJPG Posts: 7
    edited 2011-08-27 15:56
    Thanks for the info, everybody! I should mention that the budget on this project is almost as minimal as my experience, so there are going to be some things that I'd like to do that I probably won't be able to. The android phone idea is very interesting, but unfortunately I think it, and likely the SBC idea, both fall into this category.

    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?
Sign In or Register to comment.