Spresense IMU ボード (CXD5602PWBIMU) は、16個のMEMS IMUを合成するソニー独自の技術により、単体のMEMS IMUに対して低バイアス変動及び地球時点検出が可能な低ノイズ密度を実現した加速度センサー、ジャイロスコープそれぞれ3軸、合計6軸のIMUボードです。
- このボードは内部で合成処理を行うため、外からは単体の6軸IMUとして機能します。
- IMUボードのデバイスドライバは、POSIXに準拠したデバイスファイル(デフォルトパス
/dev/imu0
)を介して制御します。
利用するAPIは、 open()
/ ioctl()
/ read()
/ close()
の4種類のみです。
基本的な流れは、
- デバイスファイルの
open()
ioctl()
で各種設定read()
でIMUデータの読み出し(必要な期間繰り返す)close()
で終了
となります。
-
open()
: デバイスファイルを開き、ファイルディスクリプタ(ファイルアクセスに必要な番号)を取得します。 -
ioctl()
: IMUが出力するサンプリングレート、加速度センサーとジャイロスコープのダイナミックレンジ、IMU内部で持っているFIFOの段数、IMUのデータ出力を制御します.SNIOC_SSAMPRATE
: IMUが出力するサンプリングレートを設定します。SNIOC_SDRANGE
: IMUの加速度センサーとジャイロスコープのダイナミックレンジを設定します。SNIOC_SFIFOTHRESH
: FIFOの段数を指定します。SNIOC_ENABLE
: IMUのデータ出力を制御します。
-
read()
: IMUの6軸データをIMU アドオンボードから読み出します。 -
close()
: デバイスファイルをCloseし、IMUを停止させます。
API名 | ioctlコマンド名 | 概略説明 |
---|---|---|
open() | IMUのデバイスファイルを開いてファイルディスクリプタを取得します。 | |
ioctl() | SNIOC_SSAMPRATE | IMUが出力するサンプリングレートを設定します。 |
SNIOC_SDRANGE | IMUの加速度センサーとジャイロスコープのダイナミックレンジを設定します。 | |
SNIOC_SFIFOTHRESH | IMU内部で持っているFIFOの段数を指定します。 | |
SNIOC_ENABLE | IMUのデータ出力を制御します。 | |
read() | IMUの6軸データをIMU アドオンボードから読み出します。 | |
close() | デバイスファイルをCloseし、IMUを停止させます。 |
- https://github.com/sonydevworld/spresense/tree/master/examples/gyro/gyro_main.c
- https://github.com/sonydevworld/spresense/tree/master/examples/mag/mag_main.c
- IMUアドオンボード デバイスドライバ (CXD5602PWBIMU Driver)