0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

sphero boltで遊ぶAdvent Calendar 2024

Day 16

入力: 速度

Last updated at Posted at 2024-12-15

背景

メイン基板にはIMUが搭載されているので速度の計算もできるようです。

今回はコンパスを使ったプログラミングを試してみます。

Scratch

速度はセンサのブロックで値を取得することができるようです。

image.png

「速度が2未満であれば正面LEDを青色で点灯し、2を超えると正面LEDを赤色で点灯させる」

image.png

手で持ち上げて素早く動かしている間、正面LEDの色が青から赤に変わりました。

spheroV2

BoltTest.pyとsphero_edu.pyのメソッドを参考に同様な動作をするスクリプトを作成しました。
CTRL+Cで終了します。

import time
import keyboard
import math

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.set_main_led(Color(r=0, g=255, b=0))
        time.sleep(1)
        droid.set_main_led(Color(r=0, g=0, b=0))
        time.sleep(1)        
        droid.set_stabilization(False)
        time.sleep(1)
        
        try:
            while True:
                velocity = droid.get_velocity()
                time.sleep(0.1)
                
                if  math.sqrt((velocity['x']))^2 + (velocity['y'])^2) < 2 :
                    droid.set_front_led(Color(r=0, g=225, b=0)) 
                else:
                    droid.set_front_led(Color(r=225, g=0, b=0)) 
                    print(f"Velocity: x={velocity['x']:.1f}, y={velocity['y']:.1f}")

        except KeyboardInterrupt:
            print("\nProgram interrupted by user.")

        except Exception as e:
            print(f"An error occurred: {e}")

        print("Testing End...")
else:
    print("Failed to connect to Sphero.")
  

実行結果はこちらのようになりました。
なぜか上下方向がx、前後方向がyになっていました。

git\spherov2.py\spherov2\test>python BoltTest_velocityMeter1.py
Testing Starting...
Connecting to Bolt...
Connected.
Testing Start...
Velocity: x=1.0, y=1.9
Velocity: x=0.1, y=-2.8
Velocity: x=-1.6, y=-4.1

Program interrupted by user.
Testing End...

まとめ

加速度センサーからの速度を入力に使ったプログラミングを実験しました。
ScratchとspheroV2の両方とも軸と対応が分かりにくいようなので、自転車や車に乗せて調べてみると面白そうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?