Upgrade to Pro — share decks privately, control downloads, hide ads and more …

M5StickCでのIMU開発

Yosuke Nakano
February 04, 2020

 M5StickCでのIMU開発

M5StickCでIMUのデータを無線で送信する開発を行いました。

Yosuke Nakano

February 04, 2020
Tweet

More Decks by Yosuke Nakano

Other Decks in Programming

Transcript

  1. M5StickC IMU開発の
    自分の歩み
    中野洋輔
    @naninuneno_y

    View Slide

  2. こんなの作ってました(もう1年前か…)
    GitHub naninunenoy/GrayBlue
    M5Stackユーザーミーティング vol.4 (2019/4/15)にてLT
    MPU-9250ありきなのでもう使えない

    View Slide

  3. 5000円くらい
    (当時)
    安い!
    ・ESP32(BLE/wi-fi対応)
    ・9軸IMU
    ・液晶
    ・ボタン3つ
    ・バッテリー
    当時でもこんな安いのかと驚きましたが、

    View Slide

  4. 1980円
    !!?
    ・ESP32(BLE/wi-fi対応)
    ・6軸IMU
    ・液晶
    ・ボタン2つ
    ・バッテリー
    さらにお手頃に

    View Slide

  5. • 加速度センサの値がひっくり返してもマイナスにならない
    • 公式コードのビット演算にミスあり
    • しかし、値域が-0.9~+1.1とかになるんですけど と思ってたら
    SH200Qとの戦い
    結合してから
    キャストしよう

    View Slide

  6. MPU6886に切り替えてく
    • センサの性能が上がるのはいいけど、
    パターン増えるんかーと思ってたら、

    View Slide

  7. 有志の方が解決してくれた
    • OSSってありがたい

    View Slide

  8. で、新しく作ったのが
    GitHub naninunenoy/AxisOrange

    View Slide

  9. SPPを採用することで受信側のプログラムを簡単に
    SPP System.IO.Ports
    IMU
    Button
    Quaternion
    参考 パソコン上のM5Stackの3Dモデルを、M5Stackの動きに合わせて動かす
    GitHub naninunenoy/AxisOrange GitHub naninunenoy/AxisOrangeUnity

    View Slide

  10. 開発のポイント
    • 受信側(PC側)はSerial Portのプログラムを書けば良い
    • iOSはSPP非対応(らしい)
    • xTaskCreate()によるタスク分割
    • loop()でセンサ更新->SPP送信を行うのでなく、センサ更新と送信を別タス
    クで実行
    • vTaskDelay()で処理を明け渡すの大事
    • ジャイロセンサの0出力をデバイスで計算+保存
    • 特定の命令で静止時のジャイロセンサ出力を保存し、オフセットとして扱う
    • センサの個体に寄らない姿勢計算が可能(なはず)

    View Slide

  11. ありがとうございました
    (多分展示も出します)

    View Slide