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

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

#include "stdafx.h"

#include //标准输入输出流

#include //PCL的PCD格式文件的输入输出头文件

#include //PCL对各种格式的点的支持头文件

#include //点云显示文件

#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<:pointxyz>::Ptr cloud(new pcl::PointCloud<:pointxyz>); // 创建点云(指针)

//点云测试数据

if (pcl::io::loadPCDFile<: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<:pointxyz>::Ptr cloud_vu8(new pcl::PointCloud<: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);

}

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

118f11c3291f66c27a34315548c5e5bf.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值