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就可以了。

相关推荐
WWZZ202519 小时前
快速上手大模型:深度学习2(实践:深度学习基础、线性回归)
人工智能·深度学习·算法·计算机视觉·机器人·大模型·slam
求索小沈20 小时前
ubuntu22.04配置MID360激光雷达
livox·激光雷达·mid360
CH_Qing2 天前
【ROS2】驱动开发-雷达篇
人工智能·ros2·1024程序员节
武子康6 天前
AI研究-109-具身智能 机器人模型验证SOP流程详解|仿真 现实 回放 模板&理论
人工智能·机器人·强化学习·ros2·具身智能·仿真测试·a/b测试
WWZZ20256 天前
快速上手大模型:机器学习6(过拟合、正则化)
人工智能·算法·机器学习·计算机视觉·机器人·slam·具身感知
WWZZ20256 天前
快速上手大模型:机器学习5(逻辑回归及其代价函数)
人工智能·算法·机器学习·计算机视觉·机器人·slam·具身感知
WWZZ20257 天前
快速上手大模型:机器学习3(多元线性回归及梯度、向量化、正规方程)
人工智能·算法·机器学习·机器人·slam·具身感知
放羊郎8 天前
面向不同障碍物的自主导航策略
yolo·slam·识别·平滑·语义地图
WWZZ20259 天前
快速上手大模型:机器学习2(一元线性回归、代价函数、梯度下降法)
人工智能·算法·机器学习·计算机视觉·机器人·大模型·slam