1 #ifndef PCL_TRACKING_IMPL_TRACKING_H_
2 #define PCL_TRACKING_IMPL_TRACKING_H_
4 #include <pcl/common/eigen.h>
6 #include <pcl/tracking/boost.h>
7 #include <pcl/tracking/tracking.h>
34 x = y = z = roll = pitch = yaw = 0.0;
40 x = _x; y = _y; z = _z;
41 roll = pitch = yaw = 0.0;
45 inline ParticleXYZRPY (
float _x,
float _y,
float _z,
float _roll,
float _pitch,
float _yaw)
47 x = _x; y = _y; z = _z;
48 roll = _roll; pitch = _pitch; yaw = _yaw;
56 sample (
const std::vector<double>& mean,
const std::vector<double>& cov)
58 x +=
static_cast<float> (
sampleNormal (mean[0], cov[0]));
59 y +=
static_cast<float> (
sampleNormal (mean[1], cov[1]));
60 z +=
static_cast<float> (
sampleNormal (mean[2], cov[2]));
61 roll +=
static_cast<float> (
sampleNormal (mean[3], cov[3]));
62 pitch +=
static_cast<float> (
sampleNormal (mean[4], cov[4]));
63 yaw +=
static_cast<float> (
sampleNormal (mean[5], cov[5]));
77 inline Eigen::Affine3f
86 float trans_x, trans_y, trans_z, trans_roll, trans_pitch, trans_yaw;
88 trans_x, trans_y, trans_z,
89 trans_roll, trans_pitch, trans_yaw);
94 inline float operator [] (
unsigned int i)
102 case 4:
return pitch;
108 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
113 os <<
"(" << p.x <<
"," << p.y <<
"," << p.z <<
","
122 newp.x =
static_cast<float> (p.x * val);
123 newp.y =
static_cast<float> (p.y * val);
124 newp.z =
static_cast<float> (p.z * val);
125 newp.
roll =
static_cast<float> (p.
roll * val);
126 newp.
pitch =
static_cast<float> (p.
pitch * val);
127 newp.
yaw =
static_cast<float> (p.
yaw * val);
189 x = y = z = roll = pitch = yaw = 0.0;
195 x = _x; y = _y; z = _z;
196 roll = pitch = yaw = 0.0;
200 inline ParticleXYZR (
float _x,
float _y,
float _z,
float,
float _pitch,
float)
202 x = _x; y = _y; z = _z;
203 roll = 0; pitch = _pitch; yaw = 0;
211 sample (
const std::vector<double>& mean,
const std::vector<double>& cov)
213 x +=
static_cast<float> (
sampleNormal (mean[0], cov[0]));
214 y +=
static_cast<float> (
sampleNormal (mean[1], cov[1]));
215 z +=
static_cast<float> (
sampleNormal (mean[2], cov[2]));
217 pitch +=
static_cast<float> (
sampleNormal (mean[4], cov[4]));
232 inline Eigen::Affine3f
241 float trans_x, trans_y, trans_z, trans_roll, trans_pitch, trans_yaw;
243 trans_x, trans_y, trans_z,
244 trans_roll, trans_pitch, trans_yaw);
249 inline float operator [] (
unsigned int i)
257 case 4:
return pitch;
263 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
268 os <<
"(" << p.x <<
"," << p.y <<
"," << p.z <<
","
277 newp.x =
static_cast<float> (p.x * val);
278 newp.y =
static_cast<float> (p.y * val);
279 newp.z =
static_cast<float> (p.z * val);
280 newp.
roll =
static_cast<float> (p.
roll * val);
281 newp.
pitch =
static_cast<float> (p.
pitch * val);
282 newp.
yaw =
static_cast<float> (p.
yaw * val);
344 x = y = z = roll = pitch = yaw = 0.0;
350 x = _x; y = 0; z = _z;
351 roll = pitch = yaw = 0.0;
355 inline ParticleXYRPY (
float _x,
float,
float _z,
float _roll,
float _pitch,
float _yaw)
357 x = _x; y = 0; z = _z;
358 roll = _roll; pitch = _pitch; yaw = _yaw;
366 sample (
const std::vector<double>& mean,
const std::vector<double>& cov)
368 x +=
static_cast<float> (
sampleNormal (mean[0], cov[0]));
370 z +=
static_cast<float> (
sampleNormal (mean[2], cov[2]));
371 roll +=
static_cast<float> (
sampleNormal (mean[3], cov[3]));
372 pitch +=
static_cast<float> (
sampleNormal (mean[4], cov[4]));
373 yaw +=
static_cast<float> (
sampleNormal (mean[5], cov[5]));
387 inline Eigen::Affine3f
396 float trans_x, trans_y, trans_z, trans_roll, trans_pitch, trans_yaw;
398 trans_x, trans_y, trans_z,
399 trans_roll, trans_pitch, trans_yaw);
404 inline float operator [] (
unsigned int i)
412 case 4:
return pitch;
418 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
423 os <<
"(" << p.x <<
"," << p.y <<
"," << p.z <<
","
432 newp.x =
static_cast<float> (p.x * val);
433 newp.y =
static_cast<float> (p.y * val);
434 newp.z =
static_cast<float> (p.z * val);
435 newp.
roll =
static_cast<float> (p.
roll * val);
436 newp.
pitch =
static_cast<float> (p.
pitch * val);
437 newp.
yaw =
static_cast<float> (p.
yaw * val);
497 x = y = z = roll = pitch = yaw = 0.0;
503 x = _x; y = 0; z = _z;
504 roll = pitch = yaw = 0.0;
508 inline ParticleXYRP (
float _x,
float,
float _z,
float,
float _pitch,
float _yaw)
510 x = _x; y = 0; z = _z;
511 roll = 0; pitch = _pitch; yaw = _yaw;
519 sample (
const std::vector<double>& mean,
const std::vector<double>& cov)
521 x +=
static_cast<float> (
sampleNormal (mean[0], cov[0]));
523 z +=
static_cast<float> (
sampleNormal (mean[2], cov[2]));
525 pitch +=
static_cast<float> (
sampleNormal (mean[4], cov[4]));
526 yaw +=
static_cast<float> (
sampleNormal (mean[5], cov[5]));
540 inline Eigen::Affine3f
549 float trans_x, trans_y, trans_z, trans_roll, trans_pitch, trans_yaw;
551 trans_x, trans_y, trans_z,
552 trans_roll, trans_pitch, trans_yaw);
557 inline float operator [] (
unsigned int i)
565 case 4:
return pitch;
571 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
576 os <<
"(" << p.x <<
"," << p.y <<
"," << p.z <<
","
585 newp.x =
static_cast<float> (p.x * val);
586 newp.y =
static_cast<float> (p.y * val);
587 newp.z =
static_cast<float> (p.z * val);
588 newp.
roll =
static_cast<float> (p.
roll * val);
589 newp.
pitch =
static_cast<float> (p.
pitch * val);
590 newp.
yaw =
static_cast<float> (p.
yaw * val);
650 x = y = z = roll = pitch = yaw = 0.0;
656 x = _x; y = 0; z = _z;
657 roll = pitch = yaw = 0.0;
661 inline ParticleXYR (
float _x,
float,
float _z,
float,
float _pitch,
float)
663 x = _x; y = 0; z = _z;
664 roll = 0; pitch = _pitch; yaw = 0;
672 sample (
const std::vector<double>& mean,
const std::vector<double>& cov)
674 x +=
static_cast<float> (
sampleNormal (mean[0], cov[0]));
676 z +=
static_cast<float> (
sampleNormal (mean[2], cov[2]));
678 pitch +=
static_cast<float> (
sampleNormal (mean[4], cov[4]));
693 inline Eigen::Affine3f
702 float trans_x, trans_y, trans_z, trans_roll, trans_pitch, trans_yaw;
704 trans_x, trans_y, trans_z,
705 trans_roll, trans_pitch, trans_yaw);
710 inline float operator [] (
unsigned int i)
718 case 4:
return pitch;
724 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
729 os <<
"(" << p.x <<
"," << p.y <<
"," << p.z <<
","
738 newp.x =
static_cast<float> (p.x * val);
739 newp.y =
static_cast<float> (p.y * val);
740 newp.z =
static_cast<float> (p.z * val);
741 newp.
roll =
static_cast<float> (p.
roll * val);
742 newp.
pitch =
static_cast<float> (p.
pitch * val);
743 newp.
yaw =
static_cast<float> (p.
yaw * val);
776 #define PCL_STATE_POINT_TYPES \
777 (pcl::tracking::ParticleXYR) \
778 (pcl::tracking::ParticleXYZRPY) \
779 (pcl::tracking::ParticleXYZR) \
780 (pcl::tracking::ParticleXYRPY) \
781 (pcl::tracking::ParticleXYRP)