ROS2をインストールするとEigen3もインストールされる.
このEigen3を使用する方法.
Eigen3の詳しい使用方法は公式のdocumentやを参照のこと.
package.xmlでEigen3に関する記述を追記
以下に関する記述を行う.
build_dependtest_dependexec_depend
package.xmlで特別な記載はいらない.ヘッダにて機能を実現していてROSのpackageとして存在しているわけではないから,だと思う.
CMakeLists.txtでEigen3に関する記述を追加
Eigen3はヘッダにて機能を実現している(らしい).
よってインクルードファイルのあるディレクトリの指定のみでよく,ソースファイルに関する指定はいらない.
関係する指定はtarget_include_directoriesなのでここに追記.
CMakeLists.txt
find_package(Eigen3 REQUIRED)
target_include_directories([ターゲット名]
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> # 通常の指定
$<BUILD_INTERFACE:${EIGEN3_INCLUDE_DIR}> # Eigen3用の指定
$<INSTALL_INTERFACE:include> # 通常指定
)
ament_target_dependenciesに記述が必要そうだが,要らない(2019/7/6確認)
libraryとしてnodeを作成する場合
上記に加えて以下をCMakeLists.txtに加える.
これによりlibraryを使用する方は${EIGEN3_INCLUDE_DIR}に関する記述なしで大丈夫(Eigen3を使用しているか否か気にせずにOKになる).
CMakeLists.txt
ament_export_include_dicectories(
include
${EIGEN3_INCLUDE_DIR}
)
ソースコードで使用
必要ファイルをインクルードすると使える.例としては,int型2x2行列
#include <Eigen/Dense>
....
Eigen::Matrix2d m(2,2);