Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef ROTATING_HAND_H
00033 #define ROTATING_HAND_H
00034
00035 #include <Eigen/Dense>
00036 #include <iostream>
00037 #include <pcl/point_types.h>
00038 #include <pcl/visualization/pcl_visualizer.h>
00039 #include <vector>
00040
00041 #include <agile_grasp/antipodal.h>
00042 #include <agile_grasp/finger_hand.h>
00043 #include <agile_grasp/grasp_hypothesis.h>
00044
00055 class RotatingHand
00056 {
00057 public:
00058
00062 RotatingHand() : tolerant_antipodal_(true), cam_source_(-1) { }
00063
00069 RotatingHand(bool tolerant_antipodal, int cam_source)
00070 : tolerant_antipodal_(tolerant_antipodal), cam_source_(cam_source)
00071 { }
00072
00081 RotatingHand(const Eigen::VectorXd& camera_origin_left, const Eigen::VectorXd& camera_origin_right,
00082 const FingerHand& finger_hand, bool tolerant_antipodal, int cam_source);
00083
00093 void transformPoints(const Eigen::Matrix3Xd& points, const Eigen::Vector3d& normal,
00094 const Eigen::Vector3d& axis, const Eigen::Matrix3Xd& normals, const Eigen::VectorXi& points_cam_source,
00095 double hand_height);
00096
00103 std::vector<GraspHypothesis> evaluateHand(double init_bite, const Eigen::Vector3d& sample, bool use_antipodal);
00104
00109 const Eigen::Matrix<double, 3, 2>& getCams() const
00110 {
00111 return cams_;
00112 }
00113
00118 const Eigen::VectorXi& getPointsCamSource() const
00119 {
00120 return points_cam_source_;
00121 }
00122
00127 int getCamSource() const
00128 {
00129 return cam_source_;
00130 }
00131
00132
00133 private:
00134
00135 int cam_source_;
00136 Eigen::Matrix<double, 3, 2> cams_;
00137 Eigen::VectorXd angles_;
00138 Eigen::Matrix3Xd points_;
00139 Eigen::Vector3d hand_axis_;
00140 Eigen::Matrix3d frame_;
00141 Eigen::Matrix3Xd normals_;
00142 Eigen::VectorXi points_cam_source_;
00143 FingerHand finger_hand_;
00144
00146 bool tolerant_antipodal_;
00147 };
00148
00149 #endif