yeti logo icon
Close Icon
contact us
Yeti postage stamp
We'll reply within 24 hours.
Thank you! Your message has been received!
A yeti hand giving a thumb's up
Oops! Something went wrong while submitting the form.

iPhone Accelerometer Calibration

By
Tony Scherba
-
October 12, 2011

I’ve started a couple games with the great idea of using the accelerometer for the control. Most of the time these games are super fun in theory but end up becoming a nightmare because making the accelerometer play nicely with what the user expects is difficult.

An important aspect of this is calibrating the accelerometer so your code knows where the user thinks zero should be. This can be a difficult process because you have to think in 3 dimensional space.

I conducted an experiment where I held the device steady at multiple angles in landscape mode and recorded the raw accelerometer read out. Soon into the experiment it became obvious what was going on as I’m sure you’ll be able to figure out from the chart below.

It quickly becomes very clear that acceleration.x is an inverse sine wave and acceleration.z is an inverse cosine wave. I couldn’t believe I hadn’t thought of this before but it is very obvious why this happens. The constant acceleration of gravity is pushing down and so therefore by rotating the device you are essentially reading that acceleration at an angle. Naturally it creates these waves because you are moving it in a circular fashion. So now with this knowledge and your trigonometry book from high school you should be able to figure out the best way to calibrate your program for an awesome user experience.

NOTE: I’ve received quite a few requests for code snippets to explain what I’m talking about here. I am working on another follow up blog post that will include some.

Tony Scherba is a CEO + Founding Partner at Yeti. Tony has been developing software since high school and has worked on digital products for global brands such as Google, MIT, Qualcomm, Hershey’s, Britney Spears and Harmon/Kardon. Tony’s writing about innovation and technology has been featured in Forbes, Huffington Post and Inc. At Yeti, Tony works on strategy, product design and day to day operations, hopping in and working with the development teams when needed.

Connect with Tony on LinkedIn

You Might also like...

code on a computerManaging Perisistent Browser Data with useSyncExternalStore

Struggling to keep React state in sync across tabs and sessions? Learn how to use useSyncExternalStore to manage state persistence with localStorage and sessionStorage—without complex state management libraries. Improve performance and streamline your app’s state logic.

software developerReact Hooks 102: When to Avoid useEffect

Overusing useEffect in React can lead to inefficient components and performance issues. In this post, learn when to avoid useEffect and discover better alternatives for managing state, calculations, and user events. Optimize your React code with best practices for cleaner, faster applications.

software developer codingFintech Security with GraphQL Shield

Securing fintech applications is crucial, and GraphQL’s flexibility can be a security risk if not properly managed. GraphQL Shield helps enforce fine-grained authorization using role-based (RBAC) and attribute-based (ABAC) access control. In this post, we’ll explore why authorization matters, how to implement secure, composable rules, and walk through a demo app showcasing best practices.

Browse all Blog Articles

Ready for your new product adventure?

Let's Get Started