AbudoriLab.

自律ロボットで誰でも遊べるよう試行錯誤するブログです。

GLIMを試す!環境の整備とインストール【つくちゃれ2024-2】

Abudoriです。つくばチャレンジ2024では、回転式3D LiDARを使用して走行する予定です。 3次元空間の地図を用いて自己位置推定するために3D SLAMを行います。この記事では、環境の整備とインストール方法をつまづいたところ含めて残します。

GLIMを動かしてみた

スポンサードリンク

前回の記事はこちら。3D LiDARの準備を行います。このSLAMを行うのに必要なのでぜひご覧ください。 www.abudorilab.com

今回はGLIMのインストールをしていきます。 GLIMは産総研の小出さん(koide3)らの最新SLAM手法で最高水準の精度を誇ります。 従来の3D SLAMはものすごいパラメータ調整が必要だったり、ワークステーションのような高性能コンピュータが必須のイメージがありますが、 CPUのみで動作する設定ができたり、JetsonやRaspberryPiで動作してしまう(しかも実時間の3,4倍)という革新的な手法です。 よく論文である“consumer GPU”で動作するとありますが、よくあるのはRTX4090とかでぜんぜん手軽じゃないやんけ!と思うことがあります(AI用の100万クラスのGPUじゃないよ)。このGLIMはRaspberryPiでも動作するらしいので、DIYロボットの人でも3D SLAMができるチャンスです!ぜひやってみましょう。

センサが高い問題がありますが、Mid360やRGBDカメラなど対応範囲も大きく作られているので、“だれでも簡単に”できるようになるかもしれません!とてもワクワクしますね!!

GLIM:Github github.com

環境整備をしよう

GLIMに必要な環境をそろえましょう。依存パッケージのビルドやインストールを行います。 OSはUbuntu22, 24を強くお勧めします。ROS 2もHumbleの方がトラブルは少なさそうです。このブログでは、Ubuntu24、ROS 2 Jazzyでインストールを進めます。

追記:apt でインストールできるようにアップデートされています。詳しくは記事の後半で。

インストールは以下のインストール方法を参照しながら進めます。 instration github.com

以下のソフトウェアをインストールします。

  • 依存ライブラリ
  • GTSAM
  • ビジュアライズツール
  • GTSAM_POINTS

依存ライブラリのインストール

まずはビルドに必要な依存パッケージをインストールします。 Ubuntuではaptでインストールします。以下のコマンドを入力します。

sudo apt install libomp-dev libboost-all-dev libmetis-dev \
                 libfmt-dev libspdlog-dev \
                 libglm-dev libglfw3-dev libpng-dev libjpeg-dev

GTSAMのインストール

依存しているマッピングライブラリのGTSAMをインストールします。

ソースビルドなインストールを行います。 ソースコードをクローンしてコンパイルしたあと、実行ファイルをOSが読み込める場所に移動するという作業をします。 なので、任意の場所にビルド用のディレクトリを作成します。

mkdir install
cd install

ソースコードをクローンします。

git clone https://github.com/borglab/gtsam

クローンができたらビルドを行います。 glimが利用しているgtsamのブランチに切り替えてからクローンしビルドします。 ビルドする設定を指定の通りにするために以下のコマンドでビルドします。

cd gtsam && git checkout 4.2a9
mkdir build && cd build
cmake .. -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \
         -DGTSAM_BUILD_TESTS=OFF \
         -DGTSAM_WITH_TBB=OFF \
         -DGTSAM_USE_SYSTEM_EIGEN=ON \
         -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF
make -j$(nproc)
sudo make install

sudo make installすることで、今作ったgtsamのディレクトリでビルドしてできたバイナリファイルを /usr/local/libや/usr/local/includeに移動され認識できるようになります。つまりライブラリのプログラムを実行できるようになるわけです。

ビジュアライズツールのインストール

小出さんのビジュアライズツールをインストールします。 同じように任意の場所でクローンしビルドしてください。 以下のコマンドを入力します。

git clone https://github.com/koide3/iridescence --recursive
mkdir iridescence/build && cd iridescence/build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install

git cloneするときは必ず--recursiveをつけてください。クローンするだけでしょ〜と油断しているとダメです笑。

CUDA 12.2のインストール

gtsam-pointsをインストールしようとすると、CUDAがなくビルドでコケたため、先にCUDAのインストールをします。

CUDAは12.2をインストールします(追記:12.5で良さそうです。Ubuntu24の方は12.5をインストールしましょう)。 CUDAをインストールする前にただしいNVIDIAドライバがインストールされているか確認します。

ubuntu-drivers devices

recommendedのバージョンを調べてそのバージョンが入っているか確認

ここでは、535がオススメされているので、このバージョンのNVIDIAドライバをインストールします。

sudo apt install nvidia-driver-535

ここでCUDA12.2のパッケージをDLします。 OSはUbuntu 24ですが、Ubuntu22しかないので、22を選択。これでもインストールできました。 developer.nvidia.com

この項目で設定し、画面下部のDLを押す

DLしたあと、dpkgファイルを実行し、インストールします。画面に表示されたコマンドを順番に入力してください。

インストールコマンドを教えてくれているはずだ

