0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GTSAMのインストール方法 - Python Wrapper編

Posted at

GTSAMとは

GTSAMはFactor Graphベースの最適化ライブラリで、SLAM(Simultaneous Localization and Mapping)やロボティクス分野で広く使われています。この記事では、GTSAMのPython Wrapperをインストールする方法を紹介します。

pipでのインストールができなかった

ネットで調べたり、chatgptによると以下のコマンドでインストールできると言われました。

pip install gtsam

しかし、自分の環境では上手くいかなかったです。そこでソースファイルからbuildしてインストールする方法を実行したので備忘録として記録しました。自分がビルドする際にエラーが出た際の解決方法も最後に載せているので、参考になったら幸いです。

参考リンク

基本的に公式ドキュメントに記載されている手順に従いますが、いくつか発生する可能性のあるエラーとその解決方法も合わせて紹介します。

前提条件

Python Wrapperには以下のパッケージが必要です:

  • pyparsing (>=2.4.2)
  • pybind-stubgen (>=2.5.1)
  • numpy (>=1.11.0)

これらは次のコマンドでインストールできます:

pip install -r <gtsam_folder>/python/dev_requirements.txt

注: <gtsam_folder>はクローンしたGTSAMリポジトリのパスに置き換えてください。

インストール手順

1. リポジトリのクローンとビルド準備

# リポジトリをクローン
git clone https://github.com/borglab/gtsam.git

# クローンしたディレクトリに移動
cd gtsam

# ビルドディレクトリを作成
mkdir build
cd build

# CMakeの実行(Pythonラッパーを有効化)
cmake .. -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=3.8.10
# ※ Pythonのバージョンは環境に合わせて適宜変更してください

重要: buildディレクトリは必ずgit cloneした一番上のディレクトリ(gtsam/)に作成してください。Python wrapperだからといってpython/ディレクトリ内に移動しないでください。

2. ビルドとインストール

# ビルド実行 (-jの後の数字はCPUコア数に応じて調整)
make -j12

# Pythonパッケージとしてインストール
make python-install

遭遇したエラーと解決方法

インストール中に以下のようなエラーが発生しました。

makeコマンド実行時のエラー

#warning "IncrementalFixedLagSmoother was moved to the gtsam/nonlinear directory"

このエラーは、GCCの拡張として警告を発生させ、-Werror(警告をエラーとして扱う設定)によりビルドエラーになっています。C++23より前の仕様では#warningが正式には標準に含まれていないため発生します。

解決方法

このファイルを編集します:
gtsam/gtsam_unstable/nonlinear/IncrementalFixedLagSmoother.h

問題の行をコメントアウトしても問題ありません。この警告はただ単にファイルが移動したことを伝えるメッセージなので、削除しても機能には影響しません。

cmakeコマンド実行時のスタブ生成エラー

make[3]: *** [python/CMakeFiles/python-unstable-stubs.dir/build.make:107: python/CMakeFiles/python-unstable-stubs] Error 1
make[2]: *** [CMakeFiles/Makefile2:43395: python/CMakeFiles/python-unstable-stubs.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:43506: python/CMakeFiles/python-install.dir/rule] Error 2

解決方法

スタブファイルはIDE補完や型チェッカー用であり、GTSAMのPythonラッパーを実行するだけなら必須ではありません。

gtsam/python/CMakeLists.txtを開き、以下の部分を:

add_custom_target(
  python-unstable-stubs
  ...
)

add_custom_target(
  python-stubs
  ...
)

次のように書き換えます:

add_custom_target(python-unstable-stubs
  COMMAND ${CMAKE_COMMAND} -E echo "Skipping stub generation for gtsam_unstable."
)

add_custom_target(python-stubs
  COMMAND ${CMAKE_COMMAND} -E echo "Skipping stub generation for gtsam."
)

これによってスタブ生成をスキップし、代わりにダミーコマンドを実行するようになります。

インストール確認

インストールが完了したら、Pythonから次のようにインポートできることを確認します:

import gtsam
print(gtsam.__version__)

まとめ

GTSAMのPython Wrapperのインストールは基本的には簡単ですが、いくつかのエラーに遭遇することがあります。この記事で紹介した解決策を用いることで、スムーズにインストールできるはずです。

何か問題がありましたら、コメントでお知らせください!

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?