SparkFun Forums 

Where electronics enthusiasts find answers.

Have questions about a SparkFun product or board? This is the place to be.
By Hesham00
#181591
Hello Everybody , I'm working on a project to make a SmartBall that can detect the velocity(km/h) , spin(degrees per second) and flightpath(trajectory) of the ball using Intel Edison with the 9DOF block (LSM9DS0 : a 3-axis accelerometer, gyroscope, and magnetometer) & the battery block, I'm reading values from the 9DOF block by RTIMULib(Library for IMU chips). I've been working on integrating the acceleration data from the accelorometer to get the velocity then get the position, I know that this method is not really accurate as the integration error cumulate very fast but I rely on that my calculations will be done in a very short time (about 3 seconds) then i re-calculate again from the beginning after every kick so that error doesn't cumulate hardly, Also i only need an acceptable accuracy not a very high one. I discovered then that i'm dealing with projectile motion(ball kicking), so after considering this & searching in projectile motion equations i found that i must know the initial velocity and the angle of projection(theta) to be able to get my requirements. my problem that I don't know how to get any of these , I tried different approaches like getting the horizontal distance & getting the height to get their resultant(using pythagoras) then get the angle(assuming it's a right angle) in a very small time at the beggining of the projection , but i still couldn't get the height. The gyroscope outputs roll, pitch & yaw angles related to the sensor orientation but i'm still not using this as i'm assuming that the sensor will be fixed inside the ball so it's orientation will not be the same as the projection angle. Hope I made it clear , Any help on how to get my requirements is really appreciated, Thanks so much.
#181835
The basic problem is that the ball's (and IMU's) orientation will be somewhat random. The accelerometers will only give you the accelerations in the ball-fixed coordinate system. What you want is the accelerations in the earth-fixed coordinate system. So, first you need to integrate the gyro rate data to get the ball orientation for each point in time. Then using the orientation at each point in time, you transform the accelerometer data from ball-fixed coordinates to earth-fixed coordinates. Finally, you can integrate the transformed accel data to get the velocity and integrate again to get position as a function of time.