このとき、CUDAインストールでlibtinfo5がなくコケます。 libtinfo5はUbuntu22まではaptで提供されていましたが、Ubuntu24は打ち切られたようです。 Ubuntu 22のリンクを引っ張ってきて適用することで、apt installできるようにします(apt installのリストに手作業で追加することでapt updateで捕捉されるようになる)。

以下を参考にしました。 qiita.com

以下のコマンドを入力します。

sudo tee /etc/apt/sources.list.d/jammy.list << EOF
deb http://archive.ubuntu.com/ubuntu/ jammy universe
EOF
sudo tee /etc/apt/preferences.d/pin-jammy <<EOF
Package: *
Pin: release n=jammy
Pin-Priority: -10

Package: libtinfo5
Pin: release n=jammy
Pin-Priority: 990
EOF

これができたらCUDAをインストールします。

sudo apt install cuda

しばらく待ちます。

インストールが終わったら、cuda実行ファイルにアクセスできるようにするためにパスを通します。

以下の内容を.bashrcに追記します。以下のコマンドでテキストエディタを起動し、

gedit ~/.bashrc

開いたファイルの一番下に以下のコマンドをコピーします。

export PATH=/usr/local/cuda:/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATH

入力したら、.bashrcを反映させます。

source ~/.bashrc

これでCUDAのインストールが完了したはずです。 CUDAがインストールできているかはバージョン情報を問い合わせて確認します。以下のコマンドを入力します。

nvcc -V

以下の画像のようにバージョンが表示されれば成功。今回は12.2が入れられているか確認してください。

CUDAバージョンが表示されていればインストール完了です

GTSAM_POINTSのインストール

gtsam_pointsのビルドをします。これも任意の場所でクローンしてビルドをします。

git clone https://github.com/koide3/gtsam_points
mkdir gtsam_points/build && cd gtsam_points/build

ビルドします。ここでGPUを使う人はオプションの-DBUILD_WITH_CUDA=ONをONにしてください。CUDA実装でビルドされます。 以下のコマンドを実行します。

cmake .. -DBUILD_WITH_CUDA=ON
make -j$(nproc)

Ubuntu24でCUDA12.2をインストールした人は以下のようなエラーが発生するかもしれません。

#error -- unsupported GNU version! gcc versions later than 12 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.

CUDAのnvccがGCCコンパイラ12以降のバージョンが対応していないようです。 コンパイラのバージョンを確認すると13.2.0でした。ダメそうですね。

gcc, g++コンパイラのバージョンを確認。Ubuntu24の標準はこのバージョンのようだ。

gccコンパイラの11を入れます。

sudo apt install gcc-11 g++-11

その後にコマンド名で実行するファイルをわざわざ古い11になるように割り当て直します。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 10

いつもはgccとコマンドを打つと、/usr/bin/gccというバイナリファイルを実行します(実際にlsコマンドで見てみてください)。 ただ、gccと打ってしまうとバージョン13.4が実行されてしまうので、わざわざgcc-11を実行させます。このとき、gccと打ったときに/usr/bin/gccではなく、/usr/bin/gcc-11を実行するように割り当てを変える作業をすることで、何事もなかったかのようにバージョン11のgccが実行されるようになります。

バージョン11台を入れて、コマンドを割り当てる
gcc 11.4.0になりました。

この状態でcmakeをすればビルドが通るはずです。

このcmake設定値でビルドを通すとGPUが適用される

最後にインストールしたライブラリ類を適用させましょう。以下のコマンドを入力します。

sudo ldconfig

スポンサードリンク

GLIMをインストール

いよいよGLIMをインストールします。ROS 2のインストールをした上で、ROSワークスペースに移動してください。

ROS 2のインストールはこちら www.abudorilab.com

ROSのsrcディレクトリでソースコードをクローンします。GLIM本体とGLIMのROS 2ラッパーをクローンします。

cd ~/ros2_ws/src
git clone https://github.com/koide3/glim
git clone https://github.com/koide3/glim_ros2

クローンしたらワークスペースの一番上にもどり、ほかのROSパッケージと同様にcolcon buildします。

cd ~/ros2_ws
colcon build

無事にビルドができればインストール完了です!お疲れ様でした。 次の記事では、実際にセンサを使って地図を作っていきましょう。

スポンサードリンク

apt でインストールする【追記】

アップデートでパッケージになって配布されています!!!ソースビルドせずにインストールできそうですね!!!

必要なツールをインストールします。

sudo apt install curl gpg

PPAの登録を自動でやってくれます。以下のコマンドを入力します。

curl -s https://koide3.github.io/ppa/setup_ppa.sh | sudo bash

ソースビルドの時と同じく必要なライブラリをインストールします。

sudo apt update
sudo apt install -y libiridescence-dev libboost-all-dev libglfw3-dev libmetis-dev

GTSAMのCUDA版をインストールします。

sudo apt install -y libgtsam-points-cuda-12.5-dev

GLIMのROSパッケージをインストールします。 Jazzyの方

sudo apt install -y ros-jazzy-glim-ros-cuda12.5 

Humbleの方

sudo apt install -y ros-humble-glim-ros-cuda12.5

すごく簡単にまとめてくださっているので、皆さんができることは“とにかく試して感想を残す、広める、改善を提案する”ことです!!!

次回はお手本用のrosbagではなく、自分の環境でrosbagを取りSLAMする準備を行います。

www.abudorilab.com