1 Reply Latest reply on Apr 28, 2015 1:59 PM by nniles

    Using intel edison with 9DOF block to get velocity, spin & flightpath of a ball in projectile motion


      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.

        • 1. Re: Using intel edison with 9DOF block to get velocity, spin & flightpath of a ball in projectile motion

          I'm not familiar with RTIMULib, but I can say that your assumption that you don't need to incorporate the sensor attitude into your motion integration is wrong.  Also, Euler angles (roll, pitch, yaw) are generally not an adequate choice of attitude representation for a system that is expected to rotate freely about all axes, because you can expect to hit the singularities.


          Essentially, what you need to do is called strapdown navigation (Let me google that for you).


          There are numerous approaches for the initialization process.  Most of them will begin with an alignment phase where a stationary condition is assumed.  With that assumption and the accelerometer data, you can determine the direction of up/down by averaging a number of measurements.  Then, combined with some averaged magnetometer data, you can determine the alignment of the IMU with respect to a more-or-less Earth-fixed frame (should be close enough for a ball being kicked around).


          Once you're happy with the initialization, you can kick the ball and perform the strapdown integration to recover the ball's trajectory.


          Beyond that, it depends on the specifics of your application.  Are you just interested in estimating the current states of the ball at any given time, or are you going to kick, reset, and kick again (in which case you can make further assumptions and use more sophisticated calculations to incorporate them)?  There is also sensor fusion and various filtering techniques which can help to reduce the error of your solutions.


          Finally, don't forget that something as unpredictable as kicking a ball may require some attention to the measurement scale settings.


          Hope this helps get you started.