I'm pretty stumped on this one so I thought I might as well see if anyone has any ideas.
I am using Sun SPOTs, which are wireless sensor devices, much like the Berkeley motes. It has a STMicro LIS3L02AQ linear, three-axis accelerometer on it. I will use the SPOTs to control the movement of a iRobot Create.
What my prof wants us to do is to have one SPOT connected to the iRobot, and another SPOT in the hands of a user. When the user moves the SPOT in his hand, the SPOT communicates to the one on the iRobot and have the iRobot make the same movements. So the example he keeps talking about is if I were to hold a SPOT in my hand and move it around in a circle (roughly 2 foot diameter), the iRobot should mimic the movement by moving in a circle.
To get a distance, one can integrate the acceleration twice. And the professor said to do just that. However, there has been several discussions on the SunSpotWorld Forums and the conclusion (including from developers on the SunSPOT team) is that the A/D converter is 10-bit, and integrating the acceleration data twice has significant errors (drift) due to lack of precision.
We brought this up in class and he said just to play around with it and use a filter. Several people on the forums have done a lot of work with that, and in the end it just doesn't seem to be able to be done accurately enough. i.e. If you leave a SPOT sitting on a desk perfectly still, over say 10 seconds, the integration determines that the position of the SPOT has moved several feet.
So I guess my questions are:
1) What kind of filtering do I want to do with the x and y-axis acceleration data so that I can reduce the drift as much as possible after integrating twice to get position?
2) Or can I abandon the integrate twice for position thing and somehow use the absolute acceleration, relative acceleration, or tilt angle of the x,y,z axes to mimic the kind of movement I need to do (like move the SPOT in a circle and have the iRobot do the same thing)?
I am using Sun SPOTs, which are wireless sensor devices, much like the Berkeley motes. It has a STMicro LIS3L02AQ linear, three-axis accelerometer on it. I will use the SPOTs to control the movement of a iRobot Create.
What my prof wants us to do is to have one SPOT connected to the iRobot, and another SPOT in the hands of a user. When the user moves the SPOT in his hand, the SPOT communicates to the one on the iRobot and have the iRobot make the same movements. So the example he keeps talking about is if I were to hold a SPOT in my hand and move it around in a circle (roughly 2 foot diameter), the iRobot should mimic the movement by moving in a circle.
To get a distance, one can integrate the acceleration twice. And the professor said to do just that. However, there has been several discussions on the SunSpotWorld Forums and the conclusion (including from developers on the SunSPOT team) is that the A/D converter is 10-bit, and integrating the acceleration data twice has significant errors (drift) due to lack of precision.
We brought this up in class and he said just to play around with it and use a filter. Several people on the forums have done a lot of work with that, and in the end it just doesn't seem to be able to be done accurately enough. i.e. If you leave a SPOT sitting on a desk perfectly still, over say 10 seconds, the integration determines that the position of the SPOT has moved several feet.
So I guess my questions are:
1) What kind of filtering do I want to do with the x and y-axis acceleration data so that I can reduce the drift as much as possible after integrating twice to get position?
2) Or can I abandon the integrate twice for position thing and somehow use the absolute acceleration, relative acceleration, or tilt angle of the x,y,z axes to mimic the kind of movement I need to do (like move the SPOT in a circle and have the iRobot do the same thing)?