Get	
  Moving	
  With	
  Core	
  Mo/on!	
  
                           Jonathan	
  Blocksom	
  
                          ...
Agenda	
  
•    Intro	
  
•    SDK	
  
•    Experiments	
  
•    Q	
  &	
  A	
  

•  Intro	
  level,	
  but	
  lots	
  of	...
About	
  Me	
  
Jonathan	
  Blocksom	
  
blocksom@gollygee.com	
  
augmentedjonathan.tumblr.com	
  
@jblocksom	
  


•  Co...
Meet	
  Core	
  Mo/on!	
  
•  Core	
  Mo/on	
  Framework:	
  
   High	
  level	
  interface	
  to	
  the	
  	
  
   orient...
Core	
  Mo/on	
  isn’t…	
  
•  For	
  GPS	
  data	
  
    –  That’s	
  Core	
  Loca/on	
  (Loca/onManager)	
  
•  For	
  C...
Quick	
  Demo	
  
•  CoreMo/onTeapot	
  
   (WWDC	
  2010	
  sample	
  
   code)	
  
Accelerometer	
  
•  Available	
  since	
  iPhone	
  1	
  
•  Consider	
  it	
  a	
  “Gravity	
  Detector”	
  
•  Noisy	
 ...
Gyroscopes	
  
•  New	
  in	
  iPhone	
  4,	
  iPod	
  
   Touch	
  4	
  
•  Detects	
  rota/on	
  rate	
  
   along	
  th...
Gyro	
  Teardown	
  




h1p://www.ifixit.com/Teardown/iPhone-­‐4-­‐Gyroscope-­‐Teardown/3156/1	
  

Andrew	
  Bookholt:	
 ...
Accelerometer,	
  Gyro	
  &	
  Device	
  Mo/on	
  


Accelerometer	
                                        Gyro	
  



  ...
Supported	
  Devices	
  
                     iPhone	
  1	
   iPhone	
     iPhone	
              iPhone	
  4	
   iPod	
   ...
Classes	
  
Class	
                   Descrip8on	
  
CMMo/onManager	
          The	
  Gateway	
  
CMAccelerometerData	
   ...
CMMo/onManager	
  
•  Tells	
  you	
  what’s	
  available	
  
    –  is<Acclerometer|DeviceMo/on|Gyro>Available	
  
•  Set...
CMMo/onManager	
  
•  CMMo/onManager	
  *mgr	
  =	
  
   [[CMMo/onManager	
  alloc]	
  init];	
  

•  Ini/alizes	
  refere...
Core	
  Mo/on	
  Coordinate	
  System	
  
Quick	
  Reference	
  

            z	
                        yaw	
  




     ...
CMAccelerometerData	
  
