10 #ifndef COLLISION_POINT_HPP_
11 #define COLLISION_POINT_HPP_
17 #include <Eigen/Geometry>
20 #include "planner/TrajectoryOptim/Chomp/chompUtils.hpp"
25 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
27 BoundingCylinder(
const Eigen::Vector3d& p1,
const Eigen::Vector3d& p2,
double radius) :
28 m_p1(p1), m_p2(p2), m_radius(radius)
31 BoundingCylinder(
const Eigen::Vector3d& vect1,
const Eigen::Vector3d& vect2,
32 const Eigen::Vector3d& vect5,
const Eigen::Vector3d& vect6);
34 double getLength() {
return ( m_p1 - m_p2 ).norm(); }
35 double getRadius() {
return m_radius; }
37 Eigen::Vector3d& getPoint1() {
return m_p1; }
38 Eigen::Vector3d& getPoint2() {
return m_p2; }
40 void draw(
const Eigen::Affine3d& T );
51 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
53 CollisionPoint(
const std::vector<int>& parent_joints,
double radius,
double clearance,
int segment_number,
const Eigen::Vector3d& position);
55 CollisionPoint(
const CollisionPoint &point,
const std::vector<int>& parent_joints);
57 virtual ~CollisionPoint();
59 bool isParentJoint(
int joint)
const;
60 double getRadius()
const;
61 double getVolume()
const;
62 double getClearance()
const;
63 double getInvClearance()
const;
64 int getSegmentNumber()
const;
66 const Eigen::Vector3d& getPosition()
const;
68 const std::vector<int>& getParentJoints()
const
70 return m_parent_joints;
73 void getTransformedPosition(std::vector<Eigen::Affine3d>& segment_frames, Eigen::Vector3d& position)
const;
74 void getTransformedPosition(std::vector<std::vector<double> >& segment_frames, Eigen::Vector3d& position)
const;
76 void getJacobian(std::vector<Eigen::Vector3d> & joint_pos,
77 std::vector<Eigen::Vector3d> & joint_axis,
78 Eigen::Vector3d& collision_point_pos,
79 Eigen::MatrixXd& jacobian,
80 const std::vector<int>& group_joint_to_move3d_joint_index)
const;
82 void draw(
const Eigen::Affine3d& T,
bool yellow=
true)
const;
87 std::vector<int> m_parent_joints;
91 double m_inv_clearance;
93 Eigen::Vector3d m_position;
96 inline bool CollisionPoint::isParentJoint(
int joint)
const
98 return(find(m_parent_joints.begin(),
99 m_parent_joints.end(), joint) != m_parent_joints.end());
102 inline double CollisionPoint::getRadius()
const
107 inline double CollisionPoint::getVolume()
const
112 inline double CollisionPoint::getClearance()
const
117 inline double CollisionPoint::getInvClearance()
const
119 return m_inv_clearance;
122 inline int CollisionPoint::getSegmentNumber()
const
124 return m_segment_number;
127 inline const Eigen::Vector3d& CollisionPoint::getPosition()
const
132 inline void CollisionPoint::getTransformedPosition(std::vector<Eigen::Affine3d>& segment_frames,
133 Eigen::Vector3d& position)
const
135 position = segment_frames[m_segment_number] * m_position;
138 inline void CollisionPoint::getTransformedPosition(std::vector<std::vector<double> >& segment_frames,
139 Eigen::Vector3d& position)
const
142 stdVectorToEigenTransform( segment_frames[m_segment_number], T );
143 position = T*m_position;
Definition: CollisionPoint.hpp:22
Definition: CollisionPoint.hpp:48
bool m_is_colliding
Collision point in collision.
Definition: CollisionPoint.hpp:84