Apollo
11.0
自动驾驶开放平台
voxel_downsample.h
浏览该文件的文档.
1
/******************************************************************************
2
* Copyright 2024 The Apollo Authors. All Rights Reserved.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*****************************************************************************/
16
17
#pragma once
18
19
#include <iostream>
20
#include <vector>
21
22
#include <thrust/device_ptr.h>
23
#include <thrust/device_vector.h>
24
#include <thrust/extrema.h>
25
#include <thrust/host_vector.h>
26
#include <thrust/sort.h>
27
28
#include "
modules/perception/common/base/object_pool_types.h
"
29
#include "
modules/perception/common/base/point_cloud_util.h
"
30
31
namespace
apollo
{
32
namespace
perception {
33
namespace
lidar {
34
35
struct
hashElement
{
36
int
index_of_point
;
37
int
index_of_voxel
;
38
int
index_of_valid_voxel
;
39
};
40
41
struct
voxel
{
42
float
x
;
43
float
y
;
44
float
z
;
45
float
intensity
;
46
int
number_of_points
;
47
};
48
49
struct
gridParameters
{
50
float
pointcloud_min_X
;
51
float
pointcloud_min_Y
;
52
float
pointcloud_min_Z
;
53
float
pointcloud_max_X
;
54
float
pointcloud_max_Y
;
55
float
pointcloud_max_Z
;
56
int
number_of_voxel_X
;
57
int
number_of_voxel_Y
;
58
int
number_of_voxel_Z
;
59
int
number_of_voxel
;
60
float
resolution_X
;
61
float
resolution_Y
;
62
float
resolution_Z
;
63
};
64
65
struct
compareHashElements
{
66
__host__ __device__
bool
operator()
(
hashElement
l,
hashElement
r) {
67
return
l.
index_of_voxel
< r.
index_of_voxel
;
68
}
69
};
70
71
struct
compareX
{
72
__host__ __device__
bool
operator()
(
base::PointF
lp,
base::PointF
rp) {
73
return
lp.
x
< rp.
x
;
74
}
75
};
76
77
struct
compareY
{
78
__host__ __device__
bool
operator()
(
base::PointF
lp,
base::PointF
rp) {
79
return
lp.
y
< rp.
y
;
80
}
81
};
82
83
struct
compareZ
{
84
__host__ __device__
bool
operator()
(
base::PointF
lp,
base::PointF
rp) {
85
return
lp.
z
< rp.
z
;
86
}
87
};
88
89
class
VoxelDownSampleCuda
{
90
public
:
91
VoxelDownSampleCuda
();
92
~VoxelDownSampleCuda
();
93
94
cudaError_t
cudaCalculateGridParams
(
95
base::PointF
*d_point_cloud,
96
int
number_of_points,
97
float
resolution_X,
98
float
resolution_Y,
99
float
resolution_Z,
100
gridParameters
&out_rgd_params);
101
102
cudaError_t
cudaCalculateGrid
(
103
int
threads,
104
base::PointF
*d_point_cloud,
105
hashElement
*d_hashTable,
106
int
number_of_points,
107
gridParameters
rgd_params,
108
int
*count);
109
110
cudaError_t
cudaDownSample
(
111
int
threads,
112
base::PointF
*d_point_cloud,
113
bool
*d_markers,
114
hashElement
*d_hashTable,
115
voxel
*d_voxel,
116
int
number_of_points,
117
gridParameters
rgd_params,
118
bool
use_centroid_downsample,
119
int
*count);
120
121
cudaError_t
cudaWarmUpGPU
();
122
};
123
124
}
// namespace lidar
125
}
// namespace perception
126
}
// namespace apollo
apollo::perception::lidar::VoxelDownSampleCuda
Definition
voxel_downsample.h:89
apollo::perception::lidar::VoxelDownSampleCuda::VoxelDownSampleCuda
VoxelDownSampleCuda()
apollo::perception::lidar::VoxelDownSampleCuda::cudaCalculateGridParams
cudaError_t cudaCalculateGridParams(base::PointF *d_point_cloud, int number_of_points, float resolution_X, float resolution_Y, float resolution_Z, gridParameters &out_rgd_params)
apollo::perception::lidar::VoxelDownSampleCuda::~VoxelDownSampleCuda
~VoxelDownSampleCuda()
apollo::perception::lidar::VoxelDownSampleCuda::cudaWarmUpGPU
cudaError_t cudaWarmUpGPU()
apollo::perception::lidar::VoxelDownSampleCuda::cudaCalculateGrid
cudaError_t cudaCalculateGrid(int threads, base::PointF *d_point_cloud, hashElement *d_hashTable, int number_of_points, gridParameters rgd_params, int *count)
apollo::perception::lidar::VoxelDownSampleCuda::cudaDownSample
cudaError_t cudaDownSample(int threads, base::PointF *d_point_cloud, bool *d_markers, hashElement *d_hashTable, voxel *d_voxel, int number_of_points, gridParameters rgd_params, bool use_centroid_downsample, int *count)
apollo
class register implement
Definition
arena_queue.h:37
object_pool_types.h
point_cloud_util.h
apollo::perception::base::Point< float >
apollo::perception::base::Point::y
T y
Definition
point.h:30
apollo::perception::base::Point::x
T x
Definition
point.h:29
apollo::perception::base::Point::z
T z
Definition
point.h:31
apollo::perception::lidar::compareHashElements
Definition
voxel_downsample.h:65
apollo::perception::lidar::compareHashElements::operator()
__host__ __device__ bool operator()(hashElement l, hashElement r)
Definition
voxel_downsample.h:66
apollo::perception::lidar::compareX
Definition
voxel_downsample.h:71
apollo::perception::lidar::compareX::operator()
__host__ __device__ bool operator()(base::PointF lp, base::PointF rp)
Definition
voxel_downsample.h:72
apollo::perception::lidar::compareY
Definition
voxel_downsample.h:77
apollo::perception::lidar::compareY::operator()
__host__ __device__ bool operator()(base::PointF lp, base::PointF rp)
Definition
voxel_downsample.h:78
apollo::perception::lidar::compareZ
Definition
voxel_downsample.h:83
apollo::perception::lidar::compareZ::operator()
__host__ __device__ bool operator()(base::PointF lp, base::PointF rp)
Definition
voxel_downsample.h:84
apollo::perception::lidar::gridParameters
Definition
voxel_downsample.h:49
apollo::perception::lidar::gridParameters::number_of_voxel_X
int number_of_voxel_X
Definition
voxel_downsample.h:56
apollo::perception::lidar::gridParameters::pointcloud_min_X
float pointcloud_min_X
Definition
voxel_downsample.h:50
apollo::perception::lidar::gridParameters::number_of_voxel
int number_of_voxel
Definition
voxel_downsample.h:59
apollo::perception::lidar::gridParameters::pointcloud_min_Y
float pointcloud_min_Y
Definition
voxel_downsample.h:51
apollo::perception::lidar::gridParameters::pointcloud_min_Z
float pointcloud_min_Z
Definition
voxel_downsample.h:52
apollo::perception::lidar::gridParameters::pointcloud_max_X
float pointcloud_max_X
Definition
voxel_downsample.h:53
apollo::perception::lidar::gridParameters::resolution_X
float resolution_X
Definition
voxel_downsample.h:60
apollo::perception::lidar::gridParameters::number_of_voxel_Y
int number_of_voxel_Y
Definition
voxel_downsample.h:57
apollo::perception::lidar::gridParameters::number_of_voxel_Z
int number_of_voxel_Z
Definition
voxel_downsample.h:58
apollo::perception::lidar::gridParameters::resolution_Z
float resolution_Z
Definition
voxel_downsample.h:62
apollo::perception::lidar::gridParameters::pointcloud_max_Y
float pointcloud_max_Y
Definition
voxel_downsample.h:54
apollo::perception::lidar::gridParameters::resolution_Y
float resolution_Y
Definition
voxel_downsample.h:61
apollo::perception::lidar::gridParameters::pointcloud_max_Z
float pointcloud_max_Z
Definition
voxel_downsample.h:55
apollo::perception::lidar::hashElement
Definition
voxel_downsample.h:35
apollo::perception::lidar::hashElement::index_of_voxel
int index_of_voxel
Definition
voxel_downsample.h:37
apollo::perception::lidar::hashElement::index_of_point
int index_of_point
Definition
voxel_downsample.h:36
apollo::perception::lidar::hashElement::index_of_valid_voxel
int index_of_valid_voxel
Definition
voxel_downsample.h:38
apollo::perception::lidar::voxel
Definition
voxel_downsample.h:41
apollo::perception::lidar::voxel::y
float y
Definition
voxel_downsample.h:43
apollo::perception::lidar::voxel::z
float z
Definition
voxel_downsample.h:44
apollo::perception::lidar::voxel::number_of_points
int number_of_points
Definition
voxel_downsample.h:46
apollo::perception::lidar::voxel::intensity
float intensity
Definition
voxel_downsample.h:45
apollo::perception::lidar::voxel::x
float x
Definition
voxel_downsample.h:42
modules
perception
perception_plugin
lidar_detection
gpu_down_sample
voxel_downsample.h