LoginSignup
3
0

More than 3 years have passed since last update.

ROS2でEigen3を使う

Last updated at Posted at 2019-07-05

ROS2関係トップページへ

ROS2をインストールするとEigen3もインストールされる.
このEigen3を使用する方法.
Eigen3の詳しい使用方法は公式のdocumentやを参照のこと.

package.xmlでEigen3に関する記述を追記

以下に関する記述を行う.

  • build_depend
  • test_depend
  • exec_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);

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0