micro:bit 平面台ロボット制御(コントローラ編)

ロボット

平面台ロボット構想

micro:bitの加速度センサーを使用して、小型の玉を使用した「箱型迷路ゲーム」を制御する置台となる平面台ロボットをmicro:bitの加速度センサーで操作する。そのシステムイメージを下記に示す。

micro:bit の加速度センサー

加速度センサー特徴を以下にまとめる

  • micro:bitの加速度センサーは、X/Y/Z軸の加速度を測定
  • 各軸を原点を中心に軸端を回転
  • 各加速度は重力の軸方向成分(と回転時の加速度の和)
  • 完全な姿勢制御には6軸(+ジャイロ3軸)センサーが必要
  • 単にmicro:bit基板の傾き(X/Y)を知りたい場合は、出来るだけゆっくり(重力加速度以外を排除)回転させる

※ 実際取得される加速度値は micro:bit 内部で算定される為に ±1023 より大きい(小さい)場合がある

加速度取得通信 ブロックコード

  • 入力の[加速度:X/Y/Z]を読み出して使う(以後Z軸加速度は使用しないので読み出さない)
  • 測定値を直接確認する為にシリアル通信で表示させる
  • 測定値は誤差(動きによる加速度含めて)を含む為、過去時系列データを用いた平滑化等を行う必要あり
  • 最も簡単な平滑化は単純移動平均法(Σ{過去データ}/データ数)このコードではデータ数=8
  • X, Y加速度値(-511~511)を 5×5 LED(X, Y)で表示
  • 下記はブロックコードの共有リンク

MakeCodeでブロックコードをmicro:bitにダウンロードすると画面左側に [データを表示 デバイス] と表示されるのでクリック。

画面下部には、シリアル通信(100m秒毎に出力)データ(X加速度, Y加速度)が表示され、画面上部には、取得して平滑化されたX, Y加速度が時系列折れ線グラフで表示される。

※ 上記シリアル通信の表示は、実際の受信データではなくてローカル表示と思われる

Send Acceleration Data Using Serial Communication V2
Made with ❤️ in Microsoft MakeCode for micro:bit.

試しに、Windowsの通信端末アプリ(Tera Term)でシリアル受信したが、時々データ化けが発生している。おそらくmicro:bit内の何かの処理が間に合わないのでは?

実際のシリアル通信では、何らかのデータ化け対策が必要となりそう!!

コメント

タイトルとURLをコピーしました