Your SlideShare is downloading. ×
Get Moving with Core Motion
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Get Moving with Core Motion

12,774
views

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,774
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
159
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?