まず、iOSでGPSがあるiPhoneは、CoreLocationで緯度経度と方角が取れる。
ただしGPSや電子コンパスがないiPodTouchは取得不可能。
iPodTouchはCoreMortionを使い、
3軸加速度(X,Y,Z),3軸角加速度(yaw,roll,pitch)が取れる。
3軸加速度は鉛直方向に重力加速度がでているので分かりやすいのだけど、
3軸各加速度は、電子コンパスを持っていない以上
キャリブレーションができないので、
角度に変換しようと積分してもドリフトしてしまうため、
きちんと角度がでない。
と思っていました。
CoreMotionManagerクラスのCMDeviceMotionメンバに
CMAttitudeというプロパティがあり、
どうやらそれが3軸加速度センサーの重力成分を使って、
RollとPitchはラジアンで返してくれる模様
(YawはCoreMotion起動時から積分)
Yaw(0.245020),Roll(-1.554230),Pich(0.085618)
Yaw(0.245020),Roll(-1.554230),Pich(0.085618)
Yaw(0.248111),Roll(-1.559325),Pich(0.085934)
Yaw(0.253996),Roll(-1.559549),Pich(0.087444)
Yaw(0.261556),Roll(-1.559041),Pich(0.089239)
Yaw(0.269707),Roll(-1.558033),Pich(0.091087)
Yaw(0.277918),Roll(-1.557980),Pich(0.093743)
Yaw(0.285235),Roll(-1.558010),Pich(0.095316)
Yaw(0.285235),Roll(-1.558010),Pich(0.095316)
Yaw(0.296225),Roll(-1.552458),Pich(0.090050)
Yaw(0.300811),Roll(-1.549996),Pich(0.087886)
Yaw(0.300811),Roll(-1.549996),Pich(0.087886)
Yaw(0.303842),Roll(-1.546189),Pich(0.085633)
Yaw(0.305871),Roll(-1.543721),Pich(0.085470)
Yaw(0.306793),Roll(-1.542951),Pich(0.086275)
Yaw(0.307053),Roll(-1.540932),Pich(0.087271)
Yaw(0.307298),Roll(-1.539997),Pich(0.088312)
Yaw(0.306882),Roll(-1.539172),Pich(0.088566)
Yaw(0.305100),Roll(-1.539258),Pich(0.088872)
Yaw(0.302330),Roll(-1.540648),Pich(0.089680)
Yaw(0.299287),Roll(-1.541659),Pich(0.089893)
Yaw(0.297004),Roll(-1.543214),Pich(0.090342)
Yaw(0.297004),Roll(-1.543214),Pich(0.090342)
Yaw(0.295179),Roll(-1.543912),Pich(0.090508)
Yaw(0.294070),Roll(-1.545008),Pich(0.090415)
これはらくちん。だいぶ助かる。
今更気づいた理由は、違和感
◯Attitude=姿勢
XAltitude=高度
GPSセンサが付いてる、iPhoneしか取得できない、
高度パラメーターだと思ってました。てへ。
エイゴッテムズカシーネ
0 件のコメント:
コメントを投稿