Faster-lio es un método de cálculo de kilometraje inercial láser de código abierto del equipo Gaobo de Zhixingzhe. Este algoritmo se basa en el algoritmo Fast-LIO2. El principal punto de innovación es proponer una estructura de vóxel dispersa incremental: iVox, que mejora en gran medida la eficiencia del algoritmo.
En github, el autor ha dado el método de configuración basado en Docker, el método de configuración del entorno de ubuntu20.04 y Ubuntu18.04. Para Ubuntu 18.04, mi versión de gcc/g++ es 7.5.0, y es necesario instalar una versión superior de gcc en línea. Esto no es muy amigable para los trabajadores cuyas computadoras no pueden conectarse a Internet, y actualizar la versión de gcc puede causar compilación. excepciones en otros proyectos. Este artículo tiene como objetivo resolver el problema de compilar más rápido-lio sin actualizar la versión de gcc.
1. ¿Por qué actualizar gcc/g++?
Porque para mejorar la eficiencia del algoritmo en Fast-lio, se utilizan algunas características nuevas de C++17, por lo que se requiere una versión superior de gcc/g++. Por lo tanto, una solución es reemplazar la parte de fast-lio que usa las nuevas características de C++17 con la sintaxis de la versión inferior.
2. ¿Dónde se utilizan las nuevas características de C++17?
Después de leer todo el programa, a través del archivo de encabezado incluido en el programa, se puede encontrar que la nueva característica <ejecución> se usa en el programa ,
<execution> es una nueva biblioteca de C++ 17 y parte de <algorithm>. Define principalmente tres estrategias para que las funciones paralelas se ejecuten en subprocesos múltiples para mejorar la eficiencia del algoritmo. Consulte este blog para obtener más información: <ejecución> . La aplicación de ejecución en Faster-lio se usa como parámetro de for_each.
#include <execution>
std::for_each(std::execution::par_unseq, index.begin(), index.end(), [&cloud, &closest_cloud, this](size_t idx)
{****}
Por lo tanto, también es muy sencillo de modificar, siempre que se comenten los archivos de encabezado <ejecución> en todos los archivos relacionados y se elimine el std::execution::par_unseq detrás de for_each, de la siguiente manera:
//#include <execution>
std::for_each(index.begin(), index.end(), [&cloud, &closest_cloud, this](size_t idx)
{****}
3. Compilar
Cree una nueva carpeta de proyecto work_space, cree una carpeta de compilación y una carpeta src en ella, y coloque el paquete más rápido-lio en la carpeta src. Abra el terminal en la carpeta work_space, use catkin_make para compilar y luego fuente.
catkin_make
source devel/setup.bash
Tenga en cuenta que más rápido-lio también tiene las siguientes bibliotecas dependientes, que deben instalarse antes de compilar. Si falta alguna biblioteca, puede instalarla solo sin conexión. Ya hay muchos tutoriales sobre CSDN.
Biblioteca dependiente:
- ROS (melódico o noético)
- espino:
sudo apt-get install libgoogle-glog-dev
- propio:
sudo apt-get install libeigen3-dev
- PCL:
sudo apt-get install libpcl-dev
- yaml-cpp:
sudo apt-get install libyaml-cpp-dev