trajectory_generation
RMLTask.hpp
Go to the documentation of this file.
1 /* Generated from orogen/lib/orogen/templates/tasks/Task.hpp */
2 
3 #ifndef TRAJECTORY_GENERATION_RMLTASK_TASK_HPP
4 #define TRAJECTORY_GENERATION_RMLTASK_TASK_HPP
5 
6 #include "trajectory_generation/RMLTaskBase.hpp"
8 #include <ReflexxesAPI.h>
9 
10 /* TODOs (D.M, 2016/06/28):
11  *
12  * - Introduce a "stop" functionality, which leads to a controlled stop of the robot (while repecting the motion constraints). This can be useful
13  * if, e.g. the robot shall be stopped by some external sensor event, without performing a 'hard' stop
14  * - Introduce a "reset" functionality, which sets the current interpolator state to the actual state. This can be used after the robot has stopped
15  * to bring the system to a safe initial state
16  * - Add the possibility to control compliant joints. Here the problem is that the interpolator state is quite often not the same as the actual
17  * robot state (because of a position deviation due to an external force applied to the robot). This could be handles by adding a "maximum allowed
18  * deviation" between actual and interpolator state. However, the continuity of the output signal has to be ensured at all times!
19  */
20 
21 namespace trajectory_generation{
22 
28 class RMLTask : public RMLTaskBase
29 {
30  friend class RMLTaskBase;
31 protected:
33  ReflexxesAPI* rml_api;
34  RMLInputParameters *rml_input_parameters;
35  RMLOutputParameters *rml_output_parameters;
36  RMLFlags* rml_flags;
40  base::Time timestamp;
41  double cycle_time;
44  virtual void updateMotionConstraints(const MotionConstraint& constraint,
45  const size_t idx,
46  RMLInputParameters* new_input_parameters) = 0;
47 
49  virtual RTT::FlowStatus updateCurrentState(RMLInputParameters* new_input_parameters) = 0;
50 
52  virtual RTT::FlowStatus updateTarget(RMLInputParameters* new_input_parameters) = 0;
53 
55  virtual ReflexxesResultValue performOTG(RMLInputParameters* new_input_parameters,
56  RMLOutputParameters* new_output_parameters,
57  RMLFlags *rml_flags) = 0;
58 
60  virtual void writeCommand(const RMLOutputParameters& new_output_parameters) = 0;
61 
63  virtual void printParams(const RMLInputParameters& in, const RMLOutputParameters& out) = 0;
64 
66  virtual const ReflexxesInputParameters& convertRMLInputParams(const RMLInputParameters &in, ReflexxesInputParameters& out) = 0;
67 
69  virtual const ReflexxesOutputParameters& convertRMLOutputParams(const RMLOutputParameters &in, ReflexxesOutputParameters& out) = 0;
70 
72  void handleResultValue(ReflexxesResultValue result_value);
73 
74 public:
75  RMLTask(std::string const& name = "trajectory_generation::RMLTask");
76  RMLTask(std::string const& name, RTT::ExecutionEngine* engine);
77  ~RMLTask();
78  bool configureHook();
79  bool startHook();
80  void updateHook();
81  void errorHook();
82  void stopHook();
83  void cleanupHook();
84 };
85 }
86 
87 #endif
void handleResultValue(ReflexxesResultValue result_value)
Definition: RMLTask.cpp:113
virtual ReflexxesResultValue performOTG(RMLInputParameters *new_input_parameters, RMLOutputParameters *new_output_parameters, RMLFlags *rml_flags)=0
bool configureHook()
Definition: RMLTask.cpp:19
void errorHook()
Definition: RMLTask.cpp:95
~RMLTask()
Definition: RMLTask.cpp:16
RMLTask(std::string const &name="trajectory_generation::RMLTask")
Definition: RMLTask.cpp:8
friend class RMLTaskBase
Definition: RMLTask.hpp:30
virtual const ReflexxesOutputParameters & convertRMLOutputParams(const RMLOutputParameters &in, ReflexxesOutputParameters &out)=0
ReflexxesAPI * rml_api
Definition: RMLTask.hpp:33
Definition: trajectory_generationTypes.hpp:121
bool startHook()
Definition: RMLTask.cpp:52
ReflexxesResultValue
Definition: trajectory_generationTypes.hpp:102
base::Time timestamp
Definition: RMLTask.hpp:40
virtual void updateMotionConstraints(const MotionConstraint &constraint, const size_t idx, RMLInputParameters *new_input_parameters)=0
double cycle_time
Definition: RMLTask.hpp:41
Definition: RMLTask.hpp:28
void stopHook()
Definition: RMLTask.cpp:99
RMLOutputParameters * rml_output_parameters
Definition: RMLTask.hpp:35
void cleanupHook()
Definition: RMLTask.cpp:103
virtual void printParams(const RMLInputParameters &in, const RMLOutputParameters &out)=0
ReflexxesInputParameters input_parameters
Definition: RMLTask.hpp:38
virtual const ReflexxesInputParameters & convertRMLInputParams(const RMLInputParameters &in, ReflexxesInputParameters &out)=0
virtual void writeCommand(const RMLOutputParameters &new_output_parameters)=0
ReflexxesOutputParameters output_parameters
Definition: RMLTask.hpp:39
virtual RTT::FlowStatus updateCurrentState(RMLInputParameters *new_input_parameters)=0
Definition: Conversions.cpp:4
void updateHook()
Definition: RMLTask.cpp:58
RMLFlags * rml_flags
Definition: RMLTask.hpp:36
virtual RTT::FlowStatus updateTarget(RMLInputParameters *new_input_parameters)=0
Definition: trajectory_generationTypes.hpp:16
Definition: trajectory_generationTypes.hpp:154
MotionConstraints motion_constraints
Definition: RMLTask.hpp:32
RMLInputParameters * rml_input_parameters
Definition: RMLTask.hpp:34
ReflexxesResultValue rml_result_value
Definition: RMLTask.hpp:37
Definition: trajectory_generationTypes.hpp:84