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
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
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
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
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”