How do you do precision positioning

for a school project i'm making a robot that is connected via bluetooth to my pc and I need to have it's exact position and it has to be able to drive in a straight line.

Does anyone know what kind of sensor would be best to use and in what way it should be programmed??

exact position

if you search LMR (the search box is in the upper right of the page.) site for “wheel encoders” you will get many hits that will point you in the right direction.

wheel encoders are your only hope for a straight line.  “exact” position is real hard, (my GPS cant do it) but two other terms to search for are “dead reckoning” and “A*” (aka A star) that will lead you to navigation algorithms.

one other thing,  in the future please give more info when you ask a question.  you need to let us know about the bot.  let us know what kind of controller you are using, what  you are using to program it.  what type of motors and batteries and how many of each.  (i can almost guarantee you need bigger batteries.)  What is the task or contest you are trying to achieve and can you link to the rules?

good luck 

robotgoldfish

Ditto on robotgoldfish…

We kind of need more information to give good answers.  What is the definition of “exact”?  What is the hardware you have already?  What do you plan to use?  What is your expertise level and what languages do you feel comfortable in?  How much money can you (do you want to) spend?  How much time do you want to spend on a solution?  That will definitely drive the answer I give you.  You will undoubtedly want to use more than one method to calculate your position since each has flaws and won’t always give you very accurate info.

You can do stereoscopic cameras with OpenCV and use the difference in perspectives to decide where you are (there are examples of how to do this on the web, but still a big undertaking).  You can use homing beacons.  One approach I have used is to have multiple IR emitters on a beacon and have each one emit one after the other for a specific but differing amount of time.  If I pick up an IR signal, depending on how long it is on, I know roughly where I am in relation to the station.  I had one IR sensor in a small plastic tube so I could know when I was pointed directly at the beacon.  It worked quite well actually.

These guys have a solution that will give you supposedly accuracy to 2.5cm but pricey at $300 for one room.  

http://www.marvelmind.com/

What about using a Kinect?  You can buy used ones from Gamestop.com for $25.  You can use ROS with OpenNi and it will create a point map for you of the room you are in with a rough range of 15’.  You just need to integrate with whatever controller you are using to track the odometry and be able to give it commands.  You would also need a 12V power supply for it.  

There are lots of paths to the mountain top a number of which are not mentioned above.  More information please.

Regards,

Bill 

re: Precision Positioning

I know a lot of people like encoders on smooth and level floors with wheeled robots.  Another sensor to consider is a good compass.  I have been successful (In my opinion) at driving straight lines, over smooth or rougher surfaces, and over longer distances, using just a compass and passing minute steering adjustments to the drive system.

Encoders would be more precise over shorter distances and a very controlled environment, but I think there are advantages to a good compass (there are crappy ones) for not getting fooled.  Good to have both.  I compass will not get fooled by getting bumped, running over things, a loss in traction on one wheel, or some other issue.

Finding exact position (localization) is one of the most challenging and expensive issues in hobby robotics.  That’s why 99.9% of hobby robots can’t do it.  GPS will not work.  The other solutions range from $300+ for one room (like Bill mentioned) to around $1000 for optical systems that use markers on the ceiling.  I’m surprised they are tackling this issue in a class.

Everything depends on the environment.  If it is a simple room that is empty and doesn’t have other robots or people moving around in it, the simpliest and cheapest way might be to use a compass and a Sharp IR distance sensor.  If the robot has an internal map of the room, it can figure out where it is by making a few distance measurements on 2 or more precise directions and doing a little trig with its map to figure out where it is.

One way if this is a small room is to put 1 or more cams on the ceiling and put a unique color marker on the bot.  This can obviously start to get expensive.  Using OpenCV, you can locate the marker within its view and calculate position.  Lighting can screw with this technique bigtime.

If your bot will have a camera (and a compass to know precise heading), if you have some unique color markers at particular points on the ceiling or walls, you can locate 2 of them with OpenCV.  With a lot of trig, you could locate the bot, maybe within a few inches.  It would take a lot of time and money, but it can be done.  I did it with Word markers on the walls and OCR once and posted about it if you want to watch.

Love to see what you end up doing,

Martin

Good Compass

I seem to have some “not too good” digital compasses.  Can you recomend any that are somewhat imune to tilt and effects of nearby motors?

 

 

re: Compass

I will not pretend to be an expert, only to say that I was quite happy with the model I chose for my purposes…looking in a precise direction, driving in a precise direction, holding a straight line while driving, rotating to a particular heading, and slowing/stopping the bot to avoid turning over due to excess roll/pitch.  I also got the head to be compass stabilized so that it would remain pointing on a heading as the robot pitched and rolled.

I use the CMPS10.  It gives heading, pitch, and roll.  It was about 3 years ago that I bought mine.

If the robot rotates rapidly, it seems to take about a half second to a second for it to stabilize again.  This was fine for me, if you wanted something better, you could use a gyro (or encoders) in the short term (<1 Sec) when accuracy is needed during sharp movements or for precise rotations, and use the compass beyond that.  Gyros drift over longer time frames.

In my bot Anna, the compass is probably about 2.5-3 inches forward and slightly higher than the motors.  It is about 1.5-2 inches above the motor controller.  There are many wires all around it for sonars and other things.

Before buying the CMPS10, I tried using the compass that was inside the Motorola Bionic phone.  The phone was well away from any other components at the time.  The results were completely unacceptable…often off by 50 degrees or more.

I have seen people write about other compass modules that are a lot cheaper but I have no first-hand experience with them.