Your SlideShare is downloading. ×

Get Moving with Core Motion

12,883

Published on

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

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
12,883
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
161
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Wikipedia rant – great for Epipolar Geometry, terrible for Quaternions
  • Transcript

    • 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. Agenda   •  Intro   •  SDK   •  Experiments   •  Q  &  A   •  Intro  level,  but  lots  of  code  
    • 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. 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. 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. Quick  Demo   •  CoreMo/onTeapot   (WWDC  2010  sample   code)  
    • 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. 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. 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. 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. 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. 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. 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. 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. Core  Mo/on  Coordinate  System   Quick  Reference   z   yaw   pitch   x   roll   y   Accelerometer   Gyroscopes  
    • 16. CMAccelerometerData   •  accelera/on   CMAccelera/on  struct:   typedef struct { double x; double y; double z; } CMAcceleration; •  Measured  in  G’s
    • 17. CMGyroData   •  YAGNI   •  Gyro’s  have  bias;  DeviceMo/on  fusion   algorithms  remove  this   •  Get  orienta/on  from  DeviceMo/on  instead  
    • 18. CMDeviceMo/on   •  CMAptude  aptude   •  CMRota/onRate  rota/onRate   •  CMAccelera/on  gravity   •  CMAccelera/on  userAccelera/on  
    • 19. DEMO   •  MacCMViewer   •  CMIPViewer   •  Source  code  available:   h1p://bitbucket.org/jblocksom/coremo/onviewer  
    • 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. CMAptude   •  Rota/on  as   –  Yaw,  Pitch,  Roll   –  Quaternion   –  Rota/on  Matrix   •  mul/plyByInverseOfAptude:    
    • 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. mul/plyByInverseOfAptude:   •  Teapot  Demo  revisited  
    • 24. Core  Mo/on  in  Simulator   •  Accelerometer:  Not  available   •  Gyros:  Not  available   •  Device  Mo/on:  Not  available   •  Workaround  thoughts…  
    • 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. Experiments   •  iPhone  3GS  vs  iPhone  4   •  Inter/al  Navigator   •  Salad  Spinner  
    • 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?  

    ×