27 namespace perception {
134 this->theta = pi.
theta;
142 bool IsValid()
const {
return (nr_support > 0); }
168 bool Validate()
const;
196 void Reserve(
unsigned int size) { indices.reserve(size); }
199 int Prune(
unsigned int min_nr_samples,
unsigned int max_nr_samples);
201 return static_cast<unsigned int>(indices.size());
204 assert(i >= 0 && i < indices.size());
205 return indices.at(i);
208 assert(i >= 0 && i < static_cast<int>(indices.size()));
209 return indices.at(i);
212 assert(i >= 0 && i < indices.size());
213 return indices.at(i);
216 assert(i >= 0 && i < static_cast<int>(indices.size()));
217 return indices.at(i);
232 virtual bool Detect(
const float *point_cloud,
float *height_above_ground,
233 unsigned int nr_points,
234 unsigned int nr_point_elements) = 0;
241 static const int dim_point_ = 3;
247 bool Detect(
const float *point_cloud,
float *height_above_ground,
248 unsigned int nr_points,
unsigned int nr_point_elements);
249 const char *GetLabel()
const;
252 unsigned int GetGridDimX()
const;
253 unsigned int GetGridDimY()
const;
254 float GetUnknownHeight();
261 int FitLine(
unsigned int r);
264 unsigned int nr_point_element,
float dist_thre);
266 int FilterCandidates(
int r,
int c,
const float *point_cloud,
268 std::vector<std::pair<int, int>> *neighbors,
269 unsigned int nr_point_element);
270 int FitGridWithNeighbors(
int r,
int c,
const float *point_cloud,
272 unsigned int nr_points,
273 unsigned int nr_point_element,
float dist_thre);
274 void GetNeighbors(
int r,
int c,
int rows,
int cols,
275 std::vector<std::pair<int, int>> *neighbors);
277 const std::vector<std::pair<int, int>> &neighbors);
279 int FilterLine(
unsigned int r);
280 int FilterGrid(
const Voxel<float> &vg,
const float *point_cloud,
282 unsigned int nr_point_element);
284 int SmoothLine(
unsigned int up,
unsigned int r,
unsigned int dn);
292 int CompareZ(
const float *point_cloud,
const std::vector<int> &point_indices,
294 unsigned int nr_points,
unsigned int nr_point_element,
295 unsigned int nr_compares);
296 void ComputeAdaptiveThreshold();
297 void ComputeSignedGroundHeight(
const float *point_cloud,
298 float *height_above_ground,
299 unsigned int nr_points,
300 unsigned int nr_point_elements);
301 void ComputeSignedGroundHeightLine(
const float *point_cloud,
305 float *height_above_ground,
unsigned int r,
306 unsigned int nr_points,
307 unsigned int nr_point_elements);
float phi
Definition: i_ground.h:158
void ForcePositiveNormalZ()
Definition: i_ground.h:88
float planefit_orien_threshold
Definition: i_ground.h:187
void IPlaneSpherToEucli(const GroundPlaneSpherical &src, GroundPlaneLiDAR *dst)
float get_degree_normal_to_y() const
Definition: i_ground.h:54
Definition: i_ground.h:29
bool GetStatus() const
Definition: i_ground.h:153
const int & operator[](int i) const
Definition: i_ground.h:215
const int & operator[](unsigned int i) const
Definition: i_ground.h:211
T ISquaresum3(const T x[3])
Definition: i_blas.h:2536
void Reserve(unsigned int size)
Definition: i_ground.h:196
void IScale4(T x[4], T sf)
Definition: i_blas.h:1874
BaseGroundDetector(const PlaneFitGroundDetectorParam ¶m)
Definition: i_ground.h:229
PlaneFitPointCandIndices ** local_candis_
Definition: i_ground.h:314
T IL2Norm3(const T x[3])
Definition: i_blas.h:2812
void ForcePositiveNormalX()
Definition: i_ground.h:76
void ForcePositiveNormalY()
Definition: i_ground.h:82
void ForceInvalid()
Definition: i_ground.h:94
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
void Clear()
Definition: i_ground.h:197
GroundPlaneLiDAR ** ground_planes_
Definition: i_ground.h:312
GroundPlaneSpherical & operator=(const GroundPlaneSpherical &pi)
Definition: i_ground.h:133
unsigned int nr_z_comp_candis
Definition: i_ground.h:173
int nr_ransac_iter_threshold
Definition: i_ground.h:190
void ICopy3(const T src[3], T dst[3])
Definition: i_blas.h:40
VoxelGridXY< float > * vg_fine_
Definition: i_ground.h:310
int & operator[](unsigned int i)
Definition: i_ground.h:203
float IRec(float a)
Definition: i_basic.h:69
float IRadiansToDegree(float r)
Definition: i_basic.h:260
float theta
Definition: i_ground.h:157
unsigned int nr_grids_fine
Definition: i_ground.h:171
bool GetStatus() const
Definition: i_ground.h:115
unsigned int nr_grids_coarse
Definition: i_ground.h:172
Definition: i_ground.h:166
Definition: i_ground.h:126
int random_seed
Definition: i_ground.h:220
unsigned int nr_inliers_min_threshold
Definition: i_ground.h:176
unsigned int nr_z_comp_fail_threshold
Definition: i_ground.h:174
Definition: i_ground.h:227
GroundPlaneSpherical ** ground_planes_sphe_
Definition: i_ground.h:313
float params[4]
Definition: i_ground.h:119
const PlaneFitGroundDetectorParam & param_
Definition: i_ground.h:237
void SetNrSupport(int nr)
Definition: i_ground.h:151
virtual ~BaseGroundDetector()
Definition: i_ground.h:231
void ForceUnitNorm()
Definition: i_ground.h:99
float GetDegreeNormalToX() const
Definition: i_ground.h:43
float planefit_filter_threshold
Definition: i_ground.h:186
int * sampled_indices_
Definition: i_ground.h:321
void IZero4(T a[4])
Definition: i_blas.h:338
void INeg4(T x[4])
Definition: i_blas.h:421
unsigned int nr_points_max
Definition: i_ground.h:170
float GetDegreeNormalToZ() const
Definition: i_ground.h:65
float roi_near_rad
Definition: i_ground.h:183
float IAcos(float alpha)
Definition: i_basic.h:239
const int I_DEFAULT_SEED
Definition: i_rand.h:24
std::vector< int > indices
Definition: i_ground.h:219
float * sampled_z_values_
Definition: i_ground.h:319
float d
Definition: i_ground.h:159
float planefit_dist_threshold_near
Definition: i_ground.h:184
Definition: i_struct_s.h:178
int GetNrSupport() const
Definition: i_ground.h:111
float ** pf_thresholds_
Definition: i_ground.h:316
float planefit_dist_threshold_far
Definition: i_ground.h:185
void PushIndex(int i)
Definition: i_ground.h:198
GroundPlaneSpherical()
Definition: i_ground.h:127
char * labels_
Definition: i_ground.h:318
VoxelGridXY< float > * vg_coarse_
Definition: i_ground.h:311
Definition: i_ground.h:240
GroundPlaneLiDAR & operator=(const GroundPlaneLiDAR &pi)
Definition: i_ground.h:36
void SetStatus(bool flag)
Definition: i_ground.h:155
float termi_inlier_percen_threshold
Definition: i_ground.h:188
bool Init(const char *binary_name)
float roi_region_rad_y
Definition: i_ground.h:181
void INeg3(T x[3])
Definition: i_blas.h:415
void SetStatus(bool flag)
Definition: i_ground.h:117
unsigned int * map_fine_to_coarse_
Definition: i_ground.h:317
bool IsValid() const
Definition: i_ground.h:142
std::pair< int, int > * order_table_
Definition: i_ground.h:322
Definition: i_ground.h:194
GroundPlaneLiDAR()
Definition: i_ground.h:30
float ISqrt(float a)
Definition: i_basic.h:76
PlaneFitGroundDetectorParam()
Definition: i_ground.h:167
float candidate_filter_threshold
Definition: i_ground.h:189
unsigned int nr_samples_max_threshold
Definition: i_ground.h:177
int GetNrSupport() const
Definition: i_ground.h:149
void ForceInvalid()
Definition: i_ground.h:144
std::pair< float, bool > ** ground_z_
Definition: i_ground.h:315
float roi_region_rad_z
Definition: i_ground.h:182
unsigned int nr_samples_min_threshold
Definition: i_ground.h:175
void IPlaneEucliToSpher(const GroundPlaneLiDAR &src, GroundPlaneSpherical *dst)
void IScale3(T x[3], T sf)
Definition: i_blas.h:1868
void SetNrSupport(int nr)
Definition: i_ground.h:113
int nr_smooth_iter
Definition: i_ground.h:191
float * pf_threeds_
Definition: i_ground.h:320
PlaneFitPointCandIndices()
Definition: i_ground.h:195
float sample_region_z_lower
Definition: i_ground.h:178
float sample_region_z_upper
Definition: i_ground.h:179
bool IsValid() const
Definition: i_ground.h:104
int & operator[](int i)
Definition: i_ground.h:207
void ICopy4(const T src[4], T dst[4])
Definition: i_blas.h:46
unsigned int Size() const
Definition: i_ground.h:200
float roi_region_rad_x
Definition: i_ground.h:180