Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2016年6月23日 デジタルガジェット祭り!「加速度センターに挑戦」

94 views

Published on

発表日:2016年6月23日
イベント名:第三回 デジタルガジェット祭り!
イベントURL:http://aitc.jp/events/20160623-OpenLab/info.html
タイトル:AITCシニア会めがねチーム「加速度センターに挑戦」
発表者:近藤、吉田

Published in: Internet
  • Be the first to comment

  • Be the first to like this

2016年6月23日 デジタルガジェット祭り!「加速度センターに挑戦」

  1. 1. AITCシニア会めがねチーム  加速度センターに挑戦 2016/6/23 近藤・吉⽥ 1
  2. 2. 解決したい課題2 家の中のどこかにあるはずの眼鏡を 眼鏡をかけていなくでも 探せるようにしたい
  3. 3. RFIDなど検討したが、発想の転換! ´ 家の中ならば、『眼鏡の現在位置』ではなく、 『⾃分が昨夜どこにいたか』が分かればよい スリッパに モーションセンサーを装着して 昨夜どこを歩いたかを記録する X Y 3
  4. 4. Arduino 9軸モーションシールド 3790円 4 x y
  5. 5. モーションシールドの仕様 ´ BOSCH製BNO055を搭載 ´ 14bit精度の3軸加速度センサー (X,Y,Z) ´ 16bit精度の3軸⾓速度センサー (Ωx,Ωy,Ωz) ´ 16bit精度の3軸地磁気センサー (x,y,z) 5
  6. 6. 物理のおさらい ´ 重⼒加速度9.8m/s2 ´ 地磁気0.45ガウス -9.8m/s2 x y z センサーを⽔平に置いて静⽌した場合 0.45G x z 北磁極に向けて⽔平に置いた場合(東 北磁 (6°⻄49° 0.45✕cos49°≒0.32G 0.45✕sin49° ≒-0.37G y 6
  7. 7. BNO005ができること7
  8. 8. ⽤語解説 ´ Sensor Fusion ある現象に対して、それを測定する複数のセンサーーの出⼒から、 データ同⼠の処理を⾏い、1つの知覚を得ること(wikipediaより) ´ Absolute Orientation ⾓速度を積分して、絶対⽅位に対して回転⾓度(傾き)を求める ´ Relative Orientation ⾓速度を積分して、初期状態の向きに対して回転⾓度を求める ´ Linear Acceleration 重⼒加速度成分を除き、動きによる加速度のみ出⼒する 8
  9. 9. ということは… ´ IMUモード(地磁気センサーを切る)にして ´ 最初にスリッパを⽔平にまっすぐ置き ´ Linear Acceleration (ax, ay, az)と ´ Relative Orientation (α、β、γ)を読んで ´ 座標変換(ax’, ay’, az’)し ´ ax’とay’を2回積分すればいい ´ まずは、センサーを回転させないように測ってみよう 9 う、それでもそこそこ⾯倒
  10. 10. プログラム void setup() { Serial.begin(115200); I2C.begin(); mySensor.initSensor(); mySensor.setOperationMode(OPERATION_MODE_IMUPLUS); mySensor.updateAccelConfig(); void loop() { if ((millis() - lastStreamTime) >= streamPeriod) { lastStreamTime = millis(); Serial.print("Time: "); Serial.print(lastStreamTime); Serial.print("ms "); Serial.print(" a: "); Serial.print(mySensor.readLinearAccelX()); Serial.print(", "); Serial.print(mySensor.readLinearAccelY()); Serial.print(", "); Serial.print(mySensor.readLinearAccelZ()); Serial.print("m/s2 "); Serial.println(); }} 10
  11. 11. では、早速やってみましょう!11    1. 加速度センサーを静⽌状態で安定させる    2. 実際に歩いて加速度を測定する    3. 加速度を2回積分して移動距離を求める
  12. 12. 測定の概要 ´ 約4mの範囲で、歩いた軌跡を測定しました。 12 約4m 約4m センサーの持ち⽅ X⽅向 Y⽅向 ① ② ③ ④ 向きを変えないように注意して
  13. 13. 1. 加速度センサーを静⽌状態で安定させる ´ 静⽌状態でのセンサー値を測定 Time: 4591ms a: 0.00,0.03,0.10m/s2 Time: 4606ms a: -0.01,0.02,0.08m/s2 Time: 4625ms a: 0.00,0.03,0.08m/s2 Time: 4641ms a: 0.02,0.03,0.08m/s2 Time: 4657ms a: 0.00,0.03,0.08m/s2 Time: 4674ms a: -0.01,0.00,0.09m/s2 Time: 4690ms a: 0.01,0.01,0.08m/s2 Time: 4707ms a: 0.00,0.03,0.07m/s2 Time: 4724ms a: -0.02,0.01,0.08m/s2 Time: 4741ms a: 0.00,0.01,0.10m/s2 Time: 4757ms a: 0.00,0.01,0.08m/s2 Time: 4774ms a: 0.00,0.01,0.09m/s2 13 む〜ん、0.00にならない 少し振動してる…けど 許容できる誤差でしょう
  14. 14. 2. 実際に歩いて加速度を測定する ´ 概ね①〜④の動きに合っている。 14 -6 -4 -2 0 2 4 6 8 1 12 23 34 45 56 67 78 89 100 111 122 133 144 155 166 177 188 199 210 221 232 243 254 265 276 287 298 309 320 331 342 353 364 375 386 397 408 419 430 441 452 463 474 485 496 507 518 529 540 551 X⽅向における移動時間と加速度の推移(時間(ミリ秒)/距離(m)) lX(m/s2) ① ② ③ ④
  15. 15. 3. 加速度を2回積分して移動距離を求める ´ 約90m進んだようです。(あれ?・・・4mじゃ・・・ ) 15 0 10 20 30 40 50 60 70 80 90 100 1 12 23 34 45 56 67 78 89 100 111 122 133 144 155 166 177 188 199 210 221 232 243 254 265 276 287 298 309 320 331 342 353 364 375 386 397 408 419 430 441 452 463 474 485 496 507 518 529 540 551 X⽅向における移動時間と距離の推移(時間(ミリ秒)/距離(m)) X ① ② ③ ④ ここ
  16. 16. まとめ ´ 加速度を扱うのは⾼度な専⾨技術が必要 ´ 2回積分すると少しの誤差でも⼤幅なずれになる。 ´ 数値を取得できても、有効な値を抽出するのは困難。 ´ キャリブレーション、ローパスフィルター、座標変換など勉強 が必要。 ´ プロが提供するフュージョン機能を使ってさえ充分な精度は得 られない。 ´ センサーの安定までに時間がかかる。 ´ 加速度センサーでメガネを探すのはなかなか難しい ´ 平屋の前提でこの難易度⾼い。2階建てなら更にUP。 ´ 考慮できていないことも多い。(向き、連続利⽤など) 16

×