BNO055をI2CとUARTで使用するためのライブラリ。UARTはmbedにて不安定なため使用できるボードとできないボードがある模様。
Dependents: BNO055_BME280_ Yabusame2_gyro GRhanawaizman test_deg_read
Diff: BNO055.cpp
- Revision:
- 4:9efb4abafd2e
- Parent:
- 3:363ec3772dce
- Child:
- 5:64b033b30802
--- a/BNO055.cpp Sun Jun 25 05:10:27 2017 +0000 +++ b/BNO055.cpp Mon May 13 14:17:45 2019 +0000 @@ -678,7 +678,7 @@ setOperation_CONFIG(); //外部発振子設定,セルフテストの実行,セルフテスト完了まで待つ - setSysTrigger(0x81); + //setSysTrigger(0x81); //加速度センサーレンジ設定(+-8G) //地磁気や角速度センサーのレンジやバンドはFusionモードにより自動設定される @@ -1161,17 +1161,21 @@ //四元数からオイラー角に変換 //ref: Wikipedia //Conversion between quaternions and Euler angles(Quaternion to Euler Angles Conversion) + // 2019/05/13: 記事中のRollとPitchの軸の説明が逆であるため修正 double q3q3 = q3 * q3; + //Y-axis rotation double m1 = +2.0 * (q1 * q2 + q3 * q4); double m2 = +1.0 - 2.0 * (q2 * q2 + q3q3); - E_roll = atan2(m1, m2) * 57.2957795131; + E_pitch = atan2(m1, m2) * 57.2957795131; + //X-axis rotation m1 = +2.0 * (q1 * q3 - q4 * q2); m1 = (m1 > 1.0)? 1.0 : m1; m1 = (m1 < -1.0)? -1.0 : m1; - E_pitch = asin(m1) * 57.2957795131; + E_roll = asin(m1) * 57.2957795131; + //Z-axis rotation m1 = +2.0 * (q1 * q4 + q2 * q3); m2 = +1.0 - 2.0 * (q3q3 + q4 * q4); E_heading = atan2(m1, m2) * 57.2957795131;