NJointCartesianVelocityControllerWithRamp.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2011-2017, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package ArmarX
19  * @author Sonja Marahrens( sonja.marahrens at kit dot edu)
20  * @date 2018
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
25 
26 #include <VirtualRobot/RobotNodeSet.h>
27 
29 
30 #include "../RobotUnit.h"
31 
32 #define DEFAULT_TCP_STRING "default TCP"
33 
34 namespace armarx
35 {
36 
37  NJointControllerRegistration<NJointCartesianVelocityControllerWithRamp>
39  "NJointCartesianVelocityControllerWithRamp");
40 
41  std::string
43  {
44  return "NJointCartesianVelocityControllerWithRamp";
45  }
46 
48  RobotUnit* robotUnit,
49  const NJointCartesianVelocityControllerWithRampConfigPtr& config,
50  const VirtualRobot::RobotPtr& r)
51  {
52  ARMARX_CHECK_EXPRESSION(robotUnit);
53  ARMARX_CHECK_EXPRESSION(!config->nodeSetName.empty());
55  VirtualRobot::RobotNodeSetPtr rns = rtGetRobot()->getRobotNodeSet(config->nodeSetName);
56  ARMARX_CHECK_EXPRESSION(rns) << config->nodeSetName;
57  for (size_t i = 0; i < rns->getSize(); ++i)
58  {
59  std::string jointName = rns->getNode(i)->getName();
60  ControlTargetBase* ct = useControlTarget(jointName, ControlModes::Velocity1DoF);
61  const SensorValueBase* sv = useSensorValue(jointName);
62  targets.push_back(ct->asA<ControlTarget1DoFActuatorVelocity>());
63 
64  const SensorValue1DoFActuatorFilteredVelocity* filteredVelocitySensor =
65  sv->asA<SensorValue1DoFActuatorFilteredVelocity>();
66  const SensorValue1DoFActuatorVelocity* velocitySensor =
67  sv->asA<SensorValue1DoFActuatorVelocity>();
68  ARMARX_CHECK_EXPRESSION(filteredVelocitySensor || velocitySensor);
69  if (filteredVelocitySensor)
70  {
71  ARMARX_IMPORTANT << "Using filtered velocity for joint " << jointName;
72  velocitySensors.push_back(&filteredVelocitySensor->filteredvelocity);
73  }
74  else if (velocitySensor)
75  {
76  ARMARX_IMPORTANT << "Using raw velocity for joint " << jointName;
77  velocitySensors.push_back(&velocitySensor->velocity);
78  }
79  };
80 
81  VirtualRobot::RobotNodePtr tcp =
82  (config->tcpName.empty() || config->tcpName == DEFAULT_TCP_STRING)
83  ? rns->getTCP()
84  : rtGetRobot()->getRobotNode(config->tcpName);
85  ARMARX_CHECK_EXPRESSION(tcp) << config->tcpName;
86 
87  nodeSetName = config->nodeSetName;
88  jointLimitAvoidanceScale = config->jointLimitAvoidanceScale;
89  KpJointLimitAvoidance = config->KpJointLimitAvoidance;
90  mode = ModeFromIce(config->mode);
91 
92  controller.reset(
94  Eigen::VectorXf::Zero(rns->getSize()),
95  mode,
96  config->maxPositionAcceleration,
97  config->maxOrientationAcceleration,
98  config->maxNullspaceAcceleration));
99  }
100 
101  void
103  {
104 #pragma GCC diagnostic push
105 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
106  Eigen::VectorXf currentJointVelocities(velocitySensors.size());
107  for (size_t i = 0; i < velocitySensors.size(); i++)
108  {
109  currentJointVelocities(i) = *velocitySensors.at(i);
110  }
111  controller->setCurrentJointVelocity(currentJointVelocities);
112 #pragma GCC diagnostic pop
113  ARMARX_IMPORTANT << "initial joint velocities: " << currentJointVelocities.transpose();
114  }
115 
116  void
118  const IceUtil::Time& timeSinceLastIteration)
119  {
120  Eigen::VectorXf x;
121  if (mode == VirtualRobot::IKSolver::All)
122  {
123  x.resize(6);
127  }
128  else if (mode == VirtualRobot::IKSolver::Position)
129  {
130  x.resize(3);
132  }
133  else if (mode == VirtualRobot::IKSolver::Orientation)
134  {
135  x.resize(3);
138  }
139  else
140  {
141  // No mode has been set
142  return;
143  }
144 
145  Eigen::VectorXf jnv =
146  KpJointLimitAvoidance * controller->controller.calculateJointLimitAvoidance();
147  jnv += controller->controller.calculateNullspaceVelocity(x, jointLimitAvoidanceScale, mode);
148  Eigen::VectorXf jointTargetVelocities =
149  controller->calculate(x, jnv, timeSinceLastIteration.toSecondsDouble());
150  for (size_t i = 0; i < targets.size(); ++i)
151  {
152  targets.at(i)->velocity = jointTargetVelocities(i);
153  }
154  }
155 
156  void
158  float maxOrientationAcceleration,
159  float maxNullspaceAcceleration,
160  const Ice::Current&)
161  {
162  controller->setMaxAccelerations(
163  maxPositionAcceleration, maxOrientationAcceleration, maxNullspaceAcceleration);
164  }
165 
166  void
168  float vy,
169  float vz,
170  float vrx,
171  float vry,
172  float vrz,
173  const Ice::Current&)
174  {
183  }
184 
185  void
187  float jointLimitAvoidanceScale,
188  const Ice::Current&)
189  {
190  this->jointLimitAvoidanceScale = jointLimitAvoidanceScale;
191  }
192 
193  void
195  const Ice::Current&)
196  {
197  this->KpJointLimitAvoidance = KpJointLimitAvoidance;
198  }
199 
200  void
202  {
204 #pragma GCC diagnostic push
205 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
206  controller->setCurrentJointVelocity(Eigen::VectorXf::Zero(velocitySensors.size()));
207 #pragma GCC diagnostic pop
215  }
216 
217  void
219  {
220  }
221 
222  const std::string&
224  {
225  return nodeSetName;
226  }
227 
230  {
231  return {{"ControllerTarget", createTargetLayout()},
232  {"ControllerParameters", createParameterLayout()}};
233  }
234 
235  void
237  const std::string& name,
238  const StringVariantBaseMap& valueMap,
239  const Ice::Current&)
240  {
241  if (name == "ControllerTarget")
242  {
244  getWriterControlStruct().xVel = valueMap.at("x")->getFloat();
245  getWriterControlStruct().yVel = valueMap.at("y")->getFloat();
246  getWriterControlStruct().zVel = valueMap.at("z")->getFloat();
247  getWriterControlStruct().rollVel = valueMap.at("roll")->getFloat();
248  getWriterControlStruct().pitchVel = valueMap.at("pitch")->getFloat();
249  getWriterControlStruct().yawVel = valueMap.at("yaw")->getFloat();
250  KpJointLimitAvoidance = valueMap.at("KpJointLimitAvoidance")->getFloat();
251  jointLimitAvoidanceScale = valueMap.at("jointLimitAvoidanceScale")->getFloat();
253  }
254  else if (name == "ControllerParameters")
255  {
257  setMaxAccelerations(valueMap.at("maxPositionAcceleration")->getFloat(),
258  valueMap.at("maxOrientationAcceleration")->getFloat(),
259  valueMap.at("maxNullspaceAcceleration")->getFloat());
260  }
261  else
262  {
263  ARMARX_WARNING << "Unknown function name called: " << name;
264  }
265  }
266 
267  WidgetDescription::VBoxLayoutPtr
269  {
270  LayoutBuilder layout;
271  layout.addSlider("x", -100, 100, 0);
272  layout.addSlider("y", -100, 100, 0);
273  layout.addSlider("z", -100, 100, 0);
274  layout.addSlider("roll", -0.5, 0.5, 0);
275  layout.addSlider("pitch", -0.5, 0.5, 0);
276  layout.addSlider("yaw", -0.5, 0.5, 0);
277  layout.newLine();
278  layout.addSlider("KpJointLimitAvoidance", -10, 10, KpJointLimitAvoidance);
279  layout.addSlider("jointLimitAvoidanceScale", -10, 10, jointLimitAvoidanceScale);
280  return layout.getLayout();
281  }
282 
283  WidgetDescription::VBoxLayoutPtr
285  {
286  LayoutBuilder layout;
287  layout.addSlider(
288  "maxPositionAcceleration", 0, 1000, controller->getMaxPositionAcceleration());
289  layout.addSlider(
290  "maxOrientationAcceleration", 0, 100, controller->getMaxOrientationAcceleration());
291  layout.addSlider(
292  "maxNullspaceAcceleration", 0, 100, controller->getMaxNullspaceAcceleration());
293  return layout.getLayout();
294  }
295 
298  const VirtualRobot::RobotPtr& robot,
299  const std::map<std::string, ConstControlDevicePtr>& controlDevices,
300  const std::map<std::string, ConstSensorDevicePtr>&)
301  {
302  using namespace armarx::WidgetDescription;
303  HBoxLayoutPtr layout = new HBoxLayout;
304 
305  LabelPtr label = new Label;
306  label->text = "nodeset name";
307  layout->children.emplace_back(label);
308  StringComboBoxPtr box = new StringComboBox;
309  box->defaultIndex = 0;
310 
311  box->options = robot->getRobotNodeSetNames();
312  box->name = "nodeSetName";
313  layout->children.emplace_back(box);
314 
315  LabelPtr labelTCP = new Label;
316  labelTCP->text = "tcp name";
317  layout->children.emplace_back(labelTCP);
318  StringComboBoxPtr boxTCP = new StringComboBox;
319  boxTCP->defaultIndex = 0;
320 
321  boxTCP->options = robot->getRobotNodeNames();
322  boxTCP->options.insert(boxTCP->options.begin(), DEFAULT_TCP_STRING);
323  boxTCP->name = "tcpName";
324  layout->children.emplace_back(boxTCP);
325 
326  LabelPtr labelMode = new Label;
327  labelMode->text = "mode";
328  layout->children.emplace_back(labelMode);
329  StringComboBoxPtr boxMode = new StringComboBox;
330 
331  boxMode->options = {"Position", "Orientation", "Both"};
332  boxMode->name = "mode";
333  layout->children.emplace_back(boxMode);
334  layout->children.emplace_back(new HSpacer);
335  boxMode->defaultIndex = 2;
336 
337 
338  auto addSlider = [&](const std::string& label, float max, float defaultValue)
339  {
340  layout->children.emplace_back(new Label(false, label));
341  FloatSliderPtr floatSlider = new FloatSlider;
342  floatSlider->name = label;
343  floatSlider->min = 0;
344  floatSlider->defaultValue = defaultValue;
345  floatSlider->max = max;
346  layout->children.emplace_back(floatSlider);
347  };
348  addSlider("maxPositionAcceleration", 1000, 100);
349  addSlider("maxOrientationAcceleration", 10, 1);
350  addSlider("maxNullspaceAcceleration", 10, 2);
351  addSlider("KpJointLimitAvoidance", 10, 2);
352  addSlider("jointLimitAvoidanceScale", 10, 2);
353 
354  return layout;
355  }
356 
357  NJointCartesianVelocityControllerWithRampConfigPtr
360  {
361  return new NJointCartesianVelocityControllerWithRampConfig(
362  values.at("nodeSetName")->getString(),
363  values.at("tcpName")->getString(),
364  IceModeFromString(values.at("mode")->getString()),
365  values.at("maxPositionAcceleration")->getFloat(),
366  values.at("maxOrientationAcceleration")->getFloat(),
367  values.at("maxNullspaceAcceleration")->getFloat(),
368  values.at("KpJointLimitAvoidance")->getFloat(),
369  values.at("jointLimitAvoidanceScale")->getFloat());
370  }
371 
374  {
375  //ARMARX_IMPORTANT_S << "the mode is " << mode;
376  if (mode == "Position")
377  {
379  }
380  if (mode == "Orientation")
381  {
383  }
384  if (mode == "Both")
385  {
386  return VirtualRobot::IKSolver::CartesianSelection::All;
387  }
388  ARMARX_ERROR_S << "invalid mode " << mode;
390  }
391 
394  {
395  if (mode == "Position")
396  {
398  }
399  if (mode == "Orientation")
400  {
402  }
403  if (mode == "Both")
404  {
406  }
407  ARMARX_ERROR_S << "invalid mode " << mode;
409  }
410 
414  {
416  {
418  }
420  {
422  }
424  {
425  return VirtualRobot::IKSolver::CartesianSelection::All;
426  }
427  ARMARX_ERROR_S << "invalid mode " << mode;
429  }
430 
431 
432 } // namespace armarx
armarx::ControlTargetBase::asA
const T * asA() const
Definition: ControlTargetBase.h:76
armarx::NJointControllerBase::useSynchronizedRtRobot
const VirtualRobot::RobotPtr & useSynchronizedRtRobot(bool updateCollisionModel=false)
Requests a VirtualRobot for use in rtRun *.
Definition: NJointController.cpp:293
armarx::NJointControllerWithTripleBuffer< NJointCartesianVelocityControllerWithRampControlData >::rtGetControlStruct
const NJointCartesianVelocityControllerWithRampControlData & rtGetControlStruct() const
Definition: NJointControllerWithTripleBuffer.h:32
armarx::NJointCartesianVelocityControllerWithRampControlData::xVel
float xVel
Definition: NJointCartesianVelocityControllerWithRamp.h:45
armarx::StringVariantBaseMap
std::map< std::string, VariantBasePtr > StringVariantBaseMap
Definition: ManagedIceObject.h:111
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:183
GfxTL::Orientation
ScalarT Orientation(const VectorXD< 2, ScalarT > &p1, const VectorXD< 2, ScalarT > &p2, const VectorXD< 2, ScalarT > &c)
Definition: Orientation.h:9
armarx::SensorValueBase::asA
const T * asA() const
Definition: SensorValueBase.h:82
armarx::SensorValueBase
The SensorValueBase class.
Definition: SensorValueBase.h:40
armarx::ControlTargetBase
Brief description of class JointControlTargetBase.
Definition: ControlTargetBase.h:47
armarx::WidgetDescription::StringWidgetDictionary
::std::map<::std::string, ::armarx::WidgetDescription::WidgetPtr > StringWidgetDictionary
Definition: NJointControllerBase.h:69
armarx::NJointCartesianVelocityControllerWithRamp::createTargetLayout
WidgetDescription::VBoxLayoutPtr createTargetLayout() const
Definition: NJointCartesianVelocityControllerWithRamp.cpp:268
armarx::NJointCartesianVelocityControllerWithRamp::rtPreActivateController
void rtPreActivateController() override
This function is called before the controller is activated.
Definition: NJointCartesianVelocityControllerWithRamp.cpp:102
armarx::NJointControllerBase::useControlTarget
ControlTargetBase * useControlTarget(const std::string &deviceName, const std::string &controlMode)
Declares to calculate the ControlTarget for the given ControlDevice in the given ControlMode when rtR...
Definition: NJointController.cpp:410
armarx::RemoteGui::Client::HSpacer
Definition: Widgets.h:209
armarx::NJointCartesianVelocityControllerWithRamp::getFunctionDescriptions
WidgetDescription::StringWidgetDictionary getFunctionDescriptions(const Ice::Current &) const override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:229
armarx::NJointCartesianVelocityControllerWithRamp::createParameterLayout
WidgetDescription::VBoxLayoutPtr createParameterLayout() const
Definition: NJointCartesianVelocityControllerWithRamp.cpp:284
armarx::LayoutBuilder::addSlider
void addSlider(const std::string &label, float min, float max, float value)
Definition: NJointCartesianVelocityControllerWithRamp.h:73
armarx::max
std::vector< T > max(const std::vector< T > &v1, const std::vector< T > &v2)
Definition: VectorHelpers.h:267
ProsthesisInterface.values
values
Definition: ProsthesisInterface.py:190
armarx::NJointTaskSpaceDMPControllerMode::ePosition
@ ePosition
Definition: ControllerInterface.ice:36
armarx::NJointCartesianVelocityControllerWithRampControlData::zVel
float zVel
Definition: NJointCartesianVelocityControllerWithRamp.h:47
armarx::NJointCartesianVelocityControllerWithRamp::ModeFromString
static VirtualRobot::IKSolver::CartesianSelection ModeFromString(const std::string mode)
Definition: NJointCartesianVelocityControllerWithRamp.cpp:373
armarx::NJointControllerWithTripleBuffer< NJointCartesianVelocityControllerWithRampControlData >::getWriterControlStruct
NJointCartesianVelocityControllerWithRampControlData & getWriterControlStruct()
Definition: NJointControllerWithTripleBuffer.h:54
armarx::NJointControllerWithTripleBuffer< NJointCartesianVelocityControllerWithRampControlData >::LockGuardType
std::lock_guard< std::recursive_mutex > LockGuardType
Definition: NJointControllerWithTripleBuffer.h:14
NJointCartesianVelocityControllerWithRamp.h
armarx::NJointCartesianVelocityControllerWithRamp::setTargetVelocity
void setTargetVelocity(float vx, float vy, float vz, float vrx, float vry, float vrz, const Ice::Current &) override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:167
IceInternal::Handle
Definition: forward_declarations.h:8
armarx::NJointControllerBase::rtGetRobot
const VirtualRobot::RobotPtr & rtGetRobot()
TODO make protected and use attorneys.
Definition: NJointControllerBase.h:845
armarx::NJointCartesianVelocityControllerWithRamp::setKpJointLimitAvoidance
void setKpJointLimitAvoidance(float KpJointLimitAvoidance, const Ice::Current &) override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:194
visionx::voxelgrid::Label
uint32_t Label
Type of an object label.
Definition: types.h:7
armarx::NJointCartesianVelocityControllerWithRamp::setMaxAccelerations
void setMaxAccelerations(float maxPositionAcceleration, float maxOrientationAcceleration, float maxNullspaceAcceleration, const Ice::Current &=Ice::emptyCurrent) override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:157
armarx::NJointCartesianVelocityControllerWithRampControlData::rollVel
float rollVel
Definition: NJointCartesianVelocityControllerWithRamp.h:48
armarx::WidgetDescription
Definition: DefaultWidgetDescriptions.cpp:27
armarx::LayoutBuilder
Definition: NJointCartesianVelocityControllerWithRamp.h:53
controller
Definition: AddOperation.h:39
armarx::RemoteGui::Client::FloatSlider
Definition: Widgets.h:107
armarx::NJointCartesianVelocityControllerWithRamp::rtPostDeactivateController
void rtPostDeactivateController() override
This function is called after the controller is deactivated.
Definition: NJointCartesianVelocityControllerWithRamp.cpp:218
ARMARX_ERROR_S
#define ARMARX_ERROR_S
Definition: Logging.h:209
armarx::NJointCartesianVelocityControllerWithRampControlData::yVel
float yVel
Definition: NJointCartesianVelocityControllerWithRamp.h:46
armarx::NJointTaskSpaceDMPControllerMode::CartesianSelection
CartesianSelection
Definition: ControllerInterface.ice:34
armarx::NJointControllerWithTripleBuffer< NJointCartesianVelocityControllerWithRampControlData >::writeControlStruct
void writeControlStruct()
Definition: NJointControllerWithTripleBuffer.h:44
armarx::NJointCartesianVelocityControllerWithRampControlData::pitchVel
float pitchVel
Definition: NJointCartesianVelocityControllerWithRamp.h:49
armarx::registrationControllerNJointCartesianVelocityControllerWithRamp
NJointControllerRegistration< NJointCartesianVelocityControllerWithRamp > registrationControllerNJointCartesianVelocityControllerWithRamp("NJointCartesianVelocityControllerWithRamp")
armarx::NJointCartesianVelocityControllerWithRamp::GenerateConfigFromVariants
static NJointCartesianVelocityControllerWithRampConfigPtr GenerateConfigFromVariants(const StringVariantBaseMap &values)
Definition: NJointCartesianVelocityControllerWithRamp.cpp:358
armarx::NJointControllerWithTripleBuffer< NJointCartesianVelocityControllerWithRampControlData >::controlDataMutex
MutexType controlDataMutex
Definition: NJointControllerWithTripleBuffer.h:73
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
armarx::RemoteGui::Client::HBoxLayout
Definition: Widgets.h:160
armarx::NJointCartesianVelocityControllerWithRamp::NJointCartesianVelocityControllerWithRamp
NJointCartesianVelocityControllerWithRamp(RobotUnit *robotUnit, const NJointCartesianVelocityControllerWithRampConfigPtr &config, const VirtualRobot::RobotPtr &)
Definition: NJointCartesianVelocityControllerWithRamp.cpp:47
armarx::NJointCartesianVelocityControllerWithRamp::setJointLimitAvoidanceScale
void setJointLimitAvoidanceScale(float jointLimitAvoidanceScale, const Ice::Current &) override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:186
ARMARX_CHECK_EXPRESSION
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
Definition: ExpressionException.h:73
armarx::NJointCartesianVelocityControllerWithRamp::rtRun
void rtRun(const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override
TODO make protected and use attorneys.
Definition: NJointCartesianVelocityControllerWithRamp.cpp:117
armarx::NJointTaskSpaceDMPControllerMode::eAll
@ eAll
Definition: ControllerInterface.ice:38
armarx::NJointCartesianVelocityControllerWithRamp::ModeFromIce
static VirtualRobot::IKSolver::CartesianSelection ModeFromIce(const CartesianSelectionMode::CartesianSelection mode)
Definition: NJointCartesianVelocityControllerWithRamp.cpp:412
armarx::LayoutBuilder::newLine
void newLine()
Definition: NJointCartesianVelocityControllerWithRamp.h:65
armarx::NJointTaskSpaceDMPControllerMode::eOrientation
@ eOrientation
Definition: ControllerInterface.ice:37
armarx::LayoutBuilder::getLayout
WidgetDescription::VBoxLayoutPtr getLayout() const
Definition: NJointCartesianVelocityControllerWithRamp.h:86
armarx::RobotUnit
The RobotUnit class manages a robot and its controllers.
Definition: RobotUnit.h:180
armarx::NJointCartesianVelocityControllerWithRamp::getNodeSetName
const std::string & getNodeSetName() const
Definition: NJointCartesianVelocityControllerWithRamp.cpp:223
armarx::NJointCartesianVelocityControllerWithRampControlData::yawVel
float yawVel
Definition: NJointCartesianVelocityControllerWithRamp.h:50
armarx::navigation::core::Position
Eigen::Vector3f Position
Definition: basic_types.h:36
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
armarx::CartesianVelocityControllerWithRamp
Definition: CartesianVelocityControllerWithRamp.h:42
armarx::NJointCartesianVelocityControllerWithRamp::immediateHardStop
void immediateHardStop(const Ice::Current &) override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:201
DEFAULT_TCP_STRING
#define DEFAULT_TCP_STRING
Definition: NJointCartesianVelocityControllerWithRamp.cpp:32
NJointControllerRegistry.h
armarx::NJointCartesianVelocityControllerWithRamp::GenerateConfigDescription
static WidgetDescription::WidgetPtr GenerateConfigDescription(const VirtualRobot::RobotPtr &, const std::map< std::string, ConstControlDevicePtr > &, const std::map< std::string, ConstSensorDevicePtr > &)
Definition: NJointCartesianVelocityControllerWithRamp.cpp:297
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::NJointCartesianVelocityControllerWithRamp::callDescribedFunction
void callDescribedFunction(const std::string &name, const StringVariantBaseMap &valueMap, const Ice::Current &) override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:236
armarx::NJointControllerBase::useSensorValue
const SensorValueBase * useSensorValue(const std::string &sensorDeviceName) const
Get a const ptr to the given SensorDevice's SensorValue.
Definition: NJointController.cpp:383
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:18
armarx::NJointCartesianVelocityControllerWithRamp::IceModeFromString
static CartesianSelectionMode::CartesianSelection IceModeFromString(const std::string mode)
Definition: NJointCartesianVelocityControllerWithRamp.cpp:393
armarx::NJointCartesianVelocityControllerWithRamp::getClassName
std::string getClassName(const Ice::Current &) const override
Definition: NJointCartesianVelocityControllerWithRamp.cpp:42