Ubuntu18.04 は、gcc/g++ 9.0 バージョン (C++17) をアップグレードせずに、より高速に lio をコンパイルします。

Faster-lio は、Zhixingzhe の Gaobo チームによるオープンソースのレーザー慣性マイレージ計算手法です。このアルゴリズムは、Fast-LIO2 アルゴリズムに基づいています。主な革新ポイントは、増分スパース ボクセル構造を提案することです: iVox、これにより、アルゴリズムの効率。

githubでは筆者がDockerをベースにした設定方法、ubuntu20.04とUbuntu18.04の環境構築方法を公開しています。Ubuntu 18.04 の場合、gcc/g++ バージョンは 7.5.0 であり、gcc のより高いバージョンをオンラインでインストールする必要があります。これは、コンピューターがインターネットに接続できない作業者にとってはあまり親切ではなく、gcc バージョンをアップグレードするとコンパイルが発生する可能性があります。他のプロジェクトでは例外です。この記事は、gcc バージョンをアップグレードせずに、より高速な lio をコンパイルする際の問題を解決することを目的としています。

 

 1. なぜ gcc/g++ をアップグレードするのですか?

fast-lio ではアルゴリズムの効率を向上させるために、C++17 のいくつかの新機能が使用されるため、gcc/g++ の上位バージョンが必要です。したがって、解決策は、C++17 の新機能を使用する Faster-lio の部分を下位バージョンの構文に置き換えることです。

 

2. C++17 の新機能はどこで使用されていますか?

プログラム全体を読んだ後、プログラム内のインクルード ヘッダー ファイルを通じて、プログラム内で新機能<実行>が使用されていることがわかります

<execution> は C++17 の新しいライブラリであり、<algorithm> の一部であり、アルゴリズムの効率を向上させるためにマルチスレッドで実行する並列関数の 3 つの戦略を主に定義しています。詳細については、このブログを参照してください: <実行>fast-lio での実行のアプリケーションは for_each のパラメータとして使用されます。

#include <execution>

std::for_each(std::execution::par_unseq, index.begin(), index.end(), [&cloud, &closest_cloud, this](size_t idx)
{****}

したがって、次のように、すべての関連ファイルの <execution> ヘッダー ファイルがコメント アウトされ、for_each の背後にある std::execution::par_unseq が削除されていれば、変更も非常に簡単です。

//#include <execution>

std::for_each(index.begin(), index.end(), [&cloud, &closest_cloud, this](size_t idx)
{****}

3. コンパイル

新しいプロジェクトフォルダー work_space を作成し、その中に build フォルダーと src フォルダーを作成し、src フォルダーに Faster-lio パッケージを置きます。work_space フォルダーでターミナルを開き、catkin_make を使用してコンパイルしてからソースします。

catkin_make
source devel/setup.bash

 fast-lio には次の依存ライブラリもあるので、コンパイル前にインストールする必要があることに注意してください。不足しているライブラリがある場合は、オフラインで単独でインストールできます。CSDN にはすでに多くのチュートリアルがあります。

依存ライブラリ:

  1. ROS (メロディックまたはノエティック)
  2. サンザシ: sudo apt-get install libgoogle-glog-dev
  3. 自分の: sudo apt-get install libeigen3-dev
  4. PCL: sudo apt-get install libpcl-dev
  5. yaml-cpp: sudo apt-get install libyaml-cpp-dev

おすすめ

転載: blog.csdn.net/weixin_44884315/article/details/131189298