libmove3d-planners
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Groups Pages
Geometry.h
1 #ifndef GEOMETRY_H
2 #define GEOMETRY_H
3 
4 #include "P3d-pkg.h"
5 #include "API/Device/robot.hpp"
6 #include <Eigen/Eigen>
7 
12 namespace m3dGeometry
13 {
14 
17 
19  p3d_point eigenToP3d(const Eigen::Vector3d & v);
21  p3d_matrix4* eigenToP3d(const Eigen::Affine3d & f);
22 
24 
25 
28 
30  Eigen::Vector3d p3dToEigen(const p3d_point v);
32  Eigen::Affine3d p3dToEigen(const p3d_matrix4 pos);
33 
35 
38 
40  p3d_point getTranslation(const p3d_matrix4 t);
41 
43  Eigen::Vector2d getConfBase2DPos(const Configuration &q);
44 
47  void setBaseOrientation(Robot* rob,const Eigen::Matrix3d & rot_mat);
49  void setBaseOrientation(Robot *rob, const Eigen::Vector3d & angles);
51  void setBasePosition(Robot *rob, const Eigen::Vector3d & pos);
53  void setBasePosition2D(Robot *rob, const Eigen::Vector2d & pos);
56  void setBase6D(Robot *rob,const Eigen::Vector3d &pos, const Eigen::Vector3d &angles);
58  void setBase4D(Robot *rob, const Eigen::Vector3d &pos, double theta);
60  void setBaseTransform(Robot* rob, const Eigen::Affine3d & tf);
61 
64  void setBaseFromConf(Robot *rob, const Configuration & conf);
66 
69 
74  Eigen::Affine3d changeFrame(const Eigen::Affine3d &posF1,
75  const Eigen::Affine3d &F1,
76  const Eigen::Affine3d &F2);
80  Eigen::Vector3d changeFramePoint(const Eigen::Vector3d p1,
81  const Eigen::Affine3d &F1,
82  const Eigen::Affine3d &F2);
83 
88  Eigen::Affine3d absoluteFramePos();
89 
91 
92  void test();
93 
94 }
95 
96 #endif // GEOMETRY_H
void setBaseTransform(Robot *rob, const Eigen::Affine3d &tf)
as setBase6D() but with a transform
Definition: Geometry.cpp:99
Eigen::Vector3d changeFramePoint(const Eigen::Vector3d p1, const Eigen::Affine3d &F1, const Eigen::Affine3d &F2)
Same as changeFrame, but only with 3D coordinates.
Definition: Geometry.cpp:121
Eigen::Affine3d absoluteFramePos()
Returns a null transformation (no rotation, no translation, no scalling), i.e.
Definition: Geometry.cpp:128
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
void setBaseFromConf(Robot *rob, const Configuration &conf)
change the current configuration of rob so that its base joint position matches the given conf one...
Definition: Geometry.cpp:105
Eigen::Affine3d changeFrame(const Eigen::Affine3d &posF1, const Eigen::Affine3d &F1, const Eigen::Affine3d &F2)
computes a postion in a new frame (posF2) from the postion in the original frames and the 2 frames po...
Definition: Geometry.cpp:113
void setBasePosition(Robot *rob, const Eigen::Vector3d &pos)
set only base position in 3D (X,Y,Z translations from origin)
Definition: Geometry.cpp:69
void setBase6D(Robot *rob, const Eigen::Vector3d &pos, const Eigen::Vector3d &angles)
as setBaseOrientation() and setBasePosition() with angles Rx,Ry,Rz specified in a vector ...
Definition: Geometry.cpp:85
Classe représentant une Configuration d'un Robot.
Definition: configuration.hpp:25
void setBase4D(Robot *rob, const Eigen::Vector3d &pos, double theta)
as setBase6D() but set Rx and Ry to 0, Rz to theta
Definition: Geometry.cpp:91
void setBasePosition2D(Robot *rob, const Eigen::Vector2d &pos)
does not change z position
Definition: Geometry.cpp:77
p3d_matrix4 * eigenToP3d(const Eigen::Affine3d &f)
convert a position (like in Joint::getAbsPos())
Definition: Geometry.cpp:32
p3d_point getTranslation(const p3d_matrix4 t)
returns the translation part of a transform represented as 4x4 matrix
Definition: Geometry.cpp:42
void setBaseOrientation(Robot *rob, const Eigen::Matrix3d &rot_mat)
set only base rotation based on a rotation matrix (wrt Rx=Ry=Rz=0, NOT rotation from actual position)...
Definition: Geometry.cpp:57
Eigen::Vector2d getConfBase2DPos(const Configuration &q)
returns the base 2d position (1st DOF)
Definition: Geometry.cpp:50