Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Positioning system based on accelerometer sensor

Status
Not open for further replies.

AlexBaraba

Junior Member level 1
Junior Member level 1
Joined
Apr 3, 2008
Messages
19
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,283
Activity points
1,403
Hi all,
I am developing positioning system using dual axis accelerometer sensor. I need help with physics calculations that i will implement. This system will be mounted on our robot device. Robot will move only in ground plane so i think sensor with two axes will be enough.

Idea so far :
position sensor inside robot to match y axis of sensor with forward moving direction of robot.
if I have readings on y axis that is acceleration in foreward direction. Is this true ?
if I have readings on x axis that is acceleration caused by rotating of robot. is this true ?

what calculations are correct for finding position ?
 

To get it work, oou need the following:
- Continous reading of the acceleration, as often as possible because acceleration is not likely to be constant.
- An extreme precise accelerometer. I guess you cannot make use of a crash detector.
- Some other method to measure the speed/position. That is, you canot be sure that your readings is always correct.

End then to the math: The position is the acceleration integrated two times. That is - you must know the starting position and speed.

Let us say that you measure tha acceleration each tousand of a second (you have to know this time to calculate anyting at all - exept for the acelleration itself). For each measurment/sample, either or both of speed or acceleration have changed. Let say that the acceleration doesn't change very rapidly - then you should be able to calculate position (on one axis) this way:
∑ ( V0×t + ½×g×t² )
Where V0 is the speed from your last reading.

That means that you also need to calculate the speed betweens each reading from zero time, using formula:
V = V0 + g×t


What kind of environomet wil it be used in? Underwater, air, road, space?
 

    AlexBaraba

    Points: 2
    Helpful Answer Positive Rating
Hi Prototyp_V1.0

I am using ADIS16201 sensor. It have resolution of 0.5 mg, and i am planing to read sensor on 1 KHz interval.

system will be integrated in robot that will move on table(playing ground) with fixed dimensions. table is flat and in room environment.

Robot movement will cause rotation of entire construction, and sensor readings must be recalculated acording to new angle. how to do that ?

This is what i was thinking :
We have time constant of 1 ms - interval between sensor readings.

velocity_increment = raw_sensor_data * 1ms;
velocity += velocity_increment;
position += velocity * 1ms;

But this solution is only for situations where sensor angle would not change in time.
 

Assuming initial zero speed, you get 0.25 m position uncertainty after 10 seconds from 0.5 mg. That's a lot.
 

    AlexBaraba

    Points: 2
    Helpful Answer Positive Rating
Is there any way to reduce cumulative error ?
 

AlexBaraba said:
Is there any way to reduce cumulative error ?
I'm afraid not.

The idea behind integration (the matematicks behind the position/speed/acceleration formulas) is based upon a time interval goes towards zeero. That means in practice, it would be a impossible problem to solve. As FvM says; you will come prety close, but over time, the total error wil increase.

And, on a table having a robot to move around maybe within an area of a couple of square meters, the robot will pretty soon "loose control" of it's position.

A better way this can be achievet -i guess- is to monitor the robot from a camera in the sealing, using software to analyze the movement of the robot.
Another way is to have tree different light sources near the table and supply the robot with sensors that can measure the angle between the tree sources (if such kind of sensors exists). In theory, it should not be too hard to calculate the position on the board.

AlexBaraba said:
Hi Prototyp_V1.0
I am using ADIS16201 sensor. It have resolution of 0.5 mg ...
What measurement is "mg"? I've always used european units. What is it in "Meters/second²" ?
 

this would be an ideal solution if sensor could give me information that is accurate enough.
Difficulity with other solutions is that there is no complete product on the market for positioning. You have different type of emiters and receivers (to skip the details) which are 4 hardware steps from complete system. And that is a lot of investment in hardware developement.

mg == 0.001 * 9.81 [meters/second^2]
 

If I use other way in determing current angle, there is no use of second axis readings from my sensor. I can just use acceleration read from forward direction oriented axis.

Is there some way that I can calculate angle from data i get out of acceleration sensor ?
 

AlexBaraba,
I'm assuming that
1. the accelerometers are mounted to the robot, and not a stabilized platform.
.
2 You want to calculate the robot position with respect to the earth.
If this is the case, then you must calculate the direction of the robot after each iteration. Assume that the robot is initially pointed East, and we assume the intial position is zero. Let Ax, Ay be the forward and lateral accelerations. Then after the first iteration, the new East coordinate will be E=0 + .5Axt^2. The new North coordinate will be N=0 + .5Ayt^2. The new angle will be Theta =ATan(N/E). After the second iteration the new East coordinate is calculated by E = E + [.5Axt^2]Cos(Theta). The new North cordinate will be N = N + [.5Ayt^2]Sin(Theta). You would continue to calculate Theta, E, N for each succesive iteration.
.
As a practical matter, this scheme works only if you have a way of updating the position periodically from an external source, since practical accelerometers always have biases that will result in the position calculations drifting with time.
Regards,
Kral
 

    AlexBaraba

    Points: 2
    Helpful Answer Positive Rating
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top