Go to the documentation of this file.
36 #ifndef JSK_RECOGNITION_UTILS_GEO_CUBE_H_
37 #define JSK_RECOGNITION_UTILS_GEO_CUBE_H_
41 #include <jsk_recognition_msgs/BoundingBoxArray.h>
49 Cube(
const Eigen::Vector3f& pos,
const Eigen::Quaternionf& rot);
50 Cube(
const Eigen::Vector3f& pos,
const Eigen::Quaternionf& rot,
51 const std::vector<double>& dimensions);
52 Cube(
const Eigen::Vector3f& pos,
const Eigen::Quaternionf& rot,
53 const Eigen::Vector3f& dimensions);
54 Cube(
const Eigen::Vector3f& pos,
55 const Line& line_a,
const Line& line_b,
const Line& line_c);
56 Cube(
const jsk_recognition_msgs::BoundingBox& box);
58 std::vector<Segment::Ptr>
edges();
61 void setDimensions(
const std::vector<double>& new_dimensions) {
66 jsk_recognition_msgs::BoundingBox
toROSMsg();
88 std::vector<Polygon::Ptr>
faces();
98 virtual Eigen::Vector3f
nearestPoint(
const Eigen::Vector3f&
p,
101 Eigen::Vector3f
pos_;
102 Eigen::Quaternionf
rot_;
110 const Eigen::Vector3f v1,
111 const Eigen::Vector3f v2,
112 const Eigen::Vector3f v3);
118 virtual Eigen::Vector3f
buildVertex(
double i,
double j,
double k);
virtual Polygon::Ptr buildFace(const Eigen::Vector3f v0, const Eigen::Vector3f v1, const Eigen::Vector3f v2, const Eigen::Vector3f v3)
A helper method to build polygon from 4 vertices.
jsk_recognition_msgs::BoundingBox toROSMsg()
std::vector< Segment::Ptr > edges()
virtual Eigen::Vector3f nearestPoint(const Eigen::Vector3f &p, double &distance)
compute minimum distance from point p to cube surface.
virtual Eigen::Vector3f buildVertex(double i, double j, double k)
A helper method to build vertex from x-y-z relatiev coordinates.
void setDimensions(const std::vector< double > &new_dimensions)
boost::shared_ptr< Cube > Ptr
Vertices vertices()
returns vertices as an array of Eigen::Vectro3f. The order of the vertices is: [1,...
Vertices transformVertices(const Eigen::Affine3f &pose_offset)
returns vertices transformed by pose_offset.
std::vector< double > getDimensions() const
std::vector< Polygon::Ptr > faces()
returns all the 6 faces as Polygon::Ptr. TODO: is it should be ConvexPolygon?
boost::shared_ptr< Polygon > Ptr
boost::shared_ptr< ConvexPolygon > Ptr
ConvexPolygon::Ptr intersectConvexPolygon(Plane &plane)
std::vector< double > dimensions_
std::vector< Eigen::Vector3f, Eigen::aligned_allocator< Eigen::Vector3f > > Vertices
Cube(const Eigen::Vector3f &pos, const Eigen::Quaternionf &rot)