Lego-loam 算法三维建图

运行环境

  • Linux:Ubuntu18.04
  • ros:Melodic
  • Ceres Solver 2.0.0(Ubuntu18.04安装Ceres)
  • PCL 1.8.1(Ubuntu系统的PCL、Eigen卸载和安装)

====================== 运行数据集 lego-loam 39/39 ===========================

终端一:进入catkin_ws工作空间

1) source ./devel/setup.bash
2) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
3) roslaunch lego_loam run.launch   或  roslaunch lego_loam run_test.launch

终端二:进入catkin_ws工作空间

1)source ./devel/setup.bash
2) rosbag play 38.bag --clock  或  rosbag play 39.bag --clock
注意:
//(播放数据包的时候,使用的use_sim_time是仿真时间戳,所以要使用 --clock 进行数据播放。这边下载的数据包都要使用rosbag play *.bag --clock 这样的形式播放,不然,Lego-LOAM那边没法进行建图。自己录制的数据包也是要以这样的形式播放。)//在rviz中把Fixed Frame : velodyne
//在Add中添加PointCloud2,topic:/velodyne_points 

运行结果如下:

================== 数据集 mick1.bag (mick_2021-01-27-21-34-13.bag) ===============

终端1:进入catkin_ws工作空间

1) source ./devel/setup.bash
2) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
3) roslaunch lego_loam mickx4.launch

 终端2:进入catkin_ws工作空间

1)source ./devel/setup.bash
2) rosbag play mick1.bag --clock --topic /rslidar_points /imu/data

 

 

运行 mick1.bag

 =========================数据集lego-loagm-demo =============================

终端1:进入catkin_ws工作空间

1) source ./devel/setup.bash
2) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
3) roslaunch lego_loam run.launch   或  roslaunch lego_loam run_test.launch

终端2:进入catkin_ws工作空间

1)source ./devel/setup.bash
2) rosbag play 39.bag --clock --topic /velodyne_points /imu/data

39-bag-velodyne

 ========================= 全流程 案例 ===================================

终端1:
进入catkin_ws工作空间
1) source ./devel/setup.bash
2) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
3)roslaunch lego_loam mickx4.launch   //把mickx4.launch文件换成run.launch   
// roslaunch lego_loam run.launch // 注意:mick4.launch 对应终端2中的 mick1.bag 
//       run.launch 对应终端2中的38.bag或39.bag
终端2:
进入catkin_ws工作空间
1)source ./devel/setup.bash           //把mick1.bag 文件 换成 38.bag/39.bag  
2) rosbag play mick1.bag --clock --topic /rslidar_points /imu/data      
// rosbag play 38.bag --clock --topic /velodyne_points /imu/data// 注意:mick1.bag 对应 /rslidar_points    
//      38/39.bag 对应 /velodyne_points 

 如图所示 38.bag :

如图所示 mick1.bag 

/*********地图保存**********///LeGO-LOAM 的点云地图是发布在 /laser_cloud_surround 这个话题上的,在这篇博客[7]中提供了一种方法就是记录这个topic上的数据,然后利用 pcl_ros 包进行转换。终端3:进入catkin_ws工作空间 source ./devel/setup.bash
//step1: 记录话题 /laser_cloud_surround 数据,这个可以在快结束的时候录制
1) rosbag record -o lego-loam-out /laser_cloud_surround
//然后录制完成后, ctrl+c 退出 ,发现 catkin_ws 目录下 .bag.active文件,变成 .bag 文件 终端4:进入catkin_ws工作空间 source ./devel/setup.bash
//step2: 把 lego-loam-out* 这个bag的话题上的数据存为pcd文件
2) // rosrun pcl_ros bag_to_pcd lego-loam-out_2023-05-10-14-22-31.bag /laser_cloud_surround testrosrun pcl_ros bag_to_pcd  lego-loam-out_2024-03-07-14-48-36.bag /laser_cloud_surround test4//这时候会在你的目录下生成一个test目录,里面会有很多个pcd文件,选最后一个就是最新的点云地图了终端5:cd catkin_ws/test    
//pcl_viewer xxxxxx.pcd    此命令既可打开pcd文件 
3) pcl_viewer 1611754659.194505930.pcd

pcl_viewer 1611754659.082526922.pcd

run.launch

<launch><!--- Sim Time --><param name="/use_sim_time" value="true" /><!--- Run Rviz--><node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam)/launch/test.rviz" /><!--- TF --><node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" /><node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" /><!--- LeGO-LOAM -->    <node pkg="lego_loam" type="imageProjection"    name="imageProjection"    output="screen"/><node pkg="lego_loam" type="featureAssociation" name="featureAssociation" output="screen"/><node pkg="lego_loam" type="mapOptmization"     name="mapOptmization"     output="screen"/><node pkg="lego_loam" type="transformFusion"    name="transformFusion"    output="screen"/></launch>

 mickx4.launch

