teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

追記

2019/05/03 10:06

投稿

tannu
tannu

スコア13

title CHANGED
File without changes
body CHANGED
@@ -110,4 +110,65 @@
110
110
  上記プログラムは関係なく**フィルタを適用した上での角度算出ができるプログラム**
111
111
  をお伺いしたいです.
112
112
 
113
- 知識不足な部分が多いかと思いますがよろしくお願いします.
113
+ 知識不足な部分が多いかと思いますがよろしくお願いします.
114
+
115
+ ### 追記
116
+ DMPを利用した角度を算出するプログラムを見つけることができたのですが,絶対角度で算出することができません.
117
+ こちらのコードから絶対角度を算出する方法があれば教えていただきたいです.
118
+ (加速度,ジャイロ,地磁気の値を取り出せれば回転行列によって求められるのですが,,,)
119
+ 以下にそのコードを添付いたします.(必要ないものはコメントアウトしています)
120
+ [参照サイト](http://kousukeno.seesaa.net/article/445610208.html)
121
+ ```Arduino
122
+ #include "freeram.h"
123
+
124
+ #include "mpu.h"
125
+ #include "I2Cdev.h"
126
+
127
+ int ret;
128
+ void setup() {
129
+ Fastwire::setup(400,0);
130
+ Serial.begin(9600);
131
+ ret = mympu_open(200);
132
+ //Serial.print("MPU init: "); Serial.println(ret);
133
+ //Serial.print("Free mem: "); Serial.println(freeRam());
134
+
135
+ }
136
+
137
+ unsigned int c = 0; //cumulative number of successful MPU/DMP reads
138
+ unsigned int np = 0; //cumulative number of MPU/DMP reads that brought no packet back
139
+ unsigned int err_c = 0; //cumulative number of MPU/DMP reads that brought corrupted packet
140
+ unsigned int err_o = 0; //cumulative number of MPU/DMP reads that had overflow bit set
141
+
142
+ void loop() {
143
+ ret = mympu_update();
144
+
145
+ switch (ret) {
146
+ case 0: c++; break;
147
+ case 1: np++; return;
148
+ case 2: err_o++; return;
149
+ case 3: err_c++; return;
150
+ default:
151
+ Serial.print("READ ERROR! ");
152
+ Serial.println(ret);
153
+ return;
154
+ }
155
+
156
+ if (!(c%25)) {
157
+ // Serial.print(np); Serial.print(" "); Serial.print(err_c); Serial.print(" "); Serial.print(err_o);
158
+ //Serial.print(" Yaw: ");
159
+ Serial.print(mympu.ypr[0]);
160
+   Serial.print(',');
161
+ //Serial.print(" Pitch: ");
162
+ Serial.print(mympu.ypr[1]);
163
+   Serial.print(',');
164
+ //Serial.print(" Roll: ");
165
+ Serial.println(mympu.ypr[2]);
166
+
167
+
168
+ //Serial.print("\tgy: "); Serial.print(mympu.gyro[0]);
169
+ //Serial.print(" gp: "); Serial.print(mympu.gyro[1]);
170
+ //Serial.print(" gr: "); Serial.println(mympu.gyro[2]);
171
+ }
172
+ }
173
+
174
+ ```