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 <memory>
26 
27 #include <VirtualRobot/IK/DifferentialIK.h>
28 #include <VirtualRobot/VirtualRobot.h>
29 
32 #include <ArmarXCore/interface/observers/ObserverInterface.h>
33 
34 #include <RobotAPI/interface/units/TCPControlUnit.h>
37 
38 namespace armarx
39 {
40  /**
41  * \class TCPControlUnitPropertyDefinitions
42  * \brief
43  */
45  {
46  public:
48  {
49  defineRequiredProperty<std::string>("KinematicUnitName",
50  "Name of the KinematicUnit Proxy");
51  defineOptionalProperty<std::string>(
52  "RobotStateTopicName", "RobotState", "Name of the RobotComponent State topic.");
53  defineOptionalProperty<float>(
54  "MaxJointVelocity", 30.f / 180 * 3.141, "Maximal joint velocity in rad/sec");
55  defineOptionalProperty<int>("CycleTime", 30, "Cycle time of the tcp control in ms");
56  // defineOptionalProperty<float>("MaximumCommandDelay", 20000, "Delay after which the TCP Control unit releases itself if no new velocity have been set.");
57  defineOptionalProperty<std::string>(
58  "TCPsToReport",
59  "",
60  "comma seperated list of nodesets' endeffectors, which poses and velocities that "
61  "should be reported. * for all, empty for none");
62  defineOptionalProperty<std::string>(
63  "RobotStateComponentName",
64  "RobotStateComponent",
65  "Name of the RobotStateComponent that should be used");
66 
67  defineOptionalProperty<float>(
68  "LambdaDampedSVD",
69  0.1f,
70  "Parameter used for smoothing the differential IK near singularities.");
71  }
72  };
73 
74  /**
75  * \defgroup Component-TCPControlUnit TCPControlUnit
76  * \ingroup RobotAPI-SensorActorUnits
77  * \brief Unit for controlling a tool center point (TCP).
78  *
79  * This class implements the interface to control a node of a robot (e.g a TCP)
80  * in cartesian coordinates in velocity control mode. It takes velocities in mm/s for
81  * translations and rad/s for orientation. Several nodessets can be controlled simultaneously.
82  *
83  * Before the TCPControlUnit can be used, request() needs to be called. Since a cartesian velocity needs
84  * is only correct for the current joint configuration, it needs to recalculated as fast as possible.
85  * Thus, after request is called the TCPControlUnit recalculates the velocity in a given cycle time and
86  * updates the joint velocities. To set another cycle time use setCycleTime().
87  * To set the velocity for a node use setTCPVelocity. Calling setTCPVelocity again with another nodeset
88  * will add this nodeset to the list of currently controlled TCPs.
89  *
90  * \note After usage release() **must** be called to stop the recalcuation and setting of joint velocities.
91  */
92 
93  /**
94  * @ingroup Component-TCPControlUnit
95  * @brief The TCPControlUnit class
96  */
97  class TCPControlUnit : virtual public Component, virtual public TCPControlUnitInterface
98  {
99  public:
100  TCPControlUnit();
101 
102  // TCPControlUnitInterface interface
103 
104  /**
105  * \brief Sets the cycle time with which the joint velocities are recalculated.
106  * \param milliseconds New cycle time.
107  * \param c Ice Context, leave blank.
108  */
109  void setCycleTime(Ice::Int milliseconds,
110  const Ice::Current& c = Ice::emptyCurrent) override;
111 
112  /**
113  * \brief Sets the cartesian velocity of a node in a nodeset for translation and/or orientation.
114  * It is best to provide the data in global coordinates. Otherwise the coordinates frame transformation is done in place
115  * on the current robot state, which might not be the same as when the command was given. Additionally, execution inaccurracies
116  * might propagate if local coordinate frames are used.
117  * \param nodeSetName Nodeset that should be used for moving the node, i.e. tcp
118  * \param tcpName Name of the VirtualRobot node that should be moved
119  * \param translationVelocity Target cartesian translation velocity in mm/s, but might not be reached. If NULL the translation is ommitted in the calculation.
120  * Thus the translation behaviour is undefined und the node/tcp position might change.
121  * \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.
122  * Thus the orientation behaviour is undefined und the node/tcp orientation might change.
123  * \param c Ice Context, leave blank.
124  *
125  * \see request(), release()
126  */
127  void setTCPVelocity(const std::string& nodeSetName,
128  const std::string& tcpName,
129  const ::armarx::FramedDirectionBasePtr& translationVelocity,
130  const ::armarx::FramedDirectionBasePtr& orientationVelocityRPY,
131  const Ice::Current& c = Ice::emptyCurrent) override;
132 
133  // UnitExecutionManagementInterface interface
134  /**
135  * \brief Does not do anything at the moment.
136  * \param c
137  */
138  void init(const Ice::Current& c = Ice::emptyCurrent) override;
139  /**
140  * \brief Does not do anything at the moment.
141  * \param c
142  */
143  void start(const Ice::Current& c = Ice::emptyCurrent) override;
144  /**
145  * \brief Does not do anything at the moment.
146  * \param c
147  */
148  void stop(const Ice::Current& c = Ice::emptyCurrent) override;
149  UnitExecutionState getExecutionState(const Ice::Current& c = Ice::emptyCurrent) override;
150 
151  // UnitResourceManagementInterface interface
152  /**
153  * \brief Triggers the calculation loop for using cartesian velocity. Call once before/after setting a tcp velocity with SetTCPVelocity.
154  * \param c Ice Context, leave blank.
155  */
156  void request(const Ice::Current& c = Ice::emptyCurrent) override;
157 
158  /**
159  * \brief Releases and stops the recalculation and updating of joint velocities.
160  * Call always when finished with cartesian control. The target velocity values of
161  * all node set will be deleted in this function.
162  * \param c Ice Context, leave blank.
163  */
164  void release(const Ice::Current& c = Ice::emptyCurrent) override;
165 
166  bool isRequested(const Ice::Current& c = Ice::emptyCurrent) override;
167 
168  protected:
169  void onInitComponent() override;
170  void onConnectComponent() override;
171  void onDisconnectComponent() override;
172  void onExitComponent() override;
173 
174  std::string
175  getDefaultName() const override
176  {
177  return "TCPControlUnit";
178  }
179 
180  // PropertyUser interface
182 
183  static Eigen::VectorXf CalcNullspaceJointDeltas(const Eigen::VectorXf& desiredJointDeltas,
184  const Eigen::MatrixXf& jacobian,
185  const Eigen::MatrixXf& jacobianInverse);
186  static Eigen::VectorXf
187  CalcJointLimitAvoidanceDeltas(VirtualRobot::RobotNodeSetPtr robotNodeSet,
188  const Eigen::MatrixXf& jacobian,
189  const Eigen::MatrixXf& jacobianInverse,
190  Eigen::VectorXf desiredJointValues = Eigen::VectorXf());
191  void calcAndSetVelocities();
192 
193  private:
194  static void ContinuousAngles(const Eigen::AngleAxisf& oldAngle,
195  Eigen::AngleAxisf& newAngle,
196  double& offset);
197  void periodicExec();
198  void periodicReport();
199  Eigen::VectorXf calcJointVelocities(VirtualRobot::RobotNodeSetPtr robotNodeSet,
200  Eigen::VectorXf tcpDelta,
201  VirtualRobot::RobotNodePtr refFrame,
203  Eigen::VectorXf applyMaxJointVelocity(const Eigen::VectorXf& jointVelocity,
204  float maxJointVelocity);
205 
206  float maxJointVelocity;
207  int cycleTime;
208  Eigen::Matrix4f lastTCPPose;
209 
210  struct TCPVelocityData
211  {
212  FramedDirectionPtr translationVelocity;
213  FramedDirectionPtr orientationVelocity;
214  std::string nodeSetName;
215  std::string tcpName;
216  };
217 
218  using TCPVelocityDataMap = std::map<std::string, TCPVelocityData>;
219  TCPVelocityDataMap tcpVelocitiesMap, localTcpVelocitiesMap;
220 
221  using DIKMap = std::map<std::string, VirtualRobot::DifferentialIKPtr>;
222  DIKMap dIKMap, localDIKMap;
223 
224 
227  std::string robotName;
228  RobotStateComponentInterfacePrx robotStateComponentPrx;
229  KinematicUnitInterfacePrx kinematicUnitPrx;
230  VirtualRobot::RobotPtr jointExistenceCheckRobot;
231  VirtualRobot::RobotPtr localRobot;
232  VirtualRobot::RobotPtr localReportRobot;
233  VirtualRobot::RobotPtr localVelReportRobot;
234  TCPControlUnitListenerPrx listener;
235 
236  DebugObserverInterfacePrx debugObs;
237 
238  bool requested;
239  std::map<std::string, double> oriOffsets;
240 
241  std::vector<VirtualRobot::RobotNodePtr> nodesToReport;
242  FramedPoseBaseMap lastTCPPoses;
243  IceUtil::Time lastTopicReportTime;
244 
245  std::mutex dataMutex;
246  std::mutex taskMutex;
247  std::mutex reportMutex;
248  bool calculationRunning;
249  double syncTimeDelta;
250 
251  std::string topicName;
252 
253 
254  // KinematicUnitListener interface
255  protected:
256  void reportControlModeChanged(const NameControlModeMap&,
257  Ice::Long timestamp,
258  bool,
259  const Ice::Current&) override;
261  Ice::Long timestamp,
262  bool,
263  const Ice::Current&) override;
264  void reportJointVelocities(const NameValueMap& jointVel,
265  Ice::Long timestamp,
266  bool,
267  const Ice::Current&) override;
268  void reportJointTorques(const NameValueMap&,
269  Ice::Long timestamp,
270  bool,
271  const Ice::Current&) override;
272  void reportJointAccelerations(const NameValueMap& jointAccelerations,
273  Ice::Long timestamp,
274  bool aValueChanged,
275  const Ice::Current& c) override;
276  void reportJointCurrents(const NameValueMap&,
277  Ice::Long timestamp,
278  bool,
279  const Ice::Current&) override;
281  Ice::Long timestamp,
282  bool,
283  const Ice::Current&) override;
284  void reportJointStatuses(const NameStatusMap&,
285  Ice::Long timestamp,
286  bool,
287  const Ice::Current&) override;
288  };
289 
290  class EDifferentialIK : public VirtualRobot::DifferentialIK, virtual public Logging
291  {
292  public:
293  typedef Eigen::VectorXf (EDifferentialIK::*ComputeFunction)(float);
294 
295  EDifferentialIK(VirtualRobot::RobotNodeSetPtr rns,
296  VirtualRobot::RobotNodePtr coordSystem = VirtualRobot::RobotNodePtr(),
297  VirtualRobot::JacobiProvider::InverseJacobiMethod invJacMethod = eSVD);
298 
299  VirtualRobot::RobotNodePtr
301  {
302  return coordSystem;
303  }
304 
305  int
307  {
308  return nRows;
309  }
310 
311  Eigen::MatrixXf calcFullJacobian();
312 
313  void clearGoals();
314  void setRefFrame(VirtualRobot::RobotNodePtr coordSystem);
315 
316  void setGoal(const Eigen::Matrix4f& goal,
317  VirtualRobot::RobotNodePtr tcp,
319  float tolerancePosition,
320  float toleranceRotation,
321  Eigen::VectorXf tcpWeight);
322 
323  void setDOFWeights(Eigen::VectorXf dofWeights);
324  // void setTCPWeights(Eigen::VectorXf tcpWeights);
325  bool
326  computeSteps(float stepSize = 1.f, float mininumChange = 0.01f, int maxNStep = 50) override;
327  bool computeSteps(Eigen::VectorXf& resultJointDelta,
328  float stepSize = 1.f,
329  float mininumChange = 0.01f,
330  int maxNStep = 50,
331  ComputeFunction computeFunction = &DifferentialIK::computeStep);
332  Eigen::VectorXf computeStep(float stepSize) override;
333  void applyDOFWeightsToJacobian(Eigen::MatrixXf& Jacobian);
334  void applyTCPWeights(VirtualRobot::RobotNodePtr tcp, Eigen::MatrixXf& partJacobian);
335  void applyTCPWeights(Eigen::MatrixXf& invJacobian);
336  float getWeightedError();
338  Eigen::VectorXf computeStepIndependently(float stepSize);
339  bool solveIK(float stepSize = 1,
340  float minChange = 0.01f,
341  int maxSteps = 50,
342  bool useAlternativeOnFail = false);
343 
344  protected:
345  bool adjustDOFWeightsToJointLimits(const Eigen::VectorXf& plannedJointDeltas);
346 
347  Eigen::VectorXf dofWeights;
348  std::map<VirtualRobot::SceneObjectPtr, Eigen::VectorXf> tcpWeights;
349  Eigen::VectorXf tcpWeightVec;
350  };
351 
352  using EDifferentialIKPtr = std::shared_ptr<EDifferentialIK>;
353 
354 } // namespace armarx
RemoteRobot.h
armarx::TCPControlUnitPropertyDefinitions
Definition: TCPControlUnit.h:44
armarx::TCPControlUnit::getDefaultName
std::string getDefaultName() const override
Retrieve default name of component.
Definition: TCPControlUnit.h:175
armarx::TCPControlUnit::createPropertyDefinitions
PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: TCPControlUnit.cpp:677
armarx::TCPControlUnit::onInitComponent
void onInitComponent() override
Pure virtual hook for the subclass.
Definition: TCPControlUnit.cpp:57
armarx::EDifferentialIK::computeStep
Eigen::VectorXf computeStep(float stepSize) override
Definition: TCPControlUnit.cpp:926
armarx::TCPControlUnit::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: TCPControlUnit.cpp:71
armarx::EDifferentialIK::clearGoals
void clearGoals()
Definition: TCPControlUnit.cpp:725
armarx::EDifferentialIK::computeSteps
bool computeSteps(float stepSize=1.f, float mininumChange=0.01f, int maxNStep=50) override
Definition: TCPControlUnit.cpp:776
armarx::EDifferentialIK::setDOFWeights
void setDOFWeights(Eigen::VectorXf dofWeights)
Definition: TCPControlUnit.cpp:770
armarx::TCPControlUnit::getExecutionState
UnitExecutionState getExecutionState(const Ice::Current &c=Ice::emptyCurrent) override
Definition: TCPControlUnit.cpp:258
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::TCPControlUnit::init
void init(const Ice::Current &c=Ice::emptyCurrent) override
Does not do anything at the moment.
Definition: TCPControlUnit.cpp:243
armarx::TCPControlUnit::start
void start(const Ice::Current &c=Ice::emptyCurrent) override
Does not do anything at the moment.
Definition: TCPControlUnit.cpp:248
armarx::TCPControlUnit::CalcNullspaceJointDeltas
static Eigen::VectorXf CalcNullspaceJointDeltas(const Eigen::VectorXf &desiredJointDeltas, const Eigen::MatrixXf &jacobian, const Eigen::MatrixXf &jacobianInverse)
Definition: TCPControlUnit.cpp:638
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:345
armarx::TCPControlUnit::isRequested
bool isRequested(const Ice::Current &c=Ice::emptyCurrent) override
Definition: TCPControlUnit.cpp:321
armarx::DebugObserverInterfacePrx
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
Definition: JointController.h:44
PeriodicTask.h
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
armarx::FramedPoseBaseMap
::std::map<::std::string, ::armarx::FramedPoseBasePtr > FramedPoseBaseMap
Definition: RobotStateObserver.h:59
armarx::TCPControlUnit::request
void request(const Ice::Current &c=Ice::emptyCurrent) override
Triggers the calculation loop for using cartesian velocity.
Definition: TCPControlUnit.cpp:279
armarx::TCPControlUnit::reportJointCurrents
void reportJointCurrents(const NameValueMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1516
armarx::PeriodicTask::pointer_type
IceUtil::Handle< PeriodicTask< T > > pointer_type
Shared pointer type for convenience.
Definition: PeriodicTask.h:68
armarx::TCPControlUnit::reportJointVelocities
void reportJointVelocities(const NameValueMap &jointVel, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1423
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:178
armarx::TCPControlUnit::reportJointStatuses
void reportJointStatuses(const NameStatusMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1532
IceInternal::Handle< FramedDirection >
armarx::EDifferentialIK::setRefFrame
void setRefFrame(VirtualRobot::RobotNodePtr coordSystem)
Definition: TCPControlUnit.cpp:736
armarx::RobotStateComponentInterfacePrx
::IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface > RobotStateComponentInterfacePrx
Definition: RobotVisuWidget.h:64
armarx::TCPControlUnit::stop
void stop(const Ice::Current &c=Ice::emptyCurrent) override
Does not do anything at the moment.
Definition: TCPControlUnit.cpp:253
armarx::TCPControlUnitPropertyDefinitions::TCPControlUnitPropertyDefinitions
TCPControlUnitPropertyDefinitions(std::string prefix)
Definition: TCPControlUnit.h:47
FramedPose.h
armarx::EDifferentialIK::applyDOFWeightsToJacobian
void applyDOFWeightsToJacobian(Eigen::MatrixXf &Jacobian)
Definition: TCPControlUnit.cpp:1170
armarx::EDifferentialIK::getJacobianRows
int getJacobianRows()
Definition: TCPControlUnit.h:306
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:742
armarx::EDifferentialIK::adjustDOFWeightsToJointLimits
bool adjustDOFWeightsToJointLimits(const Eigen::VectorXf &plannedJointDeltas)
Definition: TCPControlUnit.cpp:1354
armarx::EDifferentialIK
Definition: TCPControlUnit.h:290
armarx::NJointTaskSpaceDMPControllerMode::CartesianSelection
CartesianSelection
Definition: ControllerInterface.ice:34
armarx::EDifferentialIK::dofWeights
Eigen::VectorXf dofWeights
Definition: TCPControlUnit.h:347
armarx::VariantType::Long
const VariantTypeId Long
Definition: Variant.h:918
armarx::EDifferentialIK::tcpWeights
std::map< VirtualRobot::SceneObjectPtr, Eigen::VectorXf > tcpWeights
Definition: TCPControlUnit.h:348
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:597
armarx::EDifferentialIK::solveIK
bool solveIK(float stepSize=1, float minChange=0.01f, int maxSteps=50, bool useAlternativeOnFail=false)
Definition: TCPControlUnit.cpp:1140
armarx::TCPControlUnit::reportJointTorques
void reportJointTorques(const NameValueMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1500
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
armarx::EDifferentialIK::computeStepIndependently
Eigen::VectorXf computeStepIndependently(float stepSize)
Definition: TCPControlUnit.cpp:995
armarx::TCPControlUnit::calcAndSetVelocities
void calcAndSetVelocities()
Definition: TCPControlUnit.cpp:366
armarx::EDifferentialIK::ComputeFunction
Eigen::VectorXf(EDifferentialIK::* ComputeFunction)(float)
Definition: TCPControlUnit.h:293
armarx::TCPControlUnit::onExitComponent
void onExitComponent() override
Hook for subclass.
Definition: TCPControlUnit.cpp:173
Component.h
armarx::EDifferentialIK::getWeightedErrorPosition
float getWeightedErrorPosition(VirtualRobot::SceneObjectPtr tcp)
Definition: TCPControlUnit.cpp:1303
armarx::Component
Baseclass for all ArmarX ManagedIceObjects requiring properties.
Definition: Component.h:91
armarx::control::njoint_controller::platform::platform_follower_controller::NameValueMap
std::map< std::string, float > NameValueMap
Definition: PlatformFollowerController.h:88
armarx::EDifferentialIKPtr
std::shared_ptr< EDifferentialIK > EDifferentialIKPtr
Definition: TCPControlUnit.h:352
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:1392
armarx::Logging
Base Class for all Logging classes.
Definition: Logging.h:239
armarx::ComponentPropertyDefinitions
Default component property definition container.
Definition: Component.h:69
float
#define float
Definition: 16_Level.h:22
IceUtil::Handle
Definition: forward_declarations.h:30
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:303
armarx::EDifferentialIK::getRefFrame
VirtualRobot::RobotNodePtr getRefFrame()
Definition: TCPControlUnit.h:300
armarx::EDifferentialIK::getWeightedError
float getWeightedError()
Definition: TCPControlUnit.cpp:1287
armarx::TCPControlUnit::reportJointMotorTemperatures
void reportJointMotorTemperatures(const NameValueMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1524
scene3D::SceneObjectPtr
boost::intrusive_ptr< SceneObject > SceneObjectPtr
Definition: PointerDefinitions.h:40
armarx::VariantType::Int
const VariantTypeId Int
Definition: Variant.h:917
armarx::TCPControlUnit::onDisconnectComponent
void onDisconnectComponent() override
Hook for subclass.
Definition: TCPControlUnit.cpp:154
armarx::EDifferentialIK::tcpWeightVec
Eigen::VectorXf tcpWeightVec
Definition: TCPControlUnit.h:349
armarx::EDifferentialIK::calcFullJacobian
Eigen::MatrixXf calcFullJacobian()
Definition: TCPControlUnit.cpp:691
armarx::EDifferentialIK::EDifferentialIK
EDifferentialIK(VirtualRobot::RobotNodeSetPtr rns, VirtualRobot::RobotNodePtr coordSystem=VirtualRobot::RobotNodePtr(), VirtualRobot::JacobiProvider::InverseJacobiMethod invJacMethod=eSVD)
Definition: TCPControlUnit.cpp:683
armarx::TCPControlUnit
The TCPControlUnit class.
Definition: TCPControlUnit.h:97
armarx::TCPControlUnit::reportJointAccelerations
void reportJointAccelerations(const NameValueMap &jointAccelerations, Ice::Long timestamp, bool aValueChanged, const Ice::Current &c) override
Definition: TCPControlUnit.cpp:1508
armarx::TCPControlUnit::reportControlModeChanged
void reportControlModeChanged(const NameControlModeMap &, Ice::Long timestamp, bool, const Ice::Current &) override
Definition: TCPControlUnit.cpp:1384
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
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:190
armarx::TCPControlUnit::TCPControlUnit
TCPControlUnit()
Definition: TCPControlUnit.cpp:48
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:19