A Calculating Distance from Hand Movements in Surgical Procedures

Ian Bloomfield
Messages
4
Reaction score
0
I'm a surgeon, maths and physics study was a long time ago. I have been working on a project using an accelerometer and gyroscope.to.monitor hand movements during practice procedures.

I thought to represent my 3 axis acceleration as a vector and then subtract from this 1g, to compensate for gravity effect.

What I then have is an acceleration vector Avery 20ms, assuming my starting velocity is 0. How may I calculate an approximate distance traveled if that is possible?
Most equations assume a static acceleration. I presume the formula would start with vi as 0 then calculate next vt and distance. That vt then becomes the new vi? Or is there a simpler method looking at area under curve?

I happy with myself for learning Euler's and establishing my accelerometer and gyro complimentary filter. I not sure how to establish this data or if it is possible with what I have?

Thanks for any help.

Ian
 
Mathematics news on Phys.org
Ian Bloomfield said:
Most equations assume a static acceleration.
To be more precise, you should say that the Euler equations assume that the acceleration values are instantanious values that are only valid for a small time. The integrations and calculations must be done in small time steps and accumulated as time goes on using updated acceleration values. You should be aware that the position and orientation values will drift away from the true values. Even the smallest acceleration and orientation errors cause the calculated answers to drift over time. You should consider that and include some method to take periodic position "fixes" to correct the values. There are methods (complimentary filters and Kalman filters) to combine the fast reactions of the accelerometers with the periodic fixes to get the best of both (fast reactions and accuracy).
I happy with myself for learning Euler's and establishing my accelerometer and gyro complimentary filter.
A complimentary filter is a method for combining two signals to get the best of both (fast reactions and accuracy) for a single signal. But that requires periodic accuracy "fixes".
Modifications of the Euler equations to account for the higher derivatives of acceleration (jerk, snap, crackle, pop) are something that I have never seen. But someone else may have experience with them.
 
Last edited:
I really just want to gauge an idea of total distance traveled during the course of an exercise max 300s. I'm don't worry about whether the movement was up or down or across just that there was movement
 
Ian Bloomfield said:
I really just want to gauge an idea of total distance traveled during the course of an exercise max 300s. I'm don't worry about whether the movement was up or down or across just that there was movement
Thanks for the clarification. Does that mean that you only want the total path length? If the motion comes back to the starting point, you would not consider that zero, right?
If that is true, I understand your problem with the orientation of the gravity vector. I have no experience with that problem and will have to leave it for others (unless I have a breakthrough).
 
Correct just the total path length. Its a way of representing the work of each hand. Hence why I thought it was fine to represent the acceleration as a 3 axis vector since I don't care about the direction the magnitude of the force. And also should make the sums much easier else I would have to factor the angle of the device to extract the force of gravity via each axis. (to mean that seemed quite clever of myself)
 
Ian Bloomfield said:
I really just want to gauge an idea of total distance traveled during the course of an exercise max 300s.
This is a standard application of accelerometers/gyros, so there should be some ready to use tools or code for this.

Ian Bloomfield said:
I thought to represent my 3 axis acceleration as a vector and then subtract from this 1g, to compensate for gravity effect.
Right, just pay attention in which frame of reference the vectors are given.

Ian Bloomfield said:
I would have to factor the angle of the device to extract the force of gravity
If the acceleration is given in the local system, the you need to know its orientation in order to subtract gravity.
 
Mine unfortunately just outputs raw figures. It has been a long road of learning. I have mastered converting my gyro outputs into rotational degrees and have mastered trigonometry to convert accelerometer values into a tilt angle. I had a stab at this but must have my formula wrong as slow acceleration undershot the distance and high acceleration overshot it. I was testing by doing 10 passes back and forth 10cm to see what value I got.

If I made an assumption that vi was always 0 and just calculated the change in acceleration of each vector change at 20msreadings then multiply by 1/2 Delta time squared?
 
Ian Bloomfield said:
If I made an assumption that vi was always 0 and just calculated the change in acceleration of each vector change at 20msreadings then multiply by 1/2 Delta time squared?
That, plus keeping track of the velocity from the previous motion, can give some reasonable approximation if the initial velocity is very low (your error will be of the order of the initial velocity times experiment time) and if your acceleration vectors are very precise and without bias. Otherwise (and I would be surprised if your values are very precise) you accumulate significant errors. Similar to the initial velocity: Every error in the acceleration leads to an error in the velocity that stays in for the rest of the experiment.

If your test person does not move around, the average velocity vector has to be zero, and the position cannot deviate from the starting position too much. You can use this to reduce the accumulated error, e.g. by requiring that the average velocity (not the average speed!) over some time span has to be zero.
 
You should first make a rough engineering estimate of how well your sensor accuracy matches your desired path-length accuracy for 300 seconds. It would be good to know what you are getting yourself into. If there is sufficient accuracy, that is good. Otherwise, it can get much more complicated.
 
Last edited:
  • #10
FactChecker said:
If that is true, I understand your problem with the orientation of the gravity vector. I have no experience with that problem and will have to leave it for others (unless I have a breakthrough).
The "standard" solution is to get two identical accelerometers and fix one of them to the operating table. The difference between the two is a fair representation of the real movement of the hand (or whatever).
 
  • #11
Svein said:
The "standard" solution is to get two identical accelerometers and fix one of them to the operating table. The difference between the two is a fair representation of the real movement of the hand (or whatever).
Without keeping their orientations identical, their accelerations are not directly comparable.
 
Last edited:
  • #12
FactChecker said:
Without keeping their orientations identical, their accelerations are not directly comparable.
No. My suggestion was meant to measure the value of g at all times, making it easy to subtract that value from the "moving" accelerometer.
 
  • #13
That only works if you know the orientation.

The value of g doesn't change over time anyway. At least not at a level where it would matter here.
 
  • #14
mfb said:
That only works if you know the orientation.

The value of g doesn't change over time anyway. At least not at a level where it would matter here.
Sorry, I wasn't clear enough. Yes, the absolute value of g may well be near enough constant, but the direction may not be obvious. The operating table may not be at right angles to \vec{g}.
 
  • #15
Sure, but the second accelerometer only helps if you know the relative orientation of the two accelerometers.
 
Back
Top