安装部署fastlio2的重定位模块
为什么做重定位:因为重定位可以实现在建好图的基础上,任意一个点启动都可以实现机器人在对应位置的坐标,就不需要,一定在起始点启动等等。
做这个之前,需要我们安装好mid360驱动和fastlio2安装,然后在这个基础上添加重定位模块
我们使用·社区开源的
git clone https://github.com/HViktorTsoi/FAST_LIO_LOCALIZATION.git下载之后,需要更换一些东西
打开 FAST_LIO_LOCALIZATION/CMakeLists.txt
把这一行
find_package(livox_ros_driver REQUIRED)改成
find_package(livox_ros_driver2 REQUIRED)同样检查
package.xml里有没有
<depend>livox_ros_driver</depend>如果有,也改成
<depend>livox_ros_driver2</depend>打开 FAST_LIO_LOCALIZATION/CMakeLists.txt
找到下面几行(约 87-88 行):
为什么要改这个,因为这个重定位模块就是在fastlio基础上改的,不改下面这个的话,就会和fastlio2的冲突抱错
add_executable(fastlio_mappingsrc/laserMapping.cpp...
)
target_link_libraries(fastlio_mapping${catkin_LIBRARIES} ...
)② 把目标名换成独一无二的,例如
add_executable(fast_lio_localization_nodesrc/laserMapping.cpp...
)
target_link_libraries(fast_lio_localization_node${catkin_LIBRARIES} ...
)③ 同一文件里如果还有
install(TARGETS fastlio_mapping ...)也要同步改成
install(TARGETS fast_lio_localization_node ...)CMakeLists.txt 里列了文件 include/ikd-Tree/ikd_Tree.cpp,但硬盘上找不到。
cp -r ../FAST_LIO/include/ikd-Tree include/只需要去编译好的fastlio2下的复制过来
给 KD_TREE 加上模板参数
打开 laserMapping.cpp,找到
KD_TREE ikdtree;改成(假设点类型是 PointType):
KD_TREE<PointType> ikdtree;通常 FAST_LIO 系列里会有
using PointType = PointXYZINormal;或
using PointType = pcl::PointXYZINormal;你在文件头部能找到,把它拿过来即可。
示例:
using PointType = pcl::PointXYZINormal;
...
KD_TREE<PointType> ikdtree;② 把弃用警告也顺手清掉(可选)
在 preprocess.h 里把
(uint16_t, ring, ring)改成
(std::uint16_t, ring, ring)并加头文件
#include <cstdint>完成上述代码之后进入vsode下将livox_ros_driver直接选择全部替换为:livox_ros_driver2
#注意别将livox_ros_driver2替换为livox_ros_driver22
FAST_LIO/src/preprocess.h 、FAST_LIO/src/preprocess.cpp 、FAST_LIO/src/laserMapping.cpp 中的命名空间,有多处需要修改,,改这些文件,把这些文件的里面的都改成2
然后完成上面的之后,就在主文件下进行编译,即可
catkin_make