背景
メイン基板には地磁気センサーが搭載されています。(Bosch BMM150 ?)
sphero boltは接続した状態で持ち上げて向きを変えると暴れます。
これは向き(yaw)をAIMで合わせた方向に一定に保つことを重要にしているのかもしれません。
今回はコンパスを使ったプログラミングを試してみます。
Scratch
コンパスは動作のブロックでspheroの向きを変更することができるようです。
コンパスの向きの数字を押すと変更する方角を入力することができました。
「北の方角を探した後で、北(0deg)に向く」
使用している個体や環境の問題かもしれませんが、コンパスの向きの後にディレイを入れないと向きが変更されませんでした。
spheroV2
sphero_edu.pyのメソッドを参考に同様な動作をするスクリプトを作成しました。
import time
from spherov2 import scanner
from spherov2.sphero_edu import EventType, SpheroEduAPI
from spherov2.types import Color
print("Testing Starting...")
print("Connecting to Bolt...")
toy = scanner.find_BOLT()
if toy is not None:
print("Connected.")
with SpheroEduAPI(toy) as droid:
print("Testing Start...")
droid.reset_aim()
droid.set_stabilization(False)
droid.calibrate_compass()
droid.set_compass_direction(0)
# time.sleep(1)
print(droid.get_compass_direction()) # fake ?
droid.set_compass_direction(0)
time.sleep(1)
print(droid.get_compass_direction()) # fake ?
print("Testing End...")
実行結果はこちらのようになりました。
get_compassの値は正しくありませんでしたが、まだ検証中のようです。
git\spherov2.py\spherov2\test>python BoltTest_compass.py
Testing Starting...
Connecting to Bolt...
Connected.
Testing Start...
246
246
Testing End...
まとめ
地磁気センサーを入力に使ったプログラミングを実験しました。
spheroV2はゲッターが作成中のようですが、コンパスに合わせて向きを変えることはできるようです。