LiDAR-MEMS激光雷达点云实时显示

2024-02-14 23:38

本文主要是介绍LiDAR-MEMS激光雷达点云实时显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


      MEMS激光雷达出来后,为了不用LeddarTech的IDE软件,于是对其代码进行了封装,以供其他软件调用。在研究的过程中,点云的实时显示以前还未做过,就写了段测试代码,验证一下:

#include "stdafx.h"
#include <iostream> //标准输入输出流  
#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件  
#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件  
#include <pcl/visualization/cloud_viewer.h>  //点云显示文件
#include "leddartechVu8.h" //MEMS激光雷达封装头文件
using namespace std;boost::mutex updateModelMutex;int user_data;
int main(int argc, char** argv)
{pcl::visualization::CloudViewer viewer("Cloud Viewer");pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 创建点云(指针)  //点云测试数据if (pcl::io::loadPCDFile<pcl::PointXYZ>("1.pcd", *cloud) == -1) //* 读入PCD格式的文件,如果文件不存在,返回-1  {PCL_ERROR("Couldn't read file test_pcd.pcd \n"); //文件不存在时,返回错误,终止程序。  return (-1);}std::cout << "Loaded "<< cloud->width * cloud->height<< " data points from test_file.pcd with the following fields: "<< std::endl;int set = 2000;int block = cloud->size()/set;//点云转换函数float vu8_angle[8] = { -7.175, -5.125, -3.075, -1.025, 1.025, 3.075, 5.125, 7.175 };//定义相关变量pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_vu8(new pcl::PointCloud<pcl::PointXYZ>);//初始化点云数据PCD文件头cloud_vu8->width = set;cloud_vu8->height = 1;cloud_vu8->is_dense = true;cloud_vu8->points.resize(cloud_vu8->width*cloud_vu8->height);while (!viewer.wasStopped()){for (UINT i = 0; i < set; ++i){cloud_vu8->points[i].x = cloud->points[i + (block - 1) * set].x;cloud_vu8->points[i].y = cloud->points[i + (block - 1) * set].y;cloud_vu8->points[i].z = cloud->points[i + (block - 1) * set].z;}viewer.showCloud(cloud_vu8);cout << block << endl;block--;user_data++;Sleep(50);}system("pause");return (0);
}

编译通过,实时显示了点云数据如下图所示:


这篇关于LiDAR-MEMS激光雷达点云实时显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709894

相关文章

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器