3d激光雷达开发(生成RangeImage)
Posted 费晓行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3d激光雷达开发(生成RangeImage)相关的知识,希望对你有一定的参考价值。
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
RangeImage,这个英文单词不太好翻译,姑且称之为深度图。因为点云数据中,每一个点其实都是有深度信息的。想象一下,如果把点云数据转换成一幅图片的话,那么图片中每个像素的数值就是这个深度信息。那RangeImage就是根据这个生成的。不仅于此,用户可以自己调节距离、视场角,生成不同的深度图。文中代码的出处在这里,https://pcl.readthedocs.io/projects/tutorials/en/latest/range_image_creation.html#range-image-creation。
1、准备range_image_creation.cpp文件
#include <pcl/range_image/range_image.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/range_image_visualizer.h>
int main ()
pcl::PointCloud<pcl::PointXYZ> pointCloud;
// Generate the data
for (float y=-0.5f; y<=0.5f; y+=0.01f)
for (float z=-0.5f; z<=0.5f; z+=0.01f)
pcl::PointXYZ point;
point.x = 2.0f - y;
point.y = y;
point.z = z;
pointCloud.push_back(point);
pointCloud.width = pointCloud.size();
pointCloud.height = 1;
// We now want to create a range image from the above point cloud, with a 1deg angular resolution
float angularResolution = (float) ( 1.0f * (M_PI/180.0f)); // 1.0 degree in radians
float maxAngleWidth = (float) (360.0f * (M_PI/180.0f)); // 360.0 degree in radians
float maxAngleHeight = (float) (180.0f * (M_PI/180.0f)); // 180.0 degree in radians
Eigen::Affine3f sensorPose = (Eigen::Affine3f)Eigen::Translation3f(0.0f, 0.0f, 0.0f);
pcl::RangeImage::CoordinateFrame coordinate_frame = pcl::RangeImage::CAMERA_FRAME;
float noiseLevel=0.00;
float minRange = 0.0f;
int borderSize = 1;
pcl::RangeImage rangeImage;
rangeImage.createFromPointCloud(pointCloud, angularResolution, maxAngleWidth, maxAngleHeight,
sensorPose, coordinate_frame, noiseLevel, minRange, borderSize);
std::cout << rangeImage << "\\n";
//pcl::RangeImage rangeImage;
pcl::visualization::RangeImageVisualizer range_image_widget("Range image");
range_image_widget.showRangeImage(rangeImage);
while (!range_image_widget.wasStopped())
range_image_widget.spinOnce();
2、创建CMakeLists.txt
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(range_image_creation)
find_package(PCL 1.2 REQUIRED)
include_directories($PCL_INCLUDE_DIRS)
link_directories($PCL_LIBRARY_DIRS)
add_definitions($PCL_DEFINITIONS)
add_executable (range_image_creation range_image_creation.cpp)
target_link_libraries (range_image_creation $PCL_LIBRARIES)
3、创建sln工程,准备编译
4、执行range_image_creation.exe文件
和以前一样,有一串信息打印,
除此之外,还有一个小型的彩色窗口,
因为像素实在太少,所以只能有这么多的点显示。图形中的内容就是所谓的RangeImage。在这过程中,需要关注的主要是一些配置的参数,要弄清楚这些参数的意义,这是比较重要的。
以上是关于3d激光雷达开发(生成RangeImage)的主要内容,如果未能解决你的问题,请参考以下文章