当前位置: 首页 > news >正文

ubuntu22.04 ros2 fast_lio2 复现

源项目:

https://github.com/liangheming/FASTLIO2_ROS2 https://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.5502 https://blog.csdn.net/m0_53931365/article/details/153976259?spm=1001.2014.3001.5502

 

1.sophus编译

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

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/gtsam https://github.com/borglab/gtsam下载完项目,需要需要添加dllexport.h文件,不然编译会报错

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
cd gtsam
#!bash
mkdir build
cd build
cmake ..
make check -j8 #多线程编译
sudo make install

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

# 找到 libgtsam.so.4 文件
find ~ -name "libgtsam.so.4" 2>/dev/null

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

# 临时解决方案(在当前终端生效)
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

例如

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.激光惯性里程计

ros2 launch fastlio2 lio_launch.py
ros2 bag play your_bag_file

2.里程计加回环

启动回环节点

ros2 launch pgo pgo_launch.py
ros2 bag play your_bag_file

保存地图

ros2 service call /pgo/save_maps interface/srv/SaveMaps "{file_path: 'your_save_dir', save_patches: true}"

预览pcd地图

sudo apt-get install pcl-tools
pcl_viewer xxx.pcd

3.里程计加重定位

启动重定位节点

ros2 launch localizer localizer_launch.py
ros2 bag play your_bag_file // 可选

设置重定位初始值

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}"

检查重定位结果

ros2 service call /localizer/relocalize_check interface/srv/IsValid "{"code": 0}"

4.一致性地图优化

启动一致性地图优化节点

ros2 launch hba hba_launch.py

调用优化服务

ros2 service call /hba/refine_map interface/srv/RefineMap "{"maps_path": "your maps directory"}"

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.dtcms.com/a/541496.html

相关文章:

  • 寻找长沙网站建设数据库网站开发
  • 做最好的win7系统下载网站织梦网站模板制作
  • 一条SQL语句的完整执行流程
  • 佛山宽屏网站建设马鞍山哪里做网站
  • 通过API接口批量采购1688商品,一键完成商品下单。
  • 湖北省利川市建设局网站中国安能建设总公司网站
  • 广东省省考备考(第一百三十五天10.28)——言语、判断推理(强化训练)
  • JAVA网络编程TCP通信。
  • 熵增强与量子退火算法与经典迁移策略的结合
  • 数据库安全网关体系中,对Long、Date类型列加密的方法
  • 电子鼻设备市场报告:2025 年行业现状、技术趋势与投资前景全景解析
  • wordpress官方主题论坛嘉兴seo
  • 借助大语言模型实现高效测试迁移:Airbnb的大规模实践
  • 为什么选择做游戏网站哪个网站做网站好
  • 5.1.3 大数据方法论与实践指南-实时湖仓架构设计
  • 咸宁公司做网站深圳结构设计
  • 建网站都用什么字体广东佛山企业
  • 【牛客刷题-剑指Offer】BM23 二叉树的前序遍历:递归与迭代双解法
  • 【算法】day14 链表
  • 手机建设网站赚钱专业seo站长工具
  • 网站建设项目申请嵌入式工程师证书怎么考
  • [vscode] vscode的python解释器问题
  • 告别卡顿与等待,Rancher Vai 让集群操作“秒响应”
  • 【vscode】Eigen可视化配置
  • VSCode Copilot 魔改对比:智谱 GLM-4.6 与其他大模型接入流程差异解析
  • PyTorch2 Python深度学习 - TensorBoard可视化工具
  • wordpress首页分页函数网站专业优化
  • 雅奇小蘑菇做网站好不好用家居定制公司股票
  • 安卓进阶——UI控件
  • Android 四大组件——Activity