ubuntu22.04 ros2 fast_lio2 复现

源项目:

https://github.com/liangheming/FASTLIO2_ROS2https://github.com/liangheming/FASTLIO2_ROS2

项目依赖以下第三方库,

pcl

Eigen

sophus

gtsam

livox_ros_driver2

在我们编译完mid360的sdk和ros2驱动包(可以参考我之前的文章)后,我们只需编译sophus

gtsam即可,其他几个之前编译好了,反正缺啥编译啥

https://blog.csdn.net/m0_53931365/article/details/153976259?spm=1001.2014.3001.5502https://blog.csdn.net/m0_53931365/article/details/153976259?spm=1001.2014.3001.5502

1.sophus编译

https://github.com/strasdat/Sophushttps://github.com/strasdat/Sophus

bash 复制代码
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout 1.22.10 #旧版本
mkdir build && cd build
cmake .. -DSOPHUS_USE_BASIC_LOGGING=ON
make
sudo make install

原文说新的Sophus依赖fmt,可以在CMakeLists.txt中添加add_compile_definitions(SOPHUS_USE_BASIC_LOGGING)去除,否则会报错

2.gtsam编译

https://github.com/borglab/gtsamhttps://github.com/borglab/gtsam下载完项目,需要需要添加dllexport.h文件,不然编译会报错

bash 复制代码
git clone https://github.com/borglab/gtsam.git
# 进入 cephes 目录
cd gtsam/gtsam/3rdparty/cephes

# 创建 dllexport.h 文件
tee dllexport.h > /dev/null << 'EOF'
#ifndef DLLEXPORT_H
#define DLLEXPORT_H

/* Define DLLEXPORT for Windows, empty for other platforms */
#ifdef _WIN32
    #ifdef GTSAM_SHARED_LIB
        #define DLLEXPORT __declspec(dllexport)
    #else
        #define DLLEXPORT __declspec(dllimport)
    #endif
#else
    #define DLLEXPORT
#endif

#endif // DLLEXPORT_H
EOF
bash 复制代码
cd gtsam
#!bash
mkdir build
cd build
cmake ..
make check -j8 #多线程编译
sudo make install

编译有点久,编译完成,查看动态链接库的路径

bash 复制代码
# 找到 libgtsam.so.4 文件
find ~ -name "libgtsam.so.4" 2>/dev/null

如果后面保存地图出现找不到libgtsam.so.4,可以手动添加到路径到环境变量

bash 复制代码
# 临时解决方案(在当前终端生效)
export LD_LIBRARY_PATH=/path/to/your/gtsam/install/lib:$LD_LIBRARY_PATH


# 永久解决方案(添加到 ~/.bashrc)
echo 'export LD_LIBRARY_PATH=/path/to/your/gtsam/install/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

例如

bash 复制代码
szz@szz:~/ws_livox$ find ~ -name "libgtsam.so.4" 2>/dev/null
/home/szz/gtsam-develop/build/gtsam/libgtsam.so.4
szz@szz:~/ws_livox$ export LD_LIBRARY_PATH=/home/szz/gtsam-develop/build/gtsam/libgtsam.so.4:$LD_LIBRARY_PATH

4.fast-lio2

将fast-lio2里面的包移动到自己src中编译即可使用

5.建图验证

5.1下载验证的pcd文件,也可以用自己的

http://链接: https://pan.baidu.com/s/1rTTUlVwxi1ZNo7ZmcpEZ7A?pwd=t6yb 提取码: t6yb

1.激光惯性里程计

bash 复制代码
ros2 launch fastlio2 lio_launch.py
ros2 bag play your_bag_file

2.里程计加回环

启动回环节点

bash 复制代码
ros2 launch pgo pgo_launch.py
ros2 bag play your_bag_file

保存地图

bash 复制代码
ros2 service call /pgo/save_maps interface/srv/SaveMaps "{file_path: 'your_save_dir', save_patches: true}"

预览pcd地图

bash 复制代码
sudo apt-get install pcl-tools
pcl_viewer xxx.pcd

3.里程计加重定位

启动重定位节点

bash 复制代码
ros2 launch localizer localizer_launch.py
ros2 bag play your_bag_file // 可选

设置重定位初始值

bash 复制代码
ros2 service call /localizer/relocalize interface/srv/Relocalize "{"pcd_path": "your_map.pcd", "x": 0.0, "y": 0.0, "z": 0.0, "yaw": 0.0, "pitch": 0.0, "roll": 0.0}"

检查重定位结果

bash 复制代码
ros2 service call /localizer/relocalize_check interface/srv/IsValid "{"code": 0}"

4.一致性地图优化

启动一致性地图优化节点

bash 复制代码
ros2 launch hba hba_launch.py

调用优化服务

bash 复制代码
ros2 service call /hba/refine_map interface/srv/RefineMap "{"maps_path": "your maps directory"}"

如果需要调用优化服务,保存地图时需要设置save_patches为true

原作者提到机器性能问题,TIPS:将timerCB改成用用一个单独线程去run就可以了。

相关推荐
大势智慧3 天前
智影R200免像控空地融合建模解决方案
高精度·解决方案·slam·三维重建·三维扫描·手持slam·空地融合
AGV算法笔记3 天前
CVPR 2024顶级SLAM论文精读:SplaTAM如何用3D高斯实现稠密RGB-D SLAM?
深度学习·3d·机器人视觉·slam·三维重建
MIXLLRED4 天前
Ubuntu22.04 + ROS2 Humble + RealSense D435i 部署VINS-Fusion视觉惯性SLAM
ubuntu·slam·d435i·ros2·humble·vins
AGV算法笔记5 天前
CVPR 2025顶级SLAM论文精读:MASt3R-SLAM如何用单目相机实现实时稠密三维重建?
深度学习·数码相机·机器人视觉·slam·三维重建·agv
大势智慧6 天前
智影R200手持SLAM使用教程八:3DGS数据采集规范
经验分享·教程·数据采集·slam·3dgs·三维扫描·三维激光扫描仪
G果6 天前
SLAM 开源算法汇总(支持ROS2)
学习·算法·slam·ros2
YQ_0110 天前
大幅提速 colcon build —— ccache 缓存 + 并行数控制防爆内存
linux·缓存·机器人·ros2
勤自省10 天前
《RDK X5 ROS 2 Humble 安装与验证:从零到 Hello World》
windows·ubuntu·ssh·ros2
CS_Zero12 天前
无人机避障——MID360+FasterLIO+EGO-planner实测问题解决
slam·无人机避障·lio
佩洛君12 天前
如何在Ubuntu22.04中安装ROS2-Humble
c++·python·ros2