<launch><!--- Sim Time --><param name="/use_sim_time" value="true" /><node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" /><!-- Run a passthrough filter to clean NaNs --><node pkg="nodelet" type="nodelet" name="passthrough" args="load pcl/PassThrough pcl_manager" output="screen"><remap from="~input" to="/rslidar_points" /><remap from="/passthrough/output" to="/velodyne_points" /><rosparam>filter_field_name: zfilter_limit_negative: True</rosparam><rosparam>filter_field_name: xfilter_limit_negative: True</rosparam><rosparam>filter_field_name: yfilter_limit_negative: True</rosparam></node><!--- Run Rviz--><node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam)/launch/test.rviz" /><!--- TF --><node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" /><node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" /><!--- LeGO-LOAM -->    <node pkg="lego_loam" type="imageProjection"    name="imageProjection"    output="screen"/><node pkg="lego_loam" type="featureAssociation" name="featureAssociation" output="screen"/><node pkg="lego_loam" type="mapOptmization"     name="mapOptmization"     output="screen"/><node pkg="lego_loam" type="transformFusion"    name="transformFusion"    output="screen"/></launch>

 

 

 

demo

lego-loam demo

参考文献
https://blog.csdn.net/weixin_42141088/article/details/115747989

https://blog.csdn.net/crp997576280/article/details/111657554?spm=1001.2014.3001.5506

https://blog.csdn.net/weixin_44444810/article/details/121659270?spm=1001.2014.3001.5506
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/520393.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Flink网络数据传输】OperatorChain的设计与实现

文章目录 1.OperatorChain的设计与实现2.OperatorChain的创建和初始化3.创建RecordWriterOutput 1.OperatorChain的设计与实现 OperatorChain的大致逻辑 在JobGraph对象的创建过程中&#xff0c;将链化可以连在一起的算子&#xff0c;常见的有StreamMap、StreamFilter等类型的…

字符函数

1.字符分类函数 专门做字符分类的函数&#xff0c;都包含一个头文件#include <ctype.h> islower() 是一个用于判断字符是否为小写字母的函数。 通常情况下&#xff0c;如果一个字符是小写字母&#xff0c;则 islower() 函数会返回 true 或者一个表示真的值&#xff08…

【变量提升】关于JavaScript变量提升的理解,它导致了什么问题?

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

大模型笔记:最少到最多提示过程 (Least to Most prompting, LtM)

LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS 2023 ICLR 1 概述 进一步发展维链提示过程 (CoT prompting) 分为两个阶段&#xff1a; 第一阶段&#xff1a;向语言模型提出查询&#xff0c;将问题分解成子问题。第二阶段&#xff1a;再次向语…

Z Potentials | 星爵,他的征途不止向量数据库

纵观过去几十年的科技发展史&#xff0c;每一代新的技术架构的出现往往都伴随着新的数据范式的出现&#xff0c;也催生了多家百亿到千亿美金数据平台的诞生。如果说 2023 年科技领域的关键词是 LLM&#xff0c;那么数据库领域的关键词一定非向量数据库莫属。向量数据库是一种专…

SpringMVC拦截器和过滤器执行顺序及区别

拦截器&#xff08;Inteceptor&#xff09;和过滤器&#xff08;Filter&#xff09;执行顺序&#xff1f; 拦截器和过滤器区别&#xff1f; 1、拦截次数不同&#xff1a; 过滤器&#xff1a;一次请求只能被一个过滤器拦截一次&#xff0c;它们按照在web.xml中的声明顺序依次执…

IJCAI23 - Continual Learning Tutorial

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 本篇 Tutorial 主要介绍了 CL 中的一些基本概念以及一些过往的方法。 Problem Definition Continual Learning 和 Increm…

DataX及使用

DataX及使用 【一】DataX概述【二】DataX架构原理【1】设计理念【2】框架设计【3】运行流程【4】调度决策思路【5】DataX和Sqoop对比 【三】DataX部署【四】DataX上手【1】使用概述【2】配置文件格式【3】同步Mysql数据到HDFS 【五】DataX整合Springboot 【一】DataX概述 Data…

C++面试宝典【配文档,全方面学习】

原word文档[链接: https://pan.baidu.com/s/1CKnm7vHDmHSDskAgxgZgKA?pwdr4wv 提取码: r4wv 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v5的分享] 一、C / C基础 1、简述C的内存分区&#xff1f; 一个C、C程序的内存分区主要有5个…

【李沐精读系列】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…

Spring Boot异常处理和单元测试

1.SpringBoot异常处理 1.1.自定义错误页面 SpringBoot默认的处理异常的机制&#xff1a;SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请…

LiveNVR监控流媒体Onvif/RTSP功能-支持云端录像监控视频集中存储录像回看录像计划配置NVR硬件设备录像回看

LiveNVR支持云端录像监控视频集中存储录像回看录像计划配置NVR硬件设备录像回看 1、流媒体服务软件2、录像回看3、查看录像3.1、时间轴视图3.2、列表视图 4、如何分享时间轴录像回看&#xff1f;5、iframe集成示例7、录像计划7、相关问题7.1、录像存储位置如何配置&#xff1f;…