NJointTrajectoryController.h
Go to the documentation of this file.
1#pragma once
2
3#include <VirtualRobot/VirtualRobot.h>
4
5#include <ArmarXGui/interface/StaticPlotterInterface.h>
6
9#include <RobotAPI/interface/units/RobotUnit/NJointTrajectoryController.h>
11
13
14namespace armarx
15{
17
23
24 /**
25 * @brief The NJointTrajectoryController class
26 * @ingroup Library-RobotUnit-NJointControllers
27 */
29 public NJointControllerWithTripleBuffer<NJointTrajectoryControllerControlData>,
30 public NJointTrajectoryControllerInterface
31 {
32 public:
34 const NJointControllerConfigPtr& config,
36
38
39 // NJointControllerInterface interface
40 std::string getClassName(const Ice::Current&) const override;
41 void onInitNJointController() override;
42 void onConnectNJointController() override;
43
44 // NJointController interface
45 void rtPreActivateController() override;
46 void rtPostDeactivateController() override;
47 void rtRun(const IceUtil::Time& sensorValuesTimestamp,
48 const IceUtil::Time& timeSinceLastIteration) override;
49
50 // NJointTrajectoryControllerInterface interface
51 void setTrajectory(const TrajectoryBasePtr& t, const Ice::Current&) override;
52 bool isFinished(const Ice::Current&) override;
53 double getCurrentTimestamp(const Ice::Current&) override;
54 float getCurrentProgressFraction(const Ice::Current&) override;
55
56 double getCurrentTrajTime() const;
57 void setLooping(bool looping);
58 double getTrajEndTime() const;
60
61 private:
62 IceUtil::Time startTime;
63 std::vector<ControlTarget1DoFActuatorVelocity*> targets;
64 std::vector<const SensorValue1DoFActuatorPosition*> sensors;
65 LimitlessStateSeq limitlessStates;
66 StaticPlotterInterfacePrx plotter;
68
69 Eigen::VectorXf currentPos;
70 bool looping = false;
71 float direction = 1.0;
72 double trajEndTime;
73 TrajectoryControllerPtr trajectoryCtrl;
74 NJointTrajectoryControllerConfigPtr cfg;
75 bool finished = false;
76 double currentTimestamp = 0;
77
78 double startTimestamp = 0, endTimestamp = 1;
79 };
80} // namespace armarx
#define TYPEDEF_PTRS_HANDLE(T)
NJointControllerWithTripleBuffer(const NJointTrajectoryControllerControlData &initialCommands=NJointTrajectoryControllerControlData())
The NJointTrajectoryController class.
NJointTrajectoryController(RobotUnit *prov, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
bool isFinished(const Ice::Current &) override
double getCurrentTimestamp(const Ice::Current &) override
void rtPostDeactivateController() override
This function is called after the controller is deactivated.
void rtRun(const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override
TODO make protected and use attorneys.
float getCurrentProgressFraction(const Ice::Current &) override
void setTrajectory(const TrajectoryBasePtr &t, const Ice::Current &) override
std::string getClassName(const Ice::Current &) const override
void rtPreActivateController() override
This function is called before the controller is activated.
The RobotUnit class manages a robot and its controllers.
Definition RobotUnit.h:192
std::shared_ptr< class Robot > RobotPtr
Definition Bus.h:19
This file offers overloads of toIce() and fromIce() functions for STL container types.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
IceInternal::Handle< Trajectory > TrajectoryPtr
Definition Trajectory.h:52
std::shared_ptr< TrajectoryController > TrajectoryControllerPtr