KrisLibrary  1.0.0
CartesianDrive.h
1 #ifndef ROBOTICS_CARTESIAN_DRIVE_H
2 #define ROBOTICS_CARTESIAN_DRIVE_H
3 
4 #include "RobotDynamics3D.h"
5 #include "IK.h"
6 
16 {
17  public:
23  void Init(const Config& q,
24  const std::vector<int>& links);
26  void Init(const Config& q,
27  const std::vector<int>& links,
28  const std::vector<Vector3>& endEffectorPositions);
31  void Init(const Config& q,
32  const std::vector<int>& links,const std::vector<int>& baseLinks,
33  const std::vector<Vector3>& endEffectorPositions);
35  void Init(const Config& q,int link);
37  void Init(const Config& q,int link,const Vector3& endEffectorPosition);
38 
53  Real Drive(const Config& qcur,
54  const std::vector<Vector3>& angVel,
55  const std::vector<Vector3>& vel,
56  Real dt,
57  Config& qnext);
58 
60  Real Drive(const Config& qcur,
61  const Vector3& angVel,
62  const Vector3& vel,
63  Real dt,
64  Config& qout);
65 
72  void GetTrajectory(const Config& qcur,
73  const std::vector<Vector3>& angVel,
74  const std::vector<Vector3>& vel,
75  Real dt,
76  int numSteps,
77  std::vector<Config>& trace,
78  bool reset = true);
79 
80 
81  RobotDynamics3D* robot;
83  Real positionTolerance,rotationTolerance;
91  std::vector<int> links;
93  std::vector<int> baseLinks;
95  std::vector<Vector3> endEffectorOffsets;
97  std::vector<RigidTransform> driveTransforms;
103  std::vector<IKGoal> ikGoals;
106  std::vector<int> activeDofs;
108  Config qmin,qmax;
110  Vector vmin,vmax;
111 };
112 
113 #endif
114 
115 
116 
A 3D vector class.
Definition: math3d/primitives.h:136
Vector Config
an alias for Vector
Definition: RobotKinematics3D.h:14
std::vector< Vector3 > endEffectorOffsets
The set of end effector offsets.
Definition: CartesianDrive.h:95
std::vector< int > baseLinks
In relative cartesian positioning mode, these are the base links.
Definition: CartesianDrive.h:93
Config qmin
If set, overrides the robot&#39;s default joint limits.
Definition: CartesianDrive.h:108
Real driveSpeedAdjustment
If the IK solver had problems, the drive speed will be reduced.
Definition: CartesianDrive.h:99
void GetTrajectory(const Config &qcur, const std::vector< Vector3 > &angVel, const std::vector< Vector3 > &vel, Real dt, int numSteps, std::vector< Config > &trace, bool reset=true)
Definition: CartesianDrive.cpp:353
Real ikSolveTolerance
Definition: CartesianDrive.h:87
std::vector< int > links
The set of constrained links.
Definition: CartesianDrive.h:91
Simultaneously moves joints on the robot to achieve one or more Cartesian velocity goals...
Definition: CartesianDrive.h:15
Real Drive(const Config &qcur, const std::vector< Vector3 > &angVel, const std::vector< Vector3 > &vel, Real dt, Config &qnext)
Definition: CartesianDrive.cpp:80
std::vector< RigidTransform > driveTransforms
The current cartesian drive goals. Must be of size links.size().
Definition: CartesianDrive.h:97
Vector vmin
If set, overrides the robot&#39;s default velocity limits.
Definition: CartesianDrive.h:110
Real positionTolerance
IK will maintained up to these tolerances. Default 1e-3.
Definition: CartesianDrive.h:83
int ikSolveIters
IK solver will terminate when the solver meets this number of iterations.
Definition: CartesianDrive.h:89
Class defining kinematic and dynamic state of a robot, with commonly used functions. Inherits from RobotKinematics3D.
Definition: RobotDynamics3D.h:32
std::vector< int > activeDofs
Definition: CartesianDrive.h:106
std::vector< IKGoal > ikGoals
Definition: CartesianDrive.h:103
void Init(const Config &q, const std::vector< int > &links)
Definition: CartesianDrive.cpp:30