Arduinoで行列計算!ArduinoEigenの使い方

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ライブラリについて解説しました。今回の解説は行列計算のごく一部です。その他行列計算の使い方は公式ホームページ参照して下さい。

最後までお読みいただきありがとうございました。

楽天ブックス
¥3,278 (2024/04/09 19:05時点 | 楽天市場調べ)
プログラミング言語の人気オンラインコース
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

大学で機械工学を学んだ後、製造業で働く40代の会社員です。
IT系、電気系を学んでこなかった機械系人間が、ゲーム制作、電子工作に奮闘してます。
極力低コストでものづくりを楽しむのがモットー。

目次