|
|
@ -9,16 +9,42 @@ typedef pcl::PointCloud<Point> PointCloud; |
|
|
typedef Eigen::Vector4f PCLCoord; // vecteur, accès par v(0), v(1)...
|
|
|
typedef Eigen::Vector4f PCLCoord; // vecteur, accès par v(0), v(1)...
|
|
|
typedef geometry_msgs::Quaternion ROSCoord; // struct : x, y, z, w
|
|
|
typedef geometry_msgs::Quaternion ROSCoord; // struct : x, y, z, w
|
|
|
|
|
|
|
|
|
const ROSCoord::ConstPtr |
|
|
class Callback { |
|
|
PCLCoord_to_ROSCoord(const PCLCoord& pcl_coord) |
|
|
public: |
|
|
{ |
|
|
void |
|
|
ROSCoord::Ptr ros_coord(new ROSCoord()); |
|
|
operator()(const PointCloud::ConstPtr& msg) |
|
|
ros_coord->x = pcl_coord(0); // a
|
|
|
{ |
|
|
ros_coord->y = pcl_coord(1); // b
|
|
|
ROS_INFO("PointCloud received"); |
|
|
ros_coord->z = pcl_coord(2); // c
|
|
|
PCLCoord pcl_coord(); |
|
|
ros_coord->w = pcl_coord(3); // d
|
|
|
float curvature; |
|
|
return ros_coord; |
|
|
std::vector<int> indices(); |
|
|
} |
|
|
// TODO : choisir tous les indices
|
|
|
|
|
|
estimator.computePointNormal(*msg, indices, |
|
|
|
|
|
PCLCoord, curvature); |
|
|
|
|
|
/* TODO
|
|
|
|
|
|
if (curvature < ? |
|
|
|
|
|
publisher.publish(to_ROSCoord(pcl_coord)); |
|
|
|
|
|
*/ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Callback(ros::Publisher& pub) : publisher(pub), estimator() {} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
ros::Publisher publisher; |
|
|
|
|
|
|
|
|
|
|
|
pcl::NormalEstimationOMP<Point, pcl::Normal> estimator; |
|
|
|
|
|
|
|
|
|
|
|
const ROSCoord::ConstPtr |
|
|
|
|
|
to_ROSCoord(const PCLCoord& pcl_coord) |
|
|
|
|
|
{ |
|
|
|
|
|
ROSCoord::Ptr ros_coord(new ROSCoord()); |
|
|
|
|
|
ros_coord->x = pcl_coord(0); // a
|
|
|
|
|
|
ros_coord->y = pcl_coord(1); // b
|
|
|
|
|
|
ros_coord->z = pcl_coord(2); // c
|
|
|
|
|
|
ros_coord->w = pcl_coord(3); // d
|
|
|
|
|
|
return ros_coord; |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
int |
|
|
int |
|
|
main(int argc, char** argv) |
|
|
main(int argc, char** argv) |
|
|
|