TCPControlUnit.h
Go to the documentation of this file.
1 /*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package ArmarX::
17 * @author Mirko Waechter (mirko.waechter at kit dot edu)
18 * @date 2013
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22 
23 #pragma once
24 
25 #include <RobotAPI/interface/units/TCPControlUnit.h>
29 
30 #include <VirtualRobot/IK/DifferentialIK.h>
32 #include <ArmarXCore/interface/observers/ObserverInterface.h>
33 
34 #include <memory>
35 
36 namespace armarx
37 {
38  /**
39  * \class TCPControlUnitPropertyDefinitions
40  * \brief
41  */
44  {
45  public:
48  {
49  defineRequiredProperty<std::string>("KinematicUnitName", "Name of the KinematicUnit Proxy");
50  defineOptionalProperty<std::string>("RobotStateTopicName", "RobotState", "Name of the RobotComponent State topic.");
51  defineOptionalProperty<float>("MaxJointVelocity", 30.f / 180 * 3.141, "Maximal joint velocity in rad/sec");
52  defineOptionalProperty<int>("CycleTime", 30, "Cycle time of the tcp control in ms");
53  // defineOptionalProperty<float>("MaximumCommandDelay", 20000, "Delay after which the TCP Control unit releases itself if no new velocity have been set.");
54  defineOptionalProperty<std::string>("TCPsToReport", "", "comma seperated list of nodesets' endeffectors, which poses and velocities that should be reported. * for all, empty for none");
55  defineOptionalProperty<std::string>("RobotStateComponentName", "RobotStateComponent", "Name of the RobotStateComponent that should be used");
56 
57  defineOptionalProperty<float>("LambdaDampedSVD", 0.1f, "Parameter used for smoothing the differential IK near singularities.");
58  }
59  };
60 
61  /**
62  * \defgroup Component-TCPControlUnit TCPControlUnit
63  * \ingroup RobotAPI-SensorActorUnits
64  * \brief Unit for controlling a tool center point (TCP).
65  *
66  * This class implements the interface to control a node of a robot (e.g a TCP)
67  * in cartesian coordinates in velocity control mode. It takes velocities in mm/s for
68  * translations and rad/s for orientation. Several nodessets can be controlled simultaneously.
69  *
70  * Before the TCPControlUnit can be used, request() needs to be called. Since a cartesian velocity needs
71  * is only correct for the current joint configuration, it needs to recalculated as fast as possible.
72  * Thus, after request is called the TCPControlUnit recalculates the velocity in a given cycle time and
73  * updates the joint velocities. To set another cycle time use setCycleTime().
74  * To set the velocity for a node use setTCPVelocity. Calling setTCPVelocity again with another nodeset
75  * will add this nodeset to the list of currently controlled TCPs.
76  *
77  * \note After usage release() **must** be called to stop the recalcuation and setting of joint velocities.
78  */
79 
80  /**
81  * @ingroup Component-TCPControlUnit
82  * @brief The TCPControlUnit class
83  */
85  virtual public Component,
86  virtual public TCPControlUnitInterface
87  {
88  public:
90 
91  // TCPControlUnitInterface interface
92 
93  /**
94  * \brief Sets the cycle time with which the joint velocities are recalculated.
95  * \param milliseconds New cycle time.
96  * \param c Ice Context, leave blank.
97  */
98  void setCycleTime(Ice::Int milliseconds, const Ice::Current& c = Ice::emptyCurrent) override;
99 
100  /**
101  * \brief Sets the cartesian velocity of a node in a nodeset for translation and/or orientation.
102  * It is best to provide the data in global coordinates. Otherwise the coordinates frame transformation is done in place
103  * on the current robot state, which might not be the same as when the command was given. Additionally, execution inaccurracies
104  * might propagate if local coordinate frames are used.
105  * \param nodeSetName Nodeset that should be used for moving the node, i.e. tcp
106  * \param tcpName Name of the VirtualRobot node that should be moved
107  * \param translationVelocity Target cartesian translation velocity in mm/s, but might not be reached. If NULL the translation is ommitted in the calculation.
108  * Thus the translation behaviour is undefined und the node/tcp position might change.
109  * \param orientationVelocityRPY Target cartesian orientation velocity in rad/s in roll-pitch-yaw, but might not be reached. If NULL the orientation is ommitted in the calculation.
110  * Thus the orientation behaviour is undefined und the node/tcp orientation might change.
111  * \param c Ice Context, leave blank.
112  *
113  * \see request(), release()
114  */
115  void setTCPVelocity(const std::string& nodeSetName, const std::string& tcpName, const::armarx::FramedDirectionBasePtr& translationVelocity, const::armarx::FramedDirectionBasePtr& orientationVelocityRPY, const Ice::Current& c = Ice::emptyCurrent) override;
116 
117  // UnitExecutionManagementInterface interface
118  /**
119  * \brief Does not do anything at the moment.
120  * \param c
121  */
122  void init(const Ice::Current& c = Ice::emptyCurrent) override;
123  /**
124  * \brief Does not do anything at the moment.
125  * \param c
126  */
127  void start(const Ice::Current& c = Ice::emptyCurrent) override;
128  /**
129  * \brief Does not do anything at the moment.
130  * \param c
131  */
132  void stop(const Ice::Current& c = Ice::emptyCurrent) override;
133  UnitExecutionState getExecutionState(const Ice::Current& c = Ice::emptyCurrent) override;
134 
135  // UnitResourceManagementInterface interface
136  /**
137  * \brief Triggers the calculation loop for using cartesian velocity. Call once before/after setting a tcp velocity with SetTCPVelocity.
138  * \param c Ice Context, leave blank.
139  */
140  void request(const Ice::Current& c = Ice::emptyCurrent) override;
141 
142  /**
143  * \brief Releases and stops the recalculation and updating of joint velocities.
144  * Call always when finished with cartesian control. The target velocity values of
145  * all node set will be deleted in this function.
146  * \param c Ice Context, leave blank.
147  */
148  void release(const Ice::Current& c = Ice::emptyCurrent) override;
149 
150  bool isRequested(const Ice::Current& c = Ice::emptyCurrent) override;
151 
152  protected:
153 
154  void onInitComponent() override;
155  void onConnectComponent() override;
156  void onDisconnectComponent() override;
157  void onExitComponent() override;
158  std::string getDefaultName() const override
159  {
160  return "TCPControlUnit";
161  }
162 
163  // PropertyUser interface
165 
166  static Eigen::VectorXf CalcNullspaceJointDeltas(const Eigen::VectorXf& desiredJointDeltas, const Eigen::MatrixXf& jacobian, const Eigen::MatrixXf& jacobianInverse);
167  static Eigen::VectorXf CalcJointLimitAvoidanceDeltas(VirtualRobot::RobotNodeSetPtr robotNodeSet, const Eigen::MatrixXf& jacobian, const Eigen::MatrixXf& jacobianInverse, Eigen::VectorXf desiredJointValues = Eigen::VectorXf());
168  void calcAndSetVelocities();
169  private:
170  static void ContinuousAngles(const Eigen::AngleAxisf& oldAngle, Eigen::AngleAxisf& newAngle, double& offset);
171  void periodicExec();
172  void periodicReport();
173  Eigen::VectorXf calcJointVelocities(VirtualRobot::RobotNodeSetPtr robotNodeSet, Eigen::VectorXf tcpDelta, VirtualRobot::RobotNodePtr refFrame, VirtualRobot::IKSolver::CartesianSelection mode);
174  Eigen::VectorXf applyMaxJointVelocity(const Eigen::VectorXf& jointVelocity, float maxJointVelocity);
175 
176  float maxJointVelocity;
177  int cycleTime;
178  Eigen::Matrix4f lastTCPPose;
179 
180  struct TCPVelocityData
181  {
182  FramedDirectionPtr translationVelocity;
183  FramedDirectionPtr orientationVelocity;
184  std::string nodeSetName;
185  std::string tcpName;
186  };
187 
188  using TCPVelocityDataMap = std::map<std::string, TCPVelocityData>;
189  TCPVelocityDataMap tcpVelocitiesMap, localTcpVelocitiesMap;
190 
191  using DIKMap = std::map<std::string, VirtualRobot::DifferentialIKPtr>;
192  DIKMap dIKMap, localDIKMap;
193 
194 
197  std::string robotName;
198  RobotStateComponentInterfacePrx robotStateComponentPrx;
199  KinematicUnitInterfacePrx kinematicUnitPrx;
200  VirtualRobot::RobotPtr jointExistenceCheckRobot;
201  VirtualRobot::RobotPtr localRobot;
202  VirtualRobot::RobotPtr localReportRobot;
203  VirtualRobot::RobotPtr localVelReportRobot;
204  TCPControlUnitListenerPrx listener;
205 
206  DebugObserverInterfacePrx debugObs;
207 
208  bool requested;
209  std::map<std::string, double> oriOffsets;
210 
211  std::vector<VirtualRobot::RobotNodePtr > nodesToReport;
212  FramedPoseBaseMap lastTCPPoses;
213  IceUtil::Time lastTopicReportTime;
214 
215  std::mutex dataMutex;
216  std::mutex taskMutex;
217  std::mutex reportMutex;
218  bool calculationRunning;
219  double syncTimeDelta;
220 
221  std::string topicName;
222 
223 
224 
225  // KinematicUnitListener interface
226  protected:
227  void reportControlModeChanged(const NameControlModeMap&, Ice::Long timestamp, bool, const Ice::Current&) override;
228  void reportJointAngles(const NameValueMap& jointAngles, Ice::Long timestamp, bool, const Ice::Current&) override;
229  void reportJointVelocities(const NameValueMap& jointVel, Ice::Long timestamp, bool, const Ice::Current&) override;
230  void reportJointTorques(const NameValueMap&, Ice::Long timestamp, bool, const Ice::Current&) override;
231  void reportJointAccelerations(const NameValueMap& jointAccelerations, Ice::Long timestamp, bool aValueChanged, const Ice::Current& c) override;
232  void reportJointCurrents(const NameValueMap&, Ice::Long timestamp, bool, const Ice::Current&) override;
233  void reportJointMotorTemperatures(const NameValueMap&, Ice::Long timestamp, bool, const Ice::Current&) override;
234  void reportJointStatuses(const NameStatusMap&, Ice::Long timestamp, bool, const Ice::Current&) override;
235 
236  };
237 
238  class EDifferentialIK : public VirtualRobot::DifferentialIK, virtual public Logging
239  {
240  public:
241  typedef Eigen::VectorXf(EDifferentialIK::*ComputeFunction)(float);
242 
243  EDifferentialIK(VirtualRobot::RobotNodeSetPtr rns, VirtualRobot:: RobotNodePtr coordSystem = VirtualRobot::RobotNodePtr(), VirtualRobot::JacobiProvider::InverseJacobiMethod invJacMethod = eSVD);
244 
245  VirtualRobot::RobotNodePtr getRefFrame()
246  {
247  return coordSystem;
248  }
250  {
251  return nRows;
252  }
253 
254  Eigen::MatrixXf calcFullJacobian();
255 
256  void clearGoals();
257  void setRefFrame(VirtualRobot::RobotNodePtr coordSystem);
258 
259  void setGoal(const Eigen::Matrix4f& goal, VirtualRobot::RobotNodePtr tcp, VirtualRobot::IKSolver::CartesianSelection mode, float tolerancePosition, float toleranceRotation, Eigen::VectorXf tcpWeight);
260 
261  void setDOFWeights(Eigen::VectorXf dofWeights);
262  // void setTCPWeights(Eigen::VectorXf tcpWeights);
263  bool computeSteps(float stepSize = 1.f, float mininumChange = 0.01f, int maxNStep = 50) override;
264  bool computeSteps(Eigen::VectorXf& resultJointDelta, float stepSize = 1.f, float mininumChange = 0.01f, int maxNStep = 50, ComputeFunction computeFunction = &DifferentialIK::computeStep);
265  Eigen::VectorXf computeStep(float stepSize) override;
266  void applyDOFWeightsToJacobian(Eigen::MatrixXf& Jacobian);
267  void applyTCPWeights(VirtualRobot::RobotNodePtr tcp, Eigen::MatrixXf& partJacobian);
268  void applyTCPWeights(Eigen::MatrixXf& invJacobian);
269  float getWeightedError();
271  Eigen::VectorXf computeStepIndependently(float stepSize);
272  bool solveIK(float stepSize = 1, float minChange = 0.01f, int maxSteps = 50, bool useAlternativeOnFail = false);
273  protected:
274  bool adjustDOFWeightsToJointLimits(const Eigen::VectorXf& plannedJointDeltas);
275 
276  Eigen::VectorXf dofWeights;
277  std::map<VirtualRobot:: SceneObjectPtr, Eigen::VectorXf> tcpWeights;
278  Eigen::VectorXf tcpWeightVec;
279  };
280  using EDifferentialIKPtr = std::shared_ptr<EDifferentialIK>;
281 
282 }
283 
RemoteRobot.h
armarx::TCPControlUnitPropertyDefinitions
Definition: TCPControlUnit.h:42
armarx::TCPControlUnit::getDefaultName
std::string getDefaultName() const override
Retrieve default name of component.
Definition: TCPControlUnit.h:158
armarx::TCPControlUnit::createPropertyDefinitions
PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: TCPControlUnit.cpp:619
armarx::TCPControlUnit::onInitComponent
void onInitComponent() override
Pure virtual hook for the subclass.
Definition: TCPControlUnit.cpp:55
armarx::EDifferentialIK::computeStep
Eigen::VectorXf computeStep(float stepSize) override
Definition: TCPControlUnit.cpp:845
armarx::TCPControlUnit::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: TCPControlUnit.cpp:69
armarx::EDifferentialIK::clearGoals
void clearGoals()
Definition: TCPControlUnit.cpp:666
armarx::EDifferentialIK::computeSteps
bool computeSteps(float stepSize=1.f, float mininumChange=0.01f, int maxNStep=50) override
Definition: TCPControlUnit.cpp:705
armarx::EDifferentialIK::setDOFWeights
void setDOFWeights(Eigen::VectorXf dofWeights)
Definition: TCPControlUnit.cpp:700
armarx::TCPControlUnit::getExecutionState
UnitExecutionState getExecutionState(const Ice::Current &c=Ice::emptyCurrent) override
Definition: TCPControlUnit.cpp:234
armarx::TCPControlUnit::init
void init(const Ice::Current &c=Ice::emptyCurrent) override
Does not do anything at the moment.
Definition: TCPControlUnit.cpp:222
armarx::TCPControlUnit::start
void start(const Ice::Current &c=Ice::emptyCurrent) override
Does not do anything at the moment.
Definition: TCPControlUnit.cpp:226
armarx::TCPControlUnit::CalcNullspaceJointDeltas
static Eigen::VectorXf CalcNullspaceJointDeltas(const Eigen::VectorXf &desiredJointDeltas, const Eigen::MatrixXf &jacobian, const Eigen::MatrixXf &jacobianInverse)
Definition: TCPControlUnit.cpp:586
armarx::EDifferentialIK::applyTCPWeights
void applyTCPWeights(VirtualRobot::RobotNodePtr tcp, Eigen::MatrixXf &partJacobian)
armarx::PropertyDefinitionContainer::prefix
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
Definition: PropertyDefinitionContainer.h:333
armarx::TCPControlUnit::isRequested
bool isRequested(const Ice::Current &c=Ice::emptyCurrent) override
Definition: TCPControlUnit.cpp:294
armarx::DebugObserverInterfacePrx
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
Definition: JointController.h:44
PeriodicTask.h
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:43
armarx::navigation::platform_controller::platform_global_trajectory::NameValueMap
std::map< std::string, float > NameValueMap
Definition: PlatformGlobalTrajectoryController.h:93
armarx::TCPControlUnit::request
void request(const Ice::Current &c=Ice::emptyCurrent) override
Triggers the calculation loop for using cartesian velocity.
Definition: TCPControlUnit.cpp:254
armarx::TCPControlUnit::reportJointCurrents
void reportJointCurrents(const NameValueMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1405
armarx::PeriodicTask::pointer_type
IceUtil::Handle< PeriodicTask< T > > pointer_type
Shared pointer type for convenience.
Definition: PeriodicTask.h:67
armarx::TCPControlUnit::reportJointVelocities
void reportJointVelocities(const NameValueMap &jointVel, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1323
armarx::TCPControlUnit::setCycleTime
void setCycleTime(Ice::Int milliseconds, const Ice::Current &c=Ice::emptyCurrent) override
Sets the cycle time with which the joint velocities are recalculated.
Definition: TCPControlUnit.cpp:169
armarx::TCPControlUnit::reportJointStatuses
void reportJointStatuses(const NameStatusMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1413
IceInternal::Handle< FramedDirection >
armarx::EDifferentialIK::setRefFrame
void setRefFrame(VirtualRobot::RobotNodePtr coordSystem)
Definition: TCPControlUnit.cpp:676
armarx::RobotStateComponentInterfacePrx
::IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface > RobotStateComponentInterfacePrx
Definition: RobotVisuWidget.h:57
armarx::TCPControlUnit::stop
void stop(const Ice::Current &c=Ice::emptyCurrent) override
Does not do anything at the moment.
Definition: TCPControlUnit.cpp:230
armarx::FramedPoseBaseMap
::std::map< ::std::string, ::armarx::FramedPoseBasePtr > FramedPoseBaseMap
Definition: RobotStateObserver.h:55
armarx::TCPControlUnitPropertyDefinitions::TCPControlUnitPropertyDefinitions
TCPControlUnitPropertyDefinitions(std::string prefix)
Definition: TCPControlUnit.h:46
FramedPose.h
armarx::EDifferentialIK::applyDOFWeightsToJacobian
void applyDOFWeightsToJacobian(Eigen::MatrixXf &Jacobian)
Definition: TCPControlUnit.cpp:1083
armarx::EDifferentialIK::getJacobianRows
int getJacobianRows()
Definition: TCPControlUnit.h:249
armarx::EDifferentialIK::setGoal
void setGoal(const Eigen::Matrix4f &goal, VirtualRobot::RobotNodePtr tcp, VirtualRobot::IKSolver::CartesianSelection mode, float tolerancePosition, float toleranceRotation, Eigen::VectorXf tcpWeight)
Definition: TCPControlUnit.cpp:681
armarx::EDifferentialIK::adjustDOFWeightsToJointLimits
bool adjustDOFWeightsToJointLimits(const Eigen::VectorXf &plannedJointDeltas)
Definition: TCPControlUnit.cpp:1259
armarx::EDifferentialIK
Definition: TCPControlUnit.h:238
armarx::NJointTaskSpaceDMPControllerMode::CartesianSelection
CartesianSelection
Definition: ControllerInterface.ice:34
armarx::EDifferentialIK::dofWeights
Eigen::VectorXf dofWeights
Definition: TCPControlUnit.h:276
armarx::EDifferentialIK::tcpWeights
std::map< VirtualRobot::SceneObjectPtr, Eigen::VectorXf > tcpWeights
Definition: TCPControlUnit.h:277
armarx::VariantType::Long
const VariantTypeId Long
Definition: Variant.h:917
armarx::TCPControlUnit::CalcJointLimitAvoidanceDeltas
static Eigen::VectorXf CalcJointLimitAvoidanceDeltas(VirtualRobot::RobotNodeSetPtr robotNodeSet, const Eigen::MatrixXf &jacobian, const Eigen::MatrixXf &jacobianInverse, Eigen::VectorXf desiredJointValues=Eigen::VectorXf())
Definition: TCPControlUnit.cpp:551
armarx::EDifferentialIK::solveIK
bool solveIK(float stepSize=1, float minChange=0.01f, int maxSteps=50, bool useAlternativeOnFail=false)
Definition: TCPControlUnit.cpp:1061
armarx::TCPControlUnit::reportJointTorques
void reportJointTorques(const NameValueMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1396
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
armarx::EDifferentialIK::computeStepIndependently
Eigen::VectorXf computeStepIndependently(float stepSize)
Definition: TCPControlUnit.cpp:917
armarx::TCPControlUnit::calcAndSetVelocities
void calcAndSetVelocities()
Definition: TCPControlUnit.cpp:340
armarx::EDifferentialIK::ComputeFunction
Eigen::VectorXf(EDifferentialIK::* ComputeFunction)(float)
Definition: TCPControlUnit.h:241
armarx::TCPControlUnit::onExitComponent
void onExitComponent() override
Hook for subclass.
Definition: TCPControlUnit.cpp:163
Component.h
armarx::EDifferentialIK::getWeightedErrorPosition
float getWeightedErrorPosition(VirtualRobot::SceneObjectPtr tcp)
Definition: TCPControlUnit.cpp:1209
armarx::Component
Baseclass for all ArmarX ManagedIceObjects requiring properties.
Definition: Component.h:95
armarx::EDifferentialIKPtr
std::shared_ptr< EDifferentialIK > EDifferentialIKPtr
Definition: TCPControlUnit.h:280
armarx::channels::KinematicUnitObserver::jointAngles
const KinematicUnitDatafieldCreator jointAngles("jointAngles")
armarx::TCPControlUnit::reportJointAngles
void reportJointAngles(const NameValueMap &jointAngles, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1296
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:601
armarx::Logging
Base Class for all Logging classes.
Definition: Logging.h:232
armarx::ComponentPropertyDefinitions
Default component property definition container.
Definition: Component.h:70
float
#define float
Definition: 16_Level.h:22
IceUtil::Handle
Definition: forward_declarations.h:29
armarx::TCPControlUnit::release
void release(const Ice::Current &c=Ice::emptyCurrent) override
Releases and stops the recalculation and updating of joint velocities.
Definition: TCPControlUnit.cpp:276
armarx::EDifferentialIK::getRefFrame
VirtualRobot::RobotNodePtr getRefFrame()
Definition: TCPControlUnit.h:245
armarx::EDifferentialIK::getWeightedError
float getWeightedError()
Definition: TCPControlUnit.cpp:1195
armarx::TCPControlUnit::reportJointMotorTemperatures
void reportJointMotorTemperatures(const NameValueMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1409
scene3D::SceneObjectPtr
boost::intrusive_ptr< SceneObject > SceneObjectPtr
Definition: PointerDefinitions.h:40
armarx::VariantType::Int
const VariantTypeId Int
Definition: Variant.h:916
armarx::TCPControlUnit::onDisconnectComponent
void onDisconnectComponent() override
Hook for subclass.
Definition: TCPControlUnit.cpp:145
armarx::EDifferentialIK::tcpWeightVec
Eigen::VectorXf tcpWeightVec
Definition: TCPControlUnit.h:278
armarx::EDifferentialIK::calcFullJacobian
Eigen::MatrixXf calcFullJacobian()
Definition: TCPControlUnit.cpp:631
armarx::EDifferentialIK::EDifferentialIK
EDifferentialIK(VirtualRobot::RobotNodeSetPtr rns, VirtualRobot::RobotNodePtr coordSystem=VirtualRobot::RobotNodePtr(), VirtualRobot::JacobiProvider::InverseJacobiMethod invJacMethod=eSVD)
Definition: TCPControlUnit.cpp:626
armarx::TCPControlUnit
The TCPControlUnit class.
Definition: TCPControlUnit.h:84
armarx::TCPControlUnit::reportJointAccelerations
void reportJointAccelerations(const NameValueMap &jointAccelerations, Ice::Long timestamp, bool aValueChanged, const Ice::Current &c) override
Definition: TCPControlUnit.cpp:1400
armarx::TCPControlUnit::reportControlModeChanged
void reportControlModeChanged(const NameControlModeMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1292
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::TCPControlUnit::setTCPVelocity
void setTCPVelocity(const std::string &nodeSetName, const std::string &tcpName, const ::armarx::FramedDirectionBasePtr &translationVelocity, const ::armarx::FramedDirectionBasePtr &orientationVelocityRPY, const Ice::Current &c=Ice::emptyCurrent) override
Sets the cartesian velocity of a node in a nodeset for translation and/or orientation.
Definition: TCPControlUnit.cpp:180
armarx::TCPControlUnit::TCPControlUnit
TCPControlUnit()
Definition: TCPControlUnit.cpp:46
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:18