IMU WT901からUARTでデータ取得⑤9軸の情報の取得

 前回まで、WT901からクオータニオン出力を取り込みました。ここでは、もともとのIMUセンサの出力である加速度Acceleration、角速度Velocity、地磁気Magnetismを取り出します。

設定の変更

 設定ソフトMiniMU.exeを起動し、メニューのconfigをクリックします。Quaternionのチェックを外し、Acceleration、Velocity、Magnetismにチェックを入れます。

Accelerationのデータ形式

 TL/THは温度、SUMはチェックサムなので無視します。

0x55 0x51 AxL AxH AyL AyH AzL AzH TL TH SUM

Velocityのデータ形式

 TL/THは温度、SUMはチェックサムなので無視します。

0x55 0x52 wxL wxH wyL wyH wzL wzH TL TH SUM

Magnetismのデータ形式

 TL/THは温度、SUMはチェックサムなので無視します。

0x55 0x54 HxL HxH HyL HyH HzL HzH TL TH SUM

simulinkで処理

 シリアル入力の部分です。Accelerationの0x55と0x51をHeaderに入れ、30個のデータを取り込みます。

 simulinkの各種ブロックを使って個々のデータを取り出そうとしたのですが、うまく実現できませんでした。その部分をfunctionで記述します。

 functionの内容です。


function [Accel,Gyro,Mag] = fcn(u)
y=zeros(1,9);
y(1) = cast(u(2),'uint16')*256 + cast(u(1), 'uint16');
y(2) = cast(u(4),'uint16')*256 + cast(u(3), 'uint16');
y(3) = cast(u(6),'uint16')*256 + cast(u(5), 'uint16');

y(4) = cast(u(14),'uint16')*256 + cast(u(13), 'uint16');
y(5) = cast(u(16),'uint16')*256 + cast(u(15), 'uint16');
y(6) = cast(u(18),'uint16')*256 + cast(u(17), 'uint16');

y(7) = cast(u(24),'uint16')*256 + cast(u(23), 'uint16');
y(8) = cast(u(26),'uint16')*256 + cast(u(25), 'uint16');
y(9) = cast(u(28),'uint16')*256 + cast(u(27), 'uint16');


Accel = [y(1) y(2) y(3)];
Gyro  = [y(4) y(5) y(6)];
Mag   = [y(7) y(8) y(9)];

 functionの出力には、AHRSブロックをつなぎました。デフォルトではクオータニオンの出力と角速度の出力が得られます。

 ノイズの情報はデフォルトのままです。センサによってパラメータを設定するようですが、わかりません。基準座標系はセンサの表裏などを設定するようですが、ここでは、デフォルトのままです。したがって、プログラムは動いていますが、正しいクオータニオンの出力かは検証できていません。

前へ

IMU WT901からUARTでデータ取得④オイラー角

次へ

Simulink Support Package for Raspberry Pi ① インストール