10. IMU読み取り

6軸IMUモジュールを通じて、PiDogは斜面に立っているか、持ち上げられているかを判断することができます。

6軸IMUモジュールには、3軸加速度計と3軸ジャイロスコープが搭載されており、3方向の加速度と角速度を測定することができます。

注釈

モジュールを使用する前に、正しく組み立てられていることを確認してください。モジュールのラベルで、逆さまになっているかどうかを確認できます。

加速度は次のように読み取ります:

ax, ay, az = Pidog.accData

PiDogが水平に置かれている場合、x軸の加速度(つまりax)は重力加速度(1g)に近く、値は-16384に近くなります。 y軸とx軸の値は0に近いです。

角速度を読み取るには次の方法を使用します

gx, gy, gz = my_dog.gyroData

PiDogが水平に置かれている場合、3つの値はすべて0に近いです。

6軸モジュールの使用例をいくつか紹介します

  1. リアルタイムの加速度、角速度を読み取る

from pidog import Pidog
import time

my_dog = Pidog()

my_dog.do_action("pushup", step_count=10, speed=20)

while True:
    ax, ay, az = my_dog.accData
    gx, gy, gz = my_dog.gyroData
    print(f"accData: {ax/16384:.2f} g ,{ay/16384:.2f} g, {az/16384:.2f} g       gyroData: {gx} °/s, {gy} °/s, {gz} °/s")
    time.sleep(0.2)
    if my_dog.is_legs_done():
        break

my_dog.stop_and_lie()

my_dog.close()
  1. PiDogの体の傾き角度を計算する

from pidog import Pidog
import time
import math

my_dog = Pidog()

while True:
    ax, ay, az = my_dog.accData
    body_pitch = math.atan2(ay,ax)/math.pi*180%360-180
    print(f"Body Degree: {body_pitch:.2f} °" )
    time.sleep(0.2)

my_dog.close()
  1. 傾いている間、PiDogは目線を水平に保つ。

from pidog import Pidog
import time
import math

my_dog = Pidog()

while True:
    ax, ay, az = my_dog.accData
    body_pitch = math.atan2(ay,ax)/math.pi*180%360-180
    my_dog.head_move([[0, 0, 0]], pitch_comp=-body_pitch, speed=80)
    time.sleep(0.2)

my_dog.close()