このライブラリは、InvensenseMPU-6500、InvenSense MPU-9250、および MPU-9255 慣性測定ユニット (IMU) と通信します。このライブラリは、Arduino および CMake ビルド システムと互換性があります。
Invense MPU-6500 は、3 軸ジャイロスコープおよび 3 軸加速度計です。 InvenSense MPU-9250 は、MPU-6500 3 軸ジャイロスコープと 3 軸加速度計の 2 つのチップを組み合わせたシステム イン パッケージ (SiP) です。そしてAK8963 3軸磁力計。 MPU-6500 および MPU-9250 は、最大 400 kHz の I2C、およびレジスタ設定で最大 1 MHz、データ読み取りで 20 MHz の SPI 通信をサポートします。次の選択可能なフルスケール センサー範囲が利用可能です。
ジャイロスコープのフルスケール範囲 | 加速度計のフルスケール範囲 | 磁力計のフルスケール範囲 (MPU-9250 のみ) |
---|---|---|
+/- 250 度/秒 | +/- 2g | +/- 4800 μT |
+/- 500 度/秒 | +/- 4g | |
+/- 1000 度/秒 | +/- 8g | |
+/- 2000 度/秒 | +/- 16g |
IMU は、16 ビットのアナログ - デジタル コンバータを使用してジャイロ、加速度計、磁力計をサンプリングします。また、プログラム可能なデジタル フィルター、高精度クロック、内蔵温度センサーも備えています。
Arduino ライブラリ マネージャーを使用して、このライブラリをインストールするか、Arduino/libraries フォルダーにクローンを作成します。
MPU-6500 の場合、このライブラリは次のように追加されます。
# include " mpu6500.h "
MPU-9250 の場合、このライブラリは次のように追加されます。
# include " mpu9250.h "
Arduino 実行可能ファイルの例は、 examples/arduino/にあります。 Teensy 3.x、4.x、および LC デバイスは Arduino でのテストに使用され、このライブラリは他の Arduino デバイスと互換性がある必要があります。
このライブラリは CMake を使用して構築され、 invensense_imuというライブラリ ターゲットとしてエクスポートされます。
MPU-6500 の場合、このライブラリは次のように追加されます。
# include " mpu6500.h "
MPU-9250 の場合、このライブラリは次のように追加されます。
# include " mpu9250.h "
ライブラリは、ビルドディレクトリを作成し、そのディレクトリ内から次のコマンドを発行する CMake イディオムを使用してスタンドアロンでコンパイルすることもできます。
cmake .. -DMCU=MK66FX1M0
make
これにより、 i2c_example 、 spi_example 、 drdy_spi_example 、およびwom_example (MPU-9250 のみ) というライブラリとサンプル実行可能ファイルがビルドされます。実行可能ソース ファイルの例は、examples/cmakeにあります。 cmakeコマンドには、コードがコンパイルされるマイクロコントローラーを指定する定義が含まれていることに注意してください。これは、コード、CPU 周波数、コンパイル/リンカー オプションを正しく設定するために必要です。利用可能な MCU は次のとおりです。
これらは、Teensy 製品で使用されているのと同じパッケージで動作することが知られています。また、パッケージの変更だけであれば、パッケージの切り替えもうまく機能することが知られています。
サンプル ターゲットは、I2C または SPI 通信を使用したセンサーとの通信、データレディ割り込みの使用、ウェイク オン モーション割り込みの使用をそれぞれ行うための実行可能ファイルを作成します。各ターゲットには、マイクロコントローラーにアップロードする hex ファイルを作成するための_hexと、Teensy CLI Uploader を使用して Teensy をフラッシュするための_uploadもあります。ビルド環境をセットアップする手順は、ビルド ツール リポジトリに記載されていることに注意してください。
このライブラリは名前空間bfs内にあります。
このクラスは、これらのセンサーのレジスターの読み取りおよび書き込みを行うためのメソッドを提供します。これは少なくとも MPU-6000、MPU-6050、MPU-6500、MPU-9150、および MPU-9250 で動作するはずです。ただし、他のセンサーでも同様に機能する可能性があります。ほとんどのユーザーは、おそらく以下のセンサー固有のクラスを好むでしょう。ただし、このクラスを使用すると、より優れた機能を利用できるようになり、独自のセンサー ドライバーの出発点として使用できるようになります。
InvensenseImu()デフォルトのコンストラクター。I2C または SPI バスと I2C アドレスまたは SPI チップ選択ピンをセットアップするには、 Configメソッドを呼び出す必要があります。
InvensenseImu(TwoWire *i2c, const uint8_t addr) InvensenseImu オブジェクトを作成します。このコンストラクタは、I2C 通信インターフェイスに使用されます。 I2C バス オブジェクトへのポインタは、センサーの I2C アドレスとともに渡されます。
InvensenseImu(SPIClass *bus, uint8_t cs) InvensenseImu オブジェクトを作成します。このコンストラクタは、SPI 通信インターフェイスに使用されます。 SPI バス オブジェクトへのポインタは、センサーのチップ選択ピンとともに渡されます。デジタル I/O が可能なピンはどれもチップ選択ピンとして使用できます。
void Config(TwoWire *bus, const uint8_t addr)これは、デフォルトのコンストラクターを使用し、I2C バスと I2C アドレスを設定する場合に必要です。
void Config(SPIClass *spi, const uint8_t cs)これは、デフォルトのコンストラクターを使用し、SPI バスとチップ選択ピンを設定する場合に必要です。
void Begin()センサーとの通信を初期化します。通信バスはこのライブラリ内では初期化されないため、個別に初期化する必要があります。これにより、同じバス上にある他のセンサーとの互換性が強化されます。
bool WriteRegister(const uint8_t reg, const uint8_t data, const int32_t spi_ Clock)指定されたレジスタ アドレスとデータをセンサーにレジスタ データを書き込みます。 SPI通信を使用する場合は、SPIクロック速度を指定する必要があります。
bool WriteRegister(const uint8_t reg, const uint8_t data) I2C 通信を使用する場合の上記のオーバーロード。
bool ReadRegisters(const uint8_t reg, const uint8_t count, const int32_t spi_lock, uint8_t * const data) 指定されたレジスタ アドレス、読み取るレジスタの数、SPI クロック、およびデータを保存するポインタを指定して、センサーからレジスタ データを読み取ります。
bool ReadRegisters(const uint8_t reg, const uint8_t count, uint8_t * const data) I2C 通信を使用する場合の上記のオーバーロード。
このクラスは、MPU-9250 および MPU-9255 IMU で動作します。
Mpu9250()デフォルトのコンストラクター。I2C または SPI バスと I2C アドレスまたは SPI チップ選択ピンをセットアップするには、 Configメソッドを呼び出す必要があります。
Mpu9250(i2c_t3 *bus, I2cAddr addr) Mpu9250 オブジェクトを作成します。このコンストラクタは、I2C 通信インターフェイスに使用されます。 I2C バス オブジェクトへのポインタは、センサーの I2C アドレスとともに渡されます。 AD0 ピンが接地されている場合、アドレスは I2C_ADDR_PRIM (0x68) になり、AD0 ピンが High にプルされている場合、アドレスは I2C_ADDR_SEC (0x69) になります。
Mpu9250 mpu9250 (&Wire, bfs::Mpu9250::I2C_ADDR_PRIM);
Mpu9250(SPIClass *bus, uint8_t cs) Mpu9250 オブジェクトを作成します。このコンストラクタは、SPI 通信インターフェイスに使用されます。 SPI バス オブジェクトへのポインタは、センサーのチップ選択ピンとともに渡されます。デジタル I/O が可能なピンはどれもチップ選択ピンとして使用できます。
Mpu9250 mpu9250 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr)これは、デフォルトのコンストラクターを使用し、I2C バスと I2C アドレスを設定する場合に必要です。 AD0 ピンが接地されている場合、アドレスは I2C_ADDR_PRIM (0x68) になり、AD0 ピンが High にプルされている場合、アドレスは I2C_ADDR_SEC (0x69) になります。
void Config(SPIClass *spi, const uint8_t cs)これは、デフォルトのコンストラクターを使用し、SPI バスとチップ選択ピンを設定する場合に必要です。
bool Begin()センサーとの通信を初期化し、デフォルトのセンサー範囲、サンプリング レート、ローパス フィルター設定を構成します。デフォルトの加速度計の範囲は +/- 16g、デフォルトのジャイロ範囲は +/- 2,000 deg/s です。デフォルトのサンプリング レートは 1000 Hz で、ローパス フィルターのカットオフ周波数は 184 Hz に設定されています。センサーとの通信が確立でき、設定が正常に完了した場合は true が返され、それ以外の場合は false が返されます。通信バスはこのライブラリ内では初期化されないため、個別に初期化する必要があります。これにより、同じバス上にある他のセンサーとの互換性が強化されます。
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu9250.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt()データレディ割り込みを有効にします。 IMU データの準備が完了すると、MPU-9250 INT ピンで 50 us の割り込みがトリガーされます。この割り込みはアクティブ High です。このメソッドは、割り込みが正常に有効化された場合は true を返し、それ以外の場合は false を返します。
bool status = mpu9250.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt()データレディ割り込みを無効にします。このメソッドは、割り込みが正常に無効化された場合は true を返し、それ以外の場合は false を返します。
bool status = mpu9250.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range)加速度計のフルスケール範囲を設定します。オプションは次のとおりです。
範囲 | 列挙値 |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
加速度計の範囲が正常に設定された場合は true が返され、それ以外の場合は false が返されます。デフォルトの範囲は +/-16g です。
bool status = mpu9250.ConfigAccelRange(bfs::Mpu9250::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range()現在の加速度計の範囲を返します。
AccelRange range = mpu9250.accel_range();
bool ConfigGyroRange(const GyroRange range)ジャイロのフルスケール範囲を設定します。オプションは次のとおりです。
範囲 | 列挙値 |
---|---|
+/- 250 度/秒 | GYRO_RANGE_250DPS |
+/- 500 度/秒 | GYRO_RANGE_500DPS |
+/- 1000 度/秒 | GYRO_RANGE_1000DPS |
+/- 2000 度/秒 | GYRO_RANGE_2000DPS |
ジャイロ範囲の設定に成功すると true が返され、それ以外の場合は false が返されます。デフォルトの範囲は +/-2000 度/秒です。
bool status = mpu9250.ConfigGyroRange(bfs::Mpu9250::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range()現在のジャイロ範囲を返します。
GyroRange range = mpu9250.gyro_range();
bool ConfigSrd(const uint8_t srd)センサーのサンプル レート分周器を設定します。 MPU-9250 は、次のように定義されるレート (Hz) で加速度計とジャイロをサンプリングします。
srd設定が 0 の場合は、MPU-9250 が加速度計とジャイロを 1000 Hz でサンプリングすることを意味します。 srd設定を 4 にすると、サンプリングが 200 Hz に設定されます。 IMU データレディ割り込みは、サンプル レート デバイダによって定義されたレートに関連付けられます。磁力計は、100 Hz 以上に対応するサンプル レート分周値の場合、100 Hz でサンプリングされます。それ以外の場合、磁力計は 8 Hz でサンプリングされます。
サンプル レート分割器の設定が成功すると True が返され、それ以外の場合は False が返されます。デフォルトのサンプル レート分周値は 0 で、サンプル レートは 1000 Hz になります。
/* Set sample rate divider for 50 Hz */
bool status = mpu9250.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd()現在のサンプル レート分周値を返します。
uint8_t srd = mpu9250.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf)加速度センサー、ジャイロセンサー、および温度センサーのデジタル ローパス フィルターのカットオフ周波数を設定します。利用可能な帯域幅は次のとおりです。
DLPF帯域幅 | 列挙値 |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
デジタル ローパス フィルターの設定に成功すると true が返され、それ以外の場合は false が返されます。デフォルトの帯域幅は 184 Hz です。
bool status = mpu9250.ConfigDlpfBandwidth(bfs::Mpu9250::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth()現在のデジタル ローパス フィルターの帯域幅設定を返します。
DlpfBandwidth dlpf = mpu9250.dlpf_bandwidth();
bool EnableWom(int16_t Threshold_mg, const WomRate wom_rate) Wake-On-Motion 割り込みを有効にします。 MPU-9250 を低電力状態にし、 WomRateによって決定された間隔でウェイクアップします。加速度計がしきい値、 threshold_mgを超える動きを検出すると、MPU-9250 割り込みピンから 50us パルスを生成します。次の列挙された WOM レートがサポートされています。
WOM サンプル レート | 列挙値 |
---|---|
0.24Hz | WOM_RATE_0_24HZ |
0.49Hz | WOM_RATE_0_49HZ |
0.98Hz | WOM_RATE_0_98HZ |
1.95Hz | WOM_RATE_1_95HZ |
3.91Hz | WOM_RATE_3_91HZ |
7.81Hz | WOM_RATE_7_81HZ |
15.63Hz | WOM_RATE_15_63HZ |
31.25Hz | WOM_RATE_31_25HZ |
62.50Hz | WOM_RATE_62_50HZ |
125Hz | WOM_RATE_125HZ |
250Hz | WOM_RATE_250HZ |
500Hz | WOM_RATE_500HZ |
動きのしきい値は 4 ~ 1020 mg の値として指定され、内部で 1 バイトの 1 ~ 255 の値にマッピングされます。この関数は、Wake On Motion が正常に有効になった場合は true を返し、それ以外の場合は false を返します。 wom_i2c の例を参照してください。以下は、40 mg のしきい値と 31.25 Hz の ODR でウェイク オン モーションを有効にする例です。
imu.EnableWom( 40 , bfs::Mpu9250::WOM_RATE_31_25HZ);
void Reset() MPU-9250をリセットします。
bool Read() MPU-9250 からデータを読み取り、Mpu9250 オブジェクトにデータを格納します。データが正常に読み取られた場合は true を返し、それ以外の場合は false を返します。
/* Read the IMU data */
if (mpu9250.Read()) {
}
bool new_imu_data()加速度計とジャイロから新しいデータが返された場合は true を返します。
if (mpu9250.Read()) {
bool new_data = mpu9250. new_imu_data ();
}
bool new_mag_data()磁力計から新しいデータが返された場合は true を返します。 MPU-9250 のサンプル レートが 100 Hz 以上の場合、磁力計は 100 Hz でサンプリングされます。 MPU-9250 のサンプル レートが 100 Hz 未満の場合、磁力計は 8 Hz でサンプリングされるため、新しい IMU データは受信しても、新しい磁力計データは受信しないことは珍しくありません。
if (mpu9250.Read()) {
bool new_mag = mpu9250. new_mag_data ();
}
float accel_x_mps2() Mpu9250 オブジェクトからの x 加速度計データを m/s/s の単位で返します。 y 軸と z 軸のデータにも同様の方法が存在します。
/* Read the IMU data */
if (mpu9250.Read()) {
float ax = mpu9250. accel_x_mps2 ();
float ay = mpu9250. accel_y_mps2 ();
float az = mpu9250. accel_z_mps2 ();
}
float gyro_x_radps() Mpu9250 オブジェクトからの x ジャイロ データを rad/s 単位で返します。 y 軸と z 軸のデータにも同様の方法が存在します。
/* Read the IMU data */
if (mpu9250.Read()) {
float gx = mpu9250. gyro_x_radps ();
float gy = mpu9250. gyro_y_radps ();
float gz = mpu9250. gyro_z_radps ();
}
float mag_x_ut() Mpu9250 オブジェクトからの x 磁力計データを uT 単位で返します。 y 軸と z 軸のデータにも同様の方法が存在します。
/* Read the IMU data */
if (mpu9250.Read()) {
float hx = mpu9250. mag_x_ut ();
float hy = mpu9250. mag_y_ut ();
float hz = mpu9250. mag_z_ut ();
}
float die_temp_c()センサーのダイ温度を℃単位で返します。
/* Read the IMU data */
if (mpu9250.Read()) {
float temp = mpu9250. die_temp_c ();
}
このクラスは MPU-6500 センサーで動作します。
Mpu6500()デフォルトのコンストラクター。I2C または SPI バスと I2C アドレスまたは SPI チップ選択ピンをセットアップするには、 Configメソッドを呼び出す必要があります。
Mpu6500(i2c_t3 *bus, I2cAddr addr) Mpu6500 オブジェクトを作成します。このコンストラクタは、I2C 通信インターフェイスに使用されます。 I2C バス オブジェクトへのポインタは、センサーの I2C アドレスとともに渡されます。 AD0 ピンが接地されている場合、アドレスは I2C_ADDR_PRIM (0x68) になり、AD0 ピンが High にプルされている場合、アドレスは I2C_ADDR_SEC (0x69) になります。
Mpu6500 mpu6500 (&Wire, bfs::Mpu6500::I2C_ADDR_PRIM);
Mpu6500(SPIClass *bus, uint8_t cs) Mpu6500 オブジェクトを作成します。このコンストラクタは、SPI 通信インターフェイスに使用されます。 SPI バス オブジェクトへのポインタは、センサーのチップ選択ピンとともに渡されます。デジタル I/O が可能なピンはどれもチップ選択ピンとして使用できます。
Mpu6500 mpu6500 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr)これは、デフォルトのコンストラクターを使用し、I2C バスと I2C アドレスを設定する場合に必要です。 AD0 ピンが接地されている場合、アドレスは I2C_ADDR_PRIM (0x68) になり、AD0 ピンが High にプルされている場合、アドレスは I2C_ADDR_SEC (0x69) になります。
void Config(SPIClass *spi, const uint8_t cs)これは、デフォルトのコンストラクターを使用し、SPI バスとチップ選択ピンを設定する場合に必要です。
bool Begin()センサーとの通信を初期化し、デフォルトのセンサー範囲、サンプリング レート、ローパス フィルター設定を構成します。デフォルトの加速度計の範囲は +/- 16g、デフォルトのジャイロ範囲は +/- 2,000 deg/s です。デフォルトのサンプリング レートは 1000 Hz で、ローパス フィルターのカットオフ周波数は 184 Hz に設定されています。センサーとの通信が確立でき、設定が正常に完了した場合は true が返され、それ以外の場合は false が返されます。通信バスはこのライブラリ内では初期化されないため、個別に初期化する必要があります。これにより、同じバス上にある他のセンサーとの互換性が強化されます。
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu6500.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt()データレディ割り込みを有効にします。 IMU データの準備が完了すると、MPU-9250 INT ピンで 50 us の割り込みがトリガーされます。この割り込みはアクティブ High です。このメソッドは、割り込みが正常に有効化された場合は true を返し、それ以外の場合は false を返します。
bool status = mpu6500.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt()データレディ割り込みを無効にします。このメソッドは、割り込みが正常に無効化された場合は true を返し、それ以外の場合は false を返します。
bool status = mpu6500.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range)加速度計のフルスケール範囲を設定します。オプションは次のとおりです。
範囲 | 列挙値 |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
加速度計の範囲が正常に設定された場合は true が返され、それ以外の場合は false が返されます。デフォルトの範囲は +/-16g です。
bool status = mpu6500.ConfigAccelRange(bfs::Mpu6500::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range()現在の加速度計の範囲を返します。
AccelRange range = mpu6500.accel_range();
bool ConfigGyroRange(const GyroRange range)ジャイロのフルスケール範囲を設定します。オプションは次のとおりです。
範囲 | 列挙値 |
---|---|
+/- 250 度/秒 | GYRO_RANGE_250DPS |
+/- 500 度/秒 | GYRO_RANGE_500DPS |
+/- 1000 度/秒 | GYRO_RANGE_1000DPS |
+/- 2000 度/秒 | GYRO_RANGE_2000DPS |
ジャイロ範囲の設定に成功すると true が返され、それ以外の場合は false が返されます。デフォルトの範囲は +/-2000 度/秒です。
bool status = mpu6500.ConfigGyroRange(bfs::Mpu6500::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range()現在のジャイロ範囲を返します。
GyroRange range = mpu6500.gyro_range();
bool ConfigSrd(const uint8_t srd)センサーのサンプル レート分周器を設定します。 MPU-9250 は、次のように定義されるレート (Hz) で加速度計とジャイロをサンプリングします。
srd設定が 0 の場合は、MPU-9250 が加速度計とジャイロを 1000 Hz でサンプリングすることを意味します。 srd設定を 4 にすると、サンプリングが 200 Hz に設定されます。 IMU データレディ割り込みは、サンプル レート デバイダによって定義されたレートに関連付けられます。磁力計は、100 Hz 以上に対応するサンプル レート分周値の場合、100 Hz でサンプリングされます。それ以外の場合、磁力計は 8 Hz でサンプリングされます。
サンプル レート分割器の設定が成功すると True が返され、それ以外の場合は False が返されます。デフォルトのサンプル レート分周値は 0 で、サンプル レートは 1000 Hz になります。
/* Set sample rate divider for 50 Hz */
bool status = mpu6500.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd()現在のサンプル レート分周値を返します。
uint8_t srd = mpu6500.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf)加速度センサー、ジャイロセンサー、および温度センサーのデジタル ローパス フィルターのカットオフ周波数を設定します。利用可能な帯域幅は次のとおりです。
DLPF帯域幅 | 列挙値 |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
デジタル ローパス フィルターの設定に成功すると true が返され、それ以外の場合は false が返されます。デフォルトの帯域幅は 184 Hz です。
bool status = mpu6500.ConfigDlpfBandwidth(bfs::Mpu6500::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth()現在のデジタル ローパス フィルターの帯域幅設定を返します。
DlpfBandwidth dlpf = mpu6500.dlpf_bandwidth();
bool Read() MPU-6500 からデータを読み取り、Mpu6500 オブジェクトにデータを格納します。データが正常に読み取られた場合は true を返し、それ以外の場合は false を返します。
/* Read the IMU data */
if (mpu6500.Read()) {
}
bool new_imu_data()加速度計とジャイロから新しいデータが返された場合は true を返します。
if (mpu6500.Read()) {
bool new_data = mpu6500. new_imu_data ();
}
float accel_x_mps2() Mpu6500 オブジェクトからの x 加速度計データを m/s/s の単位で返します。 y 軸と z 軸のデータにも同様の方法が存在します。
/* Read the IMU data */
if (mpu6500.Read()) {
float ax = mpu6500. accel_x_mps2 ();
float ay = mpu6500. accel_y_mps2 ();
float az = mpu6500. accel_z_mps2 ();
}
float gyro_x_radps() Mpu6500 オブジェクトからの x ジャイロ データを rad/s 単位で返します。 y 軸と z 軸のデータにも同様の方法が存在します。
/* Read the IMU data */
if (mpu6500.Read()) {
float gx = mpu6500. gyro_x_radps ();
float gy = mpu6500. gyro_y_radps ();
float gz = mpu6500. gyro_z_radps ();
}
float die_temp_c()センサーのダイ温度を℃単位で返します。
/* Read the IMU data */
if (mpu6500.Read()) {
float temp = mpu6500. die_temp_c ();
}
このライブラリは、すべてのデータを返す前に共通の座標系に変換します。この軸系を以下に示します。これは、航空機のダイナミクスで一般的な、Z 軸が正の下向きの右手座標系です。
注意!この軸システムは、MPU-6500 および MPU-9250 センサーを基準にして示されています。センサーはブレークアウトボードに対して回転させることができます。