•  accelera/on	
  
   CMAccelera/on	
  struct:	
  
  typedef struct {
      double x;
      double...
CMGyroData	
  
•  YAGNI	
  

•  Gyro’s	
  have	
  bias;	
  DeviceMo/on	
  fusion	
  
   algorithms	
  remove	
  this	
  

...
CMDeviceMo/on	
  
•  CMAptude	
  aptude	
  
•  CMRota/onRate	
  rota/onRate	
  

•  CMAccelera/on	
  gravity	
  
•  CMAcce...
DEMO	
  
•  MacCMViewer	
  
•  CMIPViewer	
  




•  Source	
  code	
  available:	
  
  h1p://bitbucket.org/jblocksom/core...
MacCMView:	
  What’s	
  Going	
  On?	
  
•  Mac	
  opens	
  socket;	
  iPhone	
  connects	
  
•  iPhone	
  sends	
  CM	
  ...
CMAptude	
  
•  Rota/on	
  as	
  
    –  Yaw,	
  Pitch,	
  Roll	
  
    –  Quaternion	
  
    –  Rota/on	
  Matrix	
  


•...
Why	
  Quaternions?	
  
•    Great	
  technique	
  for	
  represen/ng	
  rota/ons	
  
•    Mu/plying	
  q1	
  and	
  q2	
 ...
mul/plyByInverseOfAptude:	
  
•  Teapot	
  Demo	
  revisited	
  
Core	
  Mo/on	
  in	
  Simulator	
  
•  Accelerometer:	
  Not	
  available	
  
•  Gyros:	
  Not	
  available	
  
•  Device...
Final	
  Steps:	
  App	
  Requirements	
  
•  Add	
  UIRequiredDeviceCapabili/es	
  for	
  
   	
  accelerometer	
  
   	
...
Experiments	
  
•  iPhone	
  3GS	
  vs	
  iPhone	
  4	
  
•  Inter/al	
  Navigator	
  
•  Salad	
  Spinner	
  
Further	
  Reading	
  
•  Event	
  Handling	
  Guide	
  for	
  iPhone	
  OS	
  
    –  Look	
  under	
  “Mo/on	
  Events”	...
Upcoming SlideShare
Loading in …5
×

Get Moving with Core Motion

13,862 views

Published on

Slides for "Get Your iOS 4 Apps Moving with Core Motion" talk, September 2010 at iPhoneDevCon.

Thanks everyone who came to the talk!

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,862
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
165
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide
  • Wikipedia rant – great for Epipolar Geometry, terrible for Quaternions
  • Get Moving with Core Motion

    1. 1. Get  Moving  With  Core  Mo/on!   Jonathan  Blocksom   Tuesday  Sept  28  2010   2:00  –  3:15  PM   h1p://www.slideshare.net/jblocksom/core-­‐mo/on-­‐presenta/on  
    2. 2. Agenda   •  Intro   •  SDK   •  Experiments   •  Q  &  A   •  Intro  level,  but  lots  of  code  
    3. 3. About  Me   Jonathan  Blocksom   blocksom@gollygee.com   augmentedjonathan.tumblr.com   @jblocksom   •  Computer  Vision  So[ware  Engineer,   SET  Corp   •  Computer  Graphics  background   •  Several  years  working  with  Remote   Sensing  
    4. 4. Meet  Core  Mo/on!   •  Core  Mo/on  Framework:   High  level  interface  to  the     orienta/on  and  movement     data  from  the  device   •  Based  on  Accelerometer  and  Gyroscopes   •  Accelera/on,  Gravity,  Rota/onal  Accelera/on   •  High  level  filtering  
    5. 5. Core  Mo/on  isn’t…   •  For  GPS  data   –  That’s  Core  Loca/on  (Loca/onManager)   •  For  Compass  data   –  Also  Core  Loca/on   •  High  Level  Mo/on  Events   –  Orienta/on  change   –  Shake  events   •  Perfect  
    6. 6. Quick  Demo   •  CoreMo/onTeapot   (WWDC  2010  sample   code)  
    7. 7. Accelerometer   •  Available  since  iPhone  1   •  Consider  it  a  “Gravity  Detector”   •  Noisy   •  iPad,  iPhone  4:   STMicro  STM33DH   3-­‐axis  accelerometer   Photo  by  David  Hodson   h1p://www.ifixit.com/Guide/Image/meta/IP1qEpYFQSSqwSbg  
    8. 8. Gyroscopes   •  New  in  iPhone  4,  iPod   Touch  4   •  Detects  rota/on  rate   along  three  axis   •  Chip  datasheet:   h1p://www.st.com/stonline/products/literature/ds/ 17116.pdf   •  200/500/2500  dps   (degrees  per  second)   •  0.03  dps  error  
    9. 9. Gyro  Teardown   h1p://www.ifixit.com/Teardown/iPhone-­‐4-­‐Gyroscope-­‐Teardown/3156/1   Andrew  Bookholt:   h1p://www.ifixit.com/Guide/Image/meta/UurGsklhtJRW2uuB  (le[)   h1p://www.ifixit.com/Guide/Image/meta/MeunHawo54qPRY5S  (right  1)   Miroslav  Djuric   h1p://www.ifixit.com/Guide/Image/meta/RUQLo2PP1oqVtVsD  (right  2)  
    10. 10. Accelerometer,  Gyro  &  Device  Mo/on   Accelerometer   Gyro   Device  Mo/on   Gravity   x,  y,  z   yaw,  pitch,  roll   User  accelera/on   Aptude   Rota/on  Rate  
    11. 11. Supported  Devices   iPhone  1   iPhone   iPhone   iPhone  4   iPod   iPod   iPad   3G   3GS   Touch     Touch  4   Accelero Y   Y   Y   Y   Y   Y   Y   meter   Gyros   Y   iOS  4   Y   Y   Y   Y   iPhone  4   iPhone  3GS   iPhone  1   iPod  Touch  4   iPod  Touch   iPad  iOS  3.x   iPad  w/  iOS  4   Yay!   If  we  must…   No.  
    12. 12. Classes   Class   Descrip8on   CMMo/onManager   The  Gateway   CMAccelerometerData   Accelera/on  data   X,  Y,  and  Z  rela/ve  to   device   In  G’s   CMAptude   Orienta/on   Roll,  Pitch,  Yaw   Rota/on  Matrix   Quaternion   CMDeviceMo/on   Roll  up  of  sensors   Differen/ates  gravity  from   user  accelera/on   CMGyroData   Rota/onal  Velocity   CMLogItem   Timestamped   Parent  Class  for   Measurement   measurements  
    13. 13. CMMo/onManager   •  Tells  you  what’s  available   –  is<Acclerometer|DeviceMo/on|Gyro>Available   •  Sets  the  update  intervals   –  set<…>UpdateInterval   •  Starts  and  stops  updates   –  start<…>Updates   –  start<…>UpdatesToQueue:withHandler:   –  stop<…>Updates   •  Lets  you  poll  for  updates   –  accelerometerData   –  gyroData   –  deviceMo/on  
    14. 14. CMMo/onManager   •  CMMo/onManager  *mgr  =   [[CMMo/onManager  alloc]  init];   •  Ini/alizes  reference  frame  at  construc/on   •  Only  make  one  of  these  for  your  app  
    15. 15. Core  Mo/on  Coordinate  System   Quick  Reference   z   yaw   pitch   x   roll   y   Accelerometer   Gyroscopes  
    16. 16. CMAccelerometerData   •  accelera/on   CMAccelera/on  struct:   typedef struct { double x; double y; double z; } CMAcceleration; •  Measured  in  G’s
    17. 17. CMGyroData   •  YAGNI   •  Gyro’s  have  bias;  DeviceMo/on  fusion   algorithms  remove  this   •  Get  orienta/on  from  DeviceMo/on  instead  
    18. 18. CMDeviceMo/on   •  CMAptude  aptude   •  CMRota/onRate  rota/onRate   •  CMAccelera/on  gravity   •  CMAccelera/on  userAccelera/on  
    19. 19. DEMO   •  MacCMViewer   •  CMIPViewer   •  Source  code  available:   h1p://bitbucket.org/jblocksom/coremo/onviewer  
    20. 20. MacCMView:  What’s  Going  On?   •  Mac  opens  socket;  iPhone  connects   •  iPhone  sends  CM  updates  to  Mac   •  Mac  uses  rota/on  matrix  for  display   From  CMAptude  
    21. 21. CMAptude   •  Rota/on  as   –  Yaw,  Pitch,  Roll   –  Quaternion   –  Rota/on  Matrix   •  mul/plyByInverseOfAptude:    
    22. 22. Why  Quaternions?   •  Great  technique  for  represen/ng  rota/ons   •  Mu/plying  q1  and  q2  is  composing  rota/ons   •  Can  easily  pull  out  axis  /  angle   •  Avoids  “Gimbal  Lock”   •  h1p://en.wikipedia.org/wiki/ Quaternions_and_spa/al_rota/on   is  a  pre1y  good  treatment   •  Graphics  Gems  textbooks  
    23. 23. mul/plyByInverseOfAptude:   •  Teapot  Demo  revisited  
    24. 24. Core  Mo/on  in  Simulator   •  Accelerometer:  Not  available   •  Gyros:  Not  available   •  Device  Mo/on:  Not  available   •  Workaround  thoughts…  
    25. 25. Final  Steps:  App  Requirements   •  Add  UIRequiredDeviceCapabili/es  for    accelerometer    gyro   •  Not  needed  for  orienta/on  /  shake  events   •  See  Event  Handling  Guide,   “Sepng  Required  Hardware  Capabili/es  for   Accelerometer  and  Gyroscope  Events”  
    26. 26. Experiments   •  iPhone  3GS  vs  iPhone  4   •  Inter/al  Navigator   •  Salad  Spinner  
    27. 27. Further  Reading   •  Event  Handling  Guide  for  iPhone  OS   –  Look  under  “Mo/on  Events”   –  Sec/on  /tled  “Core  Mo/on”   •  Core  Mo/on  framework  reference   •  Sample  Code   –  WWDC  ’10:  CoreMo/onTeapot   •  iPhone  Sensor  Group?  

    ×