

iOSデバイスの姿勢を、ジャイロから取得したいのですが、やり方がわかりません。

調べてみたところ、  
<http://qiita.com/yimajo/items/49bd534e8c257294a2e3>  
この記事が私の求めることに最も近いのですが、記事が書かれた時期が古いので参考にできません...。

<https://developer.apple.com/reference/coremotion/cmattitude>  
APIリファレンスも見てみましたが、いまいち何をどうすればroll、pitch、yawが取得できるのか分かりません！

アドバイスを頂けると助かりますよろしくお願いします。

また、別の質問になりますが、iOSデバイスの位置はGPSで、姿勢はジャイロから求めることができると思いますが、デバイスの存在する高さを取得することは出来ないのでしょうか？  
合わせて回答していただけるとうれしいです。


CC BY-SA 3.0
2017-03-06T10:24:20.527
33138
2017-03-08T01:23:03.347
2017-03-08T01:23:03.347
76
20952
question
swift ios
iOSデバイスの姿勢を角度で取得したい


古い情報だから、参考にならないというのは、ちょっと乱暴すぎますね。そうやって、得られる情報源を狭めてしまうことで、不利益になるのは、質問者さん自身であることに、ぜひ気づいていただきたいものです。リンク先の情報の、CoreMotionフレームワークに関する解説は、まったく古くはなっておらず、じつにためになるものだと思いますよ。

* * *

とりあえず、リンク先にある、Objective-
Cのサンプルコードを、Swift3に移植したものを、載せておきます。コピー＆ペーストで、そのまま実機にインストール可能な状態にしてあります。

[code]

    import UIKit
    import CoreMotion
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var pitchLabel: UILabel!
        @IBOutlet weak var rollLabel: UILabel!
        @IBOutlet weak var yawLabel: UILabel!
    
        var motionManager: CMMotionManager?
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            motionManager = CMMotionManager()
            motionManager?.deviceMotionUpdateInterval = 1.0
        }
    
        @IBAction func getAttitude(_ sender: Any) {
            attitude()
        }
    
        func attitude() {
            guard let _ = motionManager?.isDeviceMotionAvailable,
            let operationQueue = OperationQueue.current
            else {
                return
            }
    
            motionManager?.startDeviceMotionUpdates(to: operationQueue, withHandler: { motion, _ in
                if let attitude = motion?.attitude {
                    self.pitchLabel.text = String(format: "%0.2f", attitude.pitch * 180.0 / Double.pi)
                    self.rollLabel.text = String(format: "%0.2f", attitude.roll * 180.0 / Double.pi)
                    self.yawLabel.text = String(format: "%0.2f", attitude.yaw * 180.0 / Double.pi)
                }
            })
        }
    
    }
    
[/code]

※Objective-
Cに関する知識と経験よりむしろ、Swiftによるプログラミングの経験値を上げていけば、移植はたいしてむずかしくないのではないでしょうか？

* * *

> デバイスの存在する高さを取得することは出来ないのでしょうか？

GPSで、取得できるはずです。私も詳しくはないので、これ以上の説明は控えさせてもらいますが、これも、情報源をえり好みさえしなければ、日本語の情報を見つけることができるのではないでしょうか？


CC BY-SA 3.0
2017-03-06T11:43:58.277
33139
2017-03-08T01:16:47.257
2017-03-08T01:16:47.257
18540
18540
33138
answer