Apple Watch CMMotionManager acceleration direction

I'm working with the Apple Watch's acceleration data and have referred to the document Identify the coordinate axes of the device. According to this document, the X-axis points to the right side of the watch, the Y-axis points towards the top side, and the Z-axis points towards the user.

However, when I place the watch on a flat surface and move it horizontally to the right, I observe that the X-axis acceleration is negative. Similarly, when I move the watch vertically upwards, the Y-axis acceleration also shows a negative value.

Is this expected behavior, or am I misunderstanding something about the coordinate system or acceleration readings?

I've noticed that when stopping the watch suddenly during movement, it seems to keep the last acceleration value. Is this expected, and can I still reliably use acceleration data for movement calculations, or should I look into alternative methods?

I added the raw data for watch moving horizontally from left to right direction:

Sorry, I uploaded the wrong file which contains acceleration data affected by gravity and other factors, including noise. That should be the reason that acceleration keeps some value.

Here, the raw data has been logged by CMMotionManager.startDeviceMotionUpdates with userAcceleration :

You can see that if I move the watch from left to right, the initial value of acceleration.x will be negative. Then, once the watch stops moving, acceleration.x becomes positive.

I think you may have a misplaced expectation about the direction of movement vs. acceleration.

What is going on here is, the acceleration vector is in the opposite direction of the motion. Similar to accelerating in a car, and you are being pushed into the seat, in the opposite direction of the car's movement.

The watch axes are, they way you are showing the watch are:

  • upwards from the watch face is +Z
  • towards the watch's top is +Y
  • towards the right in the direction of the crown is +X

So, when you move the watch towards the top, the acceleration vector points to the bottom. When you move it towards the right, the acceleration vector points to the left.

Did I miss something about why you were expecting the opposite?


Argun Tekant /  DTS Engineer / Core Technologies

Thank you for your reply.

So if I use the acceleration value to calculate Apple Watch movement, I should negative the value to get the result? Ex:

V1 = V0 + A0 + (A1-A0) / 2

M = V0 + (V1-V0) / 2.

The A0 and A1 should become -A0 and -A1 ?

Apple Watch CMMotionManager acceleration direction
 
 
Q