Apollo 11.0
自动驾驶开放平台
apollo::perception::lidar::GpuDownSample类 参考

#include <gpu_down_sample.h>

类 apollo::perception::lidar::GpuDownSample 继承关系图:
apollo::perception::lidar::GpuDownSample 的协作图:

Public 成员函数

 GpuDownSample ()=default
 
virtual ~GpuDownSample ()=default
 
bool Init (const DownSampleInitOptions &options=DownSampleInitOptions()) override
 Init of GpuDownSample object
 
bool Process (const DownSampleOptions &options, base::PointFCloudPtr &cloud_ptr) override
 filter mark area objects
 
std::string Name () const override
 Name of GpuDownSample object
 
- Public 成员函数 继承自 apollo::perception::lidar::BaseDownSample
 BaseDownSample ()=default
 Construct a new Base Down Sample object
 
virtual ~BaseDownSample ()=default
 Destroy the Base Down Sample object
 

详细描述

在文件 gpu_down_sample.h 第 36 行定义.

构造及析构函数说明

◆ GpuDownSample()

apollo::perception::lidar::GpuDownSample::GpuDownSample ( )
default

◆ ~GpuDownSample()

virtual apollo::perception::lidar::GpuDownSample::~GpuDownSample ( )
virtualdefault

成员函数说明

◆ Init()

bool apollo::perception::lidar::GpuDownSample::Init ( const DownSampleInitOptions &  options = DownSampleInitOptions())
overridevirtual

Init of GpuDownSample object

参数
optionsobject down sample options
返回
true
false

实现了 apollo::perception::lidar::BaseDownSample.

在文件 gpu_down_sample.cc 第 28 行定义.

28 {
29 std::string config_file = GetConfigFile(options.config_path, options.config_file);
30 GpuDownSampleConfig config;
31 ACHECK(cyber::common::GetProtoFromFile(config_file, &config));
32 downsample_voxel_size_x_ = config.downsample_voxel_size_x();
33 downsample_voxel_size_y_ = config.downsample_voxel_size_y();
34 downsample_voxel_size_z_ = config.downsample_voxel_size_z();
35 downsample_use_centroid = config.downsample_use_centroid();
36
37 AINFO << "GpuDownSample plugin init success.";
38 return true;
39}
#define ACHECK(cond)
Definition log.h:80
#define AINFO
Definition log.h:42
bool GetProtoFromFile(const std::string &file_name, google::protobuf::Message *message)
Parses the content of the file specified by the file_name as a representation of protobufs,...
Definition file.cc:132
std::string GetConfigFile(const std::string &config_path, const std::string &config_file)
Definition util.cc:80

◆ Name()

std::string apollo::perception::lidar::GpuDownSample::Name ( ) const
inlineoverridevirtual

Name of GpuDownSample object

返回
std::string name

实现了 apollo::perception::lidar::BaseDownSample.

在文件 gpu_down_sample.h 第 65 行定义.

65 {
66 return "GpuDownSample";
67 }

◆ Process()

bool apollo::perception::lidar::GpuDownSample::Process ( const DownSampleOptions &  options,
base::PointFCloudPtr &  cloud_ptr 
)
overridevirtual

filter mark area objects

参数
optionsdown sample options
cloud_ptrpoint cloud to process
返回
true
false

实现了 apollo::perception::lidar::BaseDownSample.

在文件 gpu_down_sample.cc 第 41 行定义.

41 {
42 base::PointF* h_point_cloud;
43 base::PointF* d_point_cloud;
44 cudaError_t err = ::cudaSuccess;
45 unsigned int flags = cudaHostAllocMapped;
46 err = cudaHostAlloc(&h_point_cloud, cloud_ptr->size() * sizeof(base::PointF), flags);
47 if (err != ::cudaSuccess) {
48 AERROR << "cudaHostAlloc returns failed";
49 }
50 err = cudaHostGetDevicePointer(&d_point_cloud, h_point_cloud, 0);
51 if (err != ::cudaSuccess) {
52 AERROR << "cudaHostGetDevicePointer returns failed";
53 }
54 for (int i = 0; i < cloud_ptr->size(); i++) {
55 h_point_cloud[i].x = cloud_ptr->at(i).x;
56 h_point_cloud[i].y = cloud_ptr->at(i).y;
57 h_point_cloud[i].z = cloud_ptr->at(i).z;
58 h_point_cloud[i].intensity = cloud_ptr->at(i).intensity;
59 }
60
61 // DownSample
62 int filtered_point_count = cloud_ptr->size();
63 if (!downSample(
64 d_point_cloud,
65 filtered_point_count,
66 downsample_voxel_size_x_,
67 downsample_voxel_size_y_,
68 downsample_voxel_size_z_,
69 downsample_use_centroid)) {
70 AERROR << "downSample is wrong!";
71 }
72 cudaDeviceSynchronize();
73
74 // After DownSample
75 cloud_ptr->resize(filtered_point_count);
76 for (int i = 0; i < filtered_point_count; i++) {
77 cloud_ptr->at(i).x = h_point_cloud[i].x;
78 cloud_ptr->at(i).y = h_point_cloud[i].y;
79 cloud_ptr->at(i).z = h_point_cloud[i].z;
80 cloud_ptr->at(i).intensity = h_point_cloud[i].intensity;
81 }
82 cudaFreeHost(h_point_cloud);
83 return true;
84}
#define AERROR
Definition log.h:44
Point< float > PointF
Definition point.h:56

该类的文档由以下文件生成: