BNO055は 9軸ジャイロセンサーです。
地磁気センサーを使用することで、積算誤差による角度のズレをかなり正確に補正できます。
下にジャイロセンサのヨー角を取得する例を示します。ロボットにセンサーを水平に設置した場合、ヨー角がロボットの旋回角となります。
コンストラクタには、センサーと接続されている I2C 端子と対応する TwoWire オブジェクトを指定します。
static Udon::BNO055 gyro{ Wire };
void setup()
{
Serial.begin(115200);
gyro.begin();
}
void loop()
{
gyro.update();
const double yaw = gyro.getYaw();
Serial.println(yaw);
}
ヨー角以外の角度を取得する
ヨー角以外の角度を取得する場合は、クオータニオンを取得後、各角度へ変換します。
Unity などに姿勢を送る際は、クオータニオンを送信します。(オイラー角はシンバルロックが起きる可能性があります)
const double yaw = quaternion.
toYaw();
const double pitch = quaternion.
toPitch();
const double roll = quaternion.
toRoll();
クオータニオン
Definition Quaternion.hpp:30
double toPitch() const noexcept
ピッチ角を取得
Definition Quaternion.hpp:189
double toYaw() const noexcept
ヨー角を取得
Definition Quaternion.hpp:183
double toRoll() const noexcept
ロール角を取得
Definition Quaternion.hpp:195
オイラー角から取得することもできますが、ヨー角のみを取得する場合、クオータニオンからヨー角を求める方がパフォーマンス的に良いです。(内部的にクオータニオンを用いており、オイラー角に変換する段階で不要なピッチ、ロール角まで求めてしまうため)
const double yaw = gyro.getEuler().yaw;