BNO055は 9軸ジャイロセンサーです。地磁気センサーを使用することで、積算誤差による角度のズレをかなり正確に補正できます。
下にジャイロセンサのヨー角を取得する例を示します。ロボットにセンサーを水平に設置した場合、ヨー角がロボットの旋回角となります。
コンストラクタには、センサーと接続されている I2C 端子と対応する TwoWire オブジェクトを指定します。
#include <Udon.hpp>
static Udon::BNO055 gyro{ Wire };
void setup()
{
gyro.begin();
}
void loop()
{
gyro.update();
const double yaw = gyro.getQuaternion().toYaw(); // gyro.getYaw(); も同義
}
オイラー角からヨー角を取得することもできますが、ヨー角のみを取得する場合、クオータニオンからヨー角を求める方がパフォーマンス的に良いです。(内部的にクオータニオンを用いており、オイラー角に変換する段階で不要なピッチ、ロール角まで求めてしまうため)
const double yaw = gyro.getEuler().yaw;