UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
BNO055

BNO055は 9軸ジャイロセンサーです。

地磁気センサーを使用することで、積算誤差による角度のズレをかなり正確に補正できます。

下にジャイロセンサのヨー角を取得する例を示します。ロボットにセンサーを水平に設置した場合、ヨー角がロボットの旋回角となります。

コンストラクタには、センサーと接続されている I2C 端子と対応する TwoWire オブジェクトを指定します。

#include <Udon.hpp>
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 Udon::Quaternion quaternion = gyro.getQuaternion();
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;