UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
BNO055.hpp
[詳解]
1//
2// BNO055 9軸センサー
3//
4// Copyright (c) 2022-2024 udonrobo
5//
6
7#pragma once
8
9#if defined(ARDUINO) && !defined(UDON_TEENSY_I2C_SLAVE_MODE)
10
11# include <Udon/Thirdparty/Adafruit_BNO055/Adafruit_BNO055.h>
12# include <Udon/Types/Euler.hpp>
14
15namespace Udon
16{
17
19 class BNO055
20 : Adafruit_BNO055
21 {
23 QuaternionDirection direction;
24
26 Quaternion offset;
27
28 Quaternion quaternion;
29
30 public:
34 BNO055(TwoWire& wire, const QuaternionDirection& direction = { true, true, true })
35 : Adafruit_BNO055(-1, 0x28, &wire)
36 , direction(direction)
37 , offset(Quaternion::Identity())
38 , quaternion(Quaternion::Identity())
39 {
40 }
41
45 bool begin()
46 {
47 return Adafruit_BNO055::begin();
48 }
49
51 void clear()
52 {
53 offset = quaternion;
54 }
55
57 void update()
58 {
59 const auto q = Adafruit_BNO055::getQuat();
60 quaternion = { q.x(), q.y(), q.z(), q.w() };
61 }
62
65 Quaternion getQuaternion() const
66 {
67 return (offset.inverse() * quaternion).directionRevision(direction); // オフセットを引き、回転方向を修正
68 }
69
72 Euler getEuler() const
73 {
74 return getQuaternion().toEuler();
75 }
76
79 double getYaw() const
80 {
81 return getQuaternion().toYaw();
82 }
83
85 void show() const
86 {
87 Show(getEuler());
88 }
89 };
90
91} // namespace Udon
92
93#endif
Definition Bit.hpp:12
void Show(Args &&... args)
区切り文字ありで出力する
Definition Show.hpp:339