# Primitive navigation system

In my spare time I've decided to create something on my own. I've never designed difficult things, but I'm very curious, moreover experience would never be useless ;) I decided to create a robot, but I want to do this from 0: schematic, programming to do this the way I want. And the important one: I want it to be autonomous as more as possible (self charging, path finding - some kind of intellectual robot).

I have experience with MCUs and simple logic devices, so I can imagine, which way should robot move, which way I could control it etc. But to achieve desired autonomy at first I should create a way to interact with it (autonomy dictates - radio transmitter-receiver) and some kind of navigation system. Well, this is my way of thinking and I think so. So for now my question is: which ways is it possible to track movements of a robot, current position and what accuracy is achievable?

Broadly used radio-location is useless here because I have no intentions to measure distances about km (really centimetres and meters - in my room). GPS is useless too as signal is lost in-door.

I was thinking about to use servomotors and count ticks(!), but it is not so reliable as wants to be (robot could rotate wheels, but not move).

I was thinking about GPS in miniature: putting several antennae and measure distances (this is just an idea, which may be either nonsense or unrealisable).

Recently I found inertial navigation system (INS) article on wikipedia, but I'm confused with integral error rate. Wiki states error level expected is to be approximately 650m, which is no good at all.

Did anyone deal with similar problems? If someone could tell me practically obtained accuracy values for different navigation systems or some concepts, ideas or even papers concerning that?

I repeat once again - no industrial realisations, I want to do this on my own with available elements, costing reasonable money.

An INS will suffer from errors due to accelerometer drift. Using a Kalman filter along with better and more accurate Giros will help this situation greatly. Basically doing the maths means better accuracy giros can compensate for not so great accelerometers. You can always add some extra sensors such as magentometer and this will give you another input into your system, once again it will help reduce drift errors.

Wheel encoders are great, provided you do not suffer from slippage. As soon as a wheel slips you will get innaccurate readings.

Another method (as used on mars pathfinders!) is to use optical systems. Two cameras, one processor, and some algorithms and you will be able to accurately and reliably calculate distance travelled! This is easier to implement if you have lots of easily identified static items around the room for the algorithm to pickup on.

You could also instrument your room! this means you could place RF, magnetic, or white lines around the room and use an appropriate sensor and use them for navigation!

Another method is to use simple ultrasonic sensors (reverse parking sensors anyone?) these will aide collision avoidance! fuse them with INS sensors and magnetometer and you will far more accurate position tracking system. Or use them on their own and avoid hitting stuff!!!!

• Thanks for idea with Kalman filter. Wikipedia has an example application with truck - looks interesting. And yes, it seems to me, that INS on it's own wouldn't be enough. What about visual pathfinding... Hmmm I think it would be too expensive in terms of CPU cost and programming time ;) And instrumenting my room breaks autonomity - bad choice. Oct 26, 2010 at 18:29
• analog devices have these six dof imu units available. analog.com/en/mems/imu/adis16367/products/product.html. We have used them on a project at work a few years back, there are ok, best used with the inbuilt filtering and low data rate output. You can of course, if you are game, take the raw data out and filter it your self. Either way it provides your main sensors in one unit with SPI output which is handy. Oct 26, 2010 at 22:25

You could use some kind of beacons in the room. For example, IR beacons, radio beacons or maybe even sonic beacons. If you can estimate the distance to your robot from three beacons (and you only need to estimate, you don't need to know the exact position) you can apply simple trigonometry to figure out your position. This has the advantage that errors do not accumulate.

INS systems are not very useful except for short runs. For example, assume you have an accelerometer has an offset of +0.1%, that is, its measurements are all 0.1% greater than they should be (which would be a top spec accelerometer) and your robot runs for 30 minutes taking five samples per second, it would lead to an overall position error of +8066%.

Don't forget about simple methods: ultrasound distance measuring. You can build up a map of the room or area and then fine-tune it as you move around. Also consider using angular rate sensors to measure turning as well as accelerometers to measure linear movement. Do look up Kalman filters as mentioned before. You can combine all of these measurements into one reading with kalman filters and improve your consistency (not necessarily accuracy).

• Yes, that's obvious. Moreover I think, that it would be good to make robot discover the worlds' bounds with sensors and approximate data from accelerometer and gyro at first, but later, having defined world's bounds, it could find out the error constant and the real coordinates using sensors and INS simultaneously - some kind of calibration. Oct 26, 2010 at 18:40

The cheapest, simplest approach dead reckoning. This is where you use knowledge about your heading and speed to calculate your position.

Two popular methods are:

• Wheel encoders - measuring the rotation of wheels to calculate distance travelled
• Inertial Measurement - using accelerometers to calculate position

If you try to determine your position from on-board sensors that integrate the movement that can be measured, you have a dead reckoning system. The major weakness with dead reckoning is that the errors in your measurements accumulate and as time goes by your estimate of where you are becomes less and less accurate.

You could mitigate this somewhat by placing things in the robot's environment that represent known positions. For example, if your dead reckoning system works well enough to get your robot through a mission and back to a charging station, you can reset your position information to the known position of the charging station when you get there.

As for alternatives to dead reckoning, (and this is purely speculation as I've never tried it or seen it done) it seems like it ought to be possible to have a stationary system set up in the room that does with the robot the same thing that head-tracking software does. In other words, an off-board computer with a couple of cameras could triangulate on your robot, derive its position, and relay this information to your robot over your wireless link. With this kind of setup, position error wouldn't accumulate, it would just be whatever you get from the tracking system.

• Stationary set-ups are bad because I do not want to support my robot in his movements (in anything!), well at least the less help from me - the better :) Oct 26, 2010 at 18:43