Pythonでは簡単に行列計算が出来るのに、Arduinoでは行列計算をさせるのに一苦労。そんなときはArduinoEigenライブラリの使用がおすすめです。今回は、ArduinoEigenのインストールから使い方まで解説します。
ArduinoEigenとは
C++には行列計算ライブラリ「Eigen」というものがあります。このEigenをArduinoで直接扱えるようにしたのが「ArduinoEigen」です。ArduinoEigenをインストールすることによって、Arduinoでも行列が簡単に計算できるようになります。
ArduinoEigenのインストール方法
ArduinoEigenのインストール方法はとっても簡単です。ここではArduino IDEとPlatformIOでのインストール方法を紹介します。
Arduino IDE環境
スケッチ > ライブラリをインクルード > ライブラリを管理 をクリックします。
Eigenを検索し、インストールボタンを押せばインストール完了です。
PlatformIO環境
本ブログでは、Arduino開発環境はPlatformIOをお薦めしています。
PlatformIO環境でのArduinoEigenインストール方法も解説していきますね。
Librariesから「Eigen」と検索すると「ArduinoEigen」がヒットします。
Add to Projectボタンを押し、Projectを選択するとインストール完了です。
ArduinoEigenを使った行列計算方法
ArduinoEigenの基本的な使い方について解説していきます。詳細な使い方を知りたい方は、公式ホームページを見て下さいね。
ヘッダファイルのインクルード
まずはヘッダファイルのインクルードが必要です。ArduinoEigen.hをインクルードしましょう。
#include <ArduinoEigen.h>
変数の宣言
変数を宣言するには下のように記述します。
using Eigen::MatrixXd;
MatrixXd m(2, 2);
MatrixXd m(2, 2)は、2×2のdouble型で変数mを宣言したことを意味しています。
正方行列で次数が決まっている場合は、次のように記述します。
using Eigen::Matrix2d;
Matrix2d m;
変数の型をdoubleではなくfloat、intにしたい場合は最後の文字を「d」から「f」、「i」に変更します。
MatrixXd // double型
MatrixXf // float型
MatrixXi // int型
初期値の代入
初期値を代入するには、2×2行列の場合を例にすると1行1列目、1行2列目、2行1列目、2行2列目の順に「,」区切りで記述していきます。
m << 1, 2,
3, 4;
加算
加算は「+」演算子を使います。
m = m1 + m2;
減算
減算は「-」演算子を使います。
m = m1 - m2;
乗算
乗算は「*」演算子を使います。
m = m1 * m2;
転置行列
転置行列はinverse()関数を使います。
n = m.inverse();
まとめ
Arduinoで行列を扱うためのArduinoEigenライブラリについて解説しました。今回の解説は行列計算のごく一部です。その他行列計算の使い方は公式ホームページ参照して下さい。
最後までお読みいただきありがとうございました。