The A.S.R.B.

About your waypoint program

Cool project, and quite ambitious!.

Waypoint task is kind of a bit complicated project. I’m working on the same project but with my fonera quadrocopter. I’m afraid that you will need a minimum of a 3 axis accelerometer into your set of sensors, and ideally a complete IMU (gyroscope, accel, and magnetometer). Why? because GPS is a noise pain!!. While your rover stays quiet, your GPS will report a random set of positions, around 10m more or less, depending of your receiver, and will make your rover to move erratic without sense.

You will need a sensor that takes into account small changes of acceleration, integrate them to obtain speed, and integrate them again to obtain distance. Then, you use the compass to know in which course is this distance travelled. Google about personal pedometers and IMU sensing (there is A WORLD around this, so continue posting your doubts and questions here).

Once you have this, you will need to combine those reads to GPS to correct the small errors generated by IMU drift, and you will have a smoot information about rover position.

Maybe if you don’t want to deal with those complex calculations and if you have some money you could try http://store.diydrones.com/ArduIMU_V3_p/kt-arduimu-30.htm

 

At this point you have almost real position of your rover, then you need some of the PID control theory.

**Haha glad you like it!! **

Haha glad you like it!!  The GPS I am using is accurate to 2-3 meters, and the data is quite accurate.  I’m thinking of getting an encoder, and I have an 3 axis accelerometer (on hand, just not on the robot).  There is also a compass (not sure if you saw that or not).   I’m not looking for centimeter accuracy, just something to get me to be within 2-3 meters of some set coordinates.  If I really wanted super precision, I think i’d look into GPS differential and set up a second GPS and communicate with the first using two Xbee’s 

 

I just recieved my Xbee’s by the way, so stand by for either a tutorial soon or and update on the robot!

I get your point.

I get your point.
But regardless of your accuracy requeriments, (that is true that you don’t need too much accuracy), there is a problem about noise.


You turn on your rover, and without setting any new waypoint, the rover will move to the next GPS reported position. In the best case, asuming your GPS has a very good signal and WAAS activated, the error will be 2 to 3m, and that will be the diameter where your rover will move crazy.


Maybe you don’t need a complete imu if your average A LOT your GPS readings in order to filter the noise, and you tune your PID control to react accordingly to the slow response of your readings.

EDIT:

MMM your encoders can be very useful if you assume that wheels will not drift. Maybe you can calculate distance and course travelled with encoders and compass, and filter them with gps to cancel signal drift. Could work, if you take the most important part of the signal from encoders and only gps to correct drift with a complementary filter.

EDIT2:

Notice that without complete imu, that solution only will work on flat surfaces. Any unleveled terrain will mess up your compass readings.

Don’t forget to add or subtract the magnetic declination of your zone from the reported compass angle too, in order to obtain angle to geographical north instead of magnetic north

GPS Accuracy

I’m not sure what we’re referring to here with GPS “Noise”, but there are a few things about GPS that I do know and that are applicable here:

1) GPS Accuracy to 2-3 meters: This is really based on the time of day and the position of sattelites in orbit.  So if you have a point on the earth that you absolutely know the coordinates to (have a surveyor come and mark it perhaps), then you may be off that location by up to 2-3 meters.  However, the distance and direction that you are off this location stays set, it doesn’t move around, so if your GPS thinks the location is actually 1 meter to the left of your survey point, that is where it thinks it precisely is, and this doesn’t change (except very slightly as satellites move through orbit).

2) GPS Accuracy error is the same for all GPS devices in the same area.  So trying to use two GPS receivers and splitting the difference between the two will not work.  If a GPS thinks a point is a meter or two off of where it actually should be, then any other nearby GPS receivers will be talking to the same satellites and have the same data.

3) Regardless of the method of position location, you can remove the “moving around like crazy” part through the way you program your robot.  You should just code it so that when the robot “arrives” at a location it stops its “navigate to” function.  If we’re afraid that it will never get to exactly the point that its trying to reach, then make it “arrive” when it gets within a certain distance of its target.

Do you have exactly the same

Do you have exactly the same gps values for a single position over and over again?

With noise I mean that if you stay motionless, your GPS will not report exactly the same position. Those error is called “noise”. This can be a problem specially when you are near of your target, but not arrived yet. You can receive a “in-target-position” reading, and “not-in-target-position” gps read, even if you are in the right course. This is a problem, because your rover will turn crazy

What about GPS

What about GPS differential?  I plan on using GPS differential on my next revision (whenever that may be) but isn’t that using two GPS systems?  one stationary and one moving?  Or am I wrong?  And an easy way to get rid of the noise is indeed to take in a lot of data and get rid of all of the outliers, but the GPS won’t be giving me the course direction–that’s what the digital compass is for–therefore, shouldn’t its movements be less erratic?