Abudoriです。つくばチャレンジ2024では、回転式3D LiDARを使用して走行する予定です。 3次元空間の地図を用いて自己位置推定するために3D SLAMを行います。この記事では、環境の整備とインストール方法をつまづいたところ含めて残します。
スポンサードリンク
前回の記事はこちら。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ができるチャンスです!ぜひやってみましょう。
Our 3D point cloud SLAM package 𝐆𝐋𝐈𝐌 is finally released! Along with GLIM, we also release a collection of GTSAM factors for point cloud registration named 𝐠𝐭𝐬𝐚𝐦_𝐩𝐨𝐢𝐧𝐭𝐬.
— koide3 (@k_koide3) 2024年7月16日
Paper: https://t.co/jSUbUCunWD
Code: https://t.co/zIbZJldk6h
センサが高い問題がありますが、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
ここでは、535がオススメされているので、このバージョンのNVIDIAドライバをインストールします。
sudo apt install nvidia-driver-535
ここでCUDA12.2のパッケージをDLします。 OSはUbuntu 24ですが、Ubuntu22しかないので、22を選択。これでもインストールできました。 developer.nvidia.com
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が入れられているか確認してください。
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でした。ダメそうですね。
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が実行されるようになります。
gcc 11.4.0になりました。
この状態でcmakeをすればビルドが通るはずです。
最後にインストールしたライブラリ類を適用させましょう。以下のコマンドを入力します。
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する準備を行います。