ViewSelection.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2015-2016, 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 RobotAPI::ViewSelection
19  * @author David Schiebener (schiebener at kit dot edu)
20  * @author Markus Grotz ( markus dot grotz at kit dot edu )
21  * @date 2015
22  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
23  * GNU General Public License
24  */
25 
26 #include "ViewSelection.h"
27 
30 
33 
34 #include <thread>
35 
36 namespace armarx
37 {
39  {
40  usingProxy(getProperty<std::string>("RobotStateComponentName").getValue());
41  usingProxy(getProperty<std::string>("HeadIKUnitName").getValue());
42 
43  offeringTopic("DebugDrawerUpdates");
44  offeringTopic(getName() + "Observer");
45 
46  headIKKinematicChainName = getProperty<std::string>("HeadIKKinematicChainName").getValue();
47  headFrameName = getProperty<std::string>("HeadFrameName").getValue();
48  cameraFrameName = getProperty<std::string>("CameraFrameName").getValue();
49  drawViewDirection = getProperty<bool>("VisualizeViewDirection").getValue();
50  visuSaliencyThreshold = getProperty<float>("VisuSaliencyThreshold").getValue();
51 
52  std::string graphFileName = "RobotAPI/ViewSelection/graph40k.gra";
53 
54  armarx::CMakePackageFinder finder("RobotAPI");
56 
57  if (ArmarXDataPath::getAbsolutePath(graphFileName, graphFileName))
58  {
59  visibilityMaskGraph = new CIntensityGraph(graphFileName);
60  TNodeList* nodes = visibilityMaskGraph->getNodes();
61  const float maxOverallHeadTiltAngle = getProperty<float>("MaxOverallHeadTiltAngle").getValue();
62  const float borderAreaAngle = 10.0f;
63  const float centralAngle = getProperty<float>("CentralHeadTiltAngle").getValue();
64 
65  for (size_t i = 0; i < nodes->size(); i++)
66  {
67  CIntensityNode* node = (CIntensityNode*) nodes->at(i);
68 
69  if (fabs(node->getPosition().fPhi - centralAngle) < maxOverallHeadTiltAngle - borderAreaAngle)
70  {
71  node->setIntensity(1.0f);
72  }
73  else if (fabs(node->getPosition().fPhi - centralAngle) < maxOverallHeadTiltAngle)
74  {
75  node->setIntensity(1.0f - (fabs(node->getPosition().fPhi - centralAngle) - (maxOverallHeadTiltAngle - borderAreaAngle)) / borderAreaAngle);
76  }
77  else
78  {
79  node->setIntensity(0.0f);
80  }
81  }
82  }
83  else
84  {
85  ARMARX_ERROR << "Could not find required1 graph file";
87  return;
88  }
89 
90  sleepingTimeBetweenViewDirectionChanges = getProperty<int>("SleepingTimeBetweenViewDirectionChanges").getValue();
91  doAutomaticViewSelection = getProperty<bool>("ActiveAtStartup").getValue();
92 
93  timeOfLastViewChange = armarx::TimeUtil::GetTime();
94 
95  // this is robot model specific: offset from the used head coordinate system to the actual
96  // head center where the eyes are assumed to be located. Here it is correct for ARMAR-III
97  offsetToHeadCenter << 0, 0, 150;
98 
99  processorTask = new PeriodicTask<ViewSelection>(this, &ViewSelection::process, 30);
100  processorTask->setDelayWarningTolerance(sleepingTimeBetweenViewDirectionChanges + 100);
101  }
102 
103 
105  {
106  robotStateComponent = getProxy<RobotStateComponentInterfacePrx>(getProperty<std::string>("RobotStateComponentName").getValue());
107 
108  headIKUnitProxy = getProxy<HeadIKUnitInterfacePrx>(getProperty<std::string>("HeadIKUnitName").getValue());
109  headIKUnitProxy->request();
110 
111  viewSelectionObserver = getTopic<ViewSelectionObserverPrx>(getName() + "Observer");
112  drawer = getTopic<DebugDrawerInterfacePrx>("DebugDrawerUpdates");
113 
114  processorTask->start();
115  }
116 
117 
119  {
120  processorTask->stop();
121 
122  if (drawer)
123  {
124  drawer->removeArrowDebugLayerVisu("HeadRealViewDirection");
125  }
126 
127  try
128  {
129  headIKUnitProxy->release();
130  }
131  catch (...)
132  {
133  ARMARX_WARNING_S << "An exception occured during onDisconnectComponent()";
135  }
136  }
137 
138 
140  {
141  delete visibilityMaskGraph;
142  }
143 
144 
145  void ViewSelection::getActiveSaliencyMaps(std::vector<std::string>& activeSaliencyMaps)
146  {
147  std::unique_lock lock(syncMutex);
148 
150  for (const auto& p : saliencyMaps)
151  {
152  if (p.second->validUntil)
153  {
154  TimestampVariantPtr time = TimestampVariantPtr::dynamicCast(p.second->validUntil);
155  if (time->toTime() > currentTime)
156  {
157  activeSaliencyMaps.push_back(p.second->name);
158  }
159  }
160  else if ((currentTime - TimestampVariantPtr::dynamicCast(p.second->timeAdded)->toTime()) < IceUtil::Time::seconds(5))
161  {
162  activeSaliencyMaps.push_back(p.second->name);
163  }
164  }
165  }
166 
167  ViewTargetBasePtr ViewSelection::nextAutomaticViewTarget()
168  {
169  std::vector<std::string> activeSaliencyMaps;
170  getActiveSaliencyMaps(activeSaliencyMaps);
171 
172  if (activeSaliencyMaps.empty())
173  {
174  return nullptr;
175  }
176 
177 
178  SharedRobotInterfacePrx robotPrx = robotStateComponent->getSynchronizedRobot();
179  TNodeList* visibilityMaskGraphNodes = visibilityMaskGraph->getNodes();
180 
181  // find the direction with highest saliency
182  int maxIndex = -1;
183  float maxSaliency = std::numeric_limits<float>::min();
184 
185  std::unique_lock lock(syncMutex);
186 
187  hasNewSaliencyMap = false;
188 
189  for (size_t i = 0; i < visibilityMaskGraphNodes->size(); i++)
190  {
191  float saliency = 0.0f;
192  for (const std::string& n : activeSaliencyMaps)
193  {
194  saliency += saliencyMaps[n]->map[i];
195  }
196 
197  saliency /= activeSaliencyMaps.size();
198 
199  CIntensityNode* visibilityNode = (CIntensityNode*) visibilityMaskGraphNodes->at(i);
200  saliency *= visibilityNode->getIntensity();
201 
202  if (saliency > maxSaliency)
203  {
204  maxSaliency = saliency;
205  maxIndex = i;
206  }
207  }
208 
209 
210  lock.unlock();
211 
212  ARMARX_DEBUG << "Highest saliency: " << maxSaliency;
213 
214  // select a new view if saliency is bigger than threshold (which converges towards 0 over time)
215  int timeSinceLastViewChange = (armarx::TimeUtil::GetTime() - timeOfLastViewChange).toMilliSeconds();
216  float saliencyThreshold = 0;
217 
218  if (timeSinceLastViewChange > 0)
219  {
220  saliencyThreshold = 2.0f * sleepingTimeBetweenViewDirectionChanges / timeSinceLastViewChange;
221  }
222 
223  if (maxSaliency > saliencyThreshold)
224  {
225  Eigen::Vector3f target;
226  MathTools::convert(visibilityMaskGraphNodes->at(maxIndex)->getPosition(), target);
227  const float distanceFactor = 1500;
228  target = distanceFactor * target + offsetToHeadCenter;
229  FramedPositionPtr viewTargetPositionPtr = new FramedPosition(target, headFrameName, robotPrx->getName());
230 
231  ViewTargetBasePtr viewTarget = new ViewTargetBase();
232  viewTarget->priority = armarx::DEFAULT_VIEWTARGET_PRIORITY; // * maxSaliency;
233  viewTarget->timeAdded = new TimestampVariant(armarx::TimeUtil::GetTime());
234  viewTarget->target = viewTargetPositionPtr;
235  viewTarget->duration = 0;
236 
237 
238  if (visuSaliencyThreshold > 0.0)
239  {
240  drawSaliencySphere(activeSaliencyMaps);
241  }
242 
243  return viewTarget;
244 
245  }
246 
247  return nullptr;
248  }
249 
250 
251 
252  void ViewSelection::process()
253  {
254  /*
255  while(getState() < eManagedIceObjectExiting)
256  {
257  }
258  */
259 
260  ViewTargetBasePtr viewTarget;
261 
262  if (doAutomaticViewSelection)
263  {
264  viewTarget = nextAutomaticViewTarget();
265  }
266 
267  /*
268  //discard outdated view targets
269  IceUtil::Time currentTime = armarx::TimeUtil::GetTime();
270  while (!manualViewTargets.empty())
271  {
272  ViewTargetBasePtr manualViewTarget = manualViewTargets.top();
273  TimestampVariantPtr time = TimestampVariantPtr::dynamicCast(manualViewTarget->validUntil);
274 
275  if (time->toTime() < currentTime)
276  {
277  ARMARX_INFO << "view target is no longer valid";
278  manualViewTargets.pop();
279  }
280  else
281  {
282  break;
283  }
284  }
285  */
286 
287  if (!manualViewTargets.empty())
288  {
289  std::unique_lock lock(manualViewTargetsMutex);
290 
291  ViewTargetBasePtr manualViewTarget = manualViewTargets.top();
292 
293  CompareViewTargets c;
294 
295  if (!viewTarget)
296  {
297  viewTarget = manualViewTarget;
298  manualViewTargets.pop();
299  }
300  else if (c(viewTarget, manualViewTarget))
301  {
302  viewTarget = manualViewTarget;
303  manualViewTargets.pop();
304  }
305  }
306 
307  if (viewTarget)
308  {
309  SharedRobotInterfacePrx robotPrx = robotStateComponent->getSynchronizedRobot();
310  // FramedPositionPtr viewTargetPositionPtr = FramedPositionPtr::dynamicCast(viewTarget->target);
311  FramedPositionPtr viewTargetPositionPtr = new FramedPosition(FramedPositionPtr::dynamicCast(viewTarget->target)->toEigen(), viewTarget->target->frame, robotPrx->getName());
312 
313  if (drawer && robotPrx->hasRobotNode("Cameras") && drawViewDirection)
314  {
315  float arrowLength = 1500.0f;
316  Vector3Ptr startPos = new Vector3(FramedPosePtr::dynamicCast(robotPrx->getRobotNode("Cameras")->getGlobalPose())->toEigen());
317  FramedDirectionPtr currentDirection = new FramedDirection(Eigen::Vector3f(1, 0, 0), "Cameras", robotPrx->getName());
318  drawer->setArrowDebugLayerVisu("CurrentHeadViewDirection", startPos, currentDirection->toGlobal(robotPrx), DrawColor {0, 0.5, 0.5, 0.1}, arrowLength, 5);
319  Eigen::Vector3f plannedDirectionEigen = viewTargetPositionPtr->toGlobalEigen(robotPrx) - startPos->toEigen();
320  Vector3Ptr plannedDirection = new Vector3(plannedDirectionEigen);
321  drawer->setArrowDebugLayerVisu("PlannedHeadViewDirection", startPos, plannedDirection, DrawColor {0.5, 0.5, 0, 0.1}, arrowLength, 5);
322  }
323 
324  ARMARX_INFO << "Looking at target " << viewTargetPositionPtr->output();
325  headIKUnitProxy->setHeadTarget(headIKKinematicChainName, viewTargetPositionPtr);
326 
327  timeOfLastViewChange = TimeUtil::GetTime();
328 
329  long duration = viewTarget->duration;
330  if (!viewTarget->duration)
331  {
332  duration = sleepingTimeBetweenViewDirectionChanges;
333  }
334 
335  viewSelectionObserver->nextViewTarget(timeOfLastViewChange.toMilliSeconds() + duration);
336 
337  std::this_thread::sleep_for(std::chrono::milliseconds(duration));
338  }
339  else
340  {
341  std::this_thread::sleep_for(std::chrono::milliseconds(5));
342  }
343  }
344 
345 
346 
347  void ViewSelection::addManualViewTarget(const FramedPositionBasePtr& target, const Ice::Current& c)
348  {
349  std::unique_lock lock(manualViewTargetsMutex);
350 
351  //SharedRobotInterfacePrx sharedRobotInterface = robotStateComponent->getRobotSnapshot();
352 
353  ViewTargetBasePtr viewTarget = new ViewTargetBase();
354  viewTarget->priority = armarx::DEFAULT_VIEWTARGET_PRIORITY + 1;
355  viewTarget->timeAdded = new TimestampVariant(IceUtil::Time::now());
356  viewTarget->target = target;
357  viewTarget->duration = 0;
358 
359  manualViewTargets.push(viewTarget);
360 
361  std::unique_lock lock2(syncMutex);
362 
363  condition.notify_all();
364  }
365 
366  void ViewSelection::clearManualViewTargets(const Ice::Current& c)
367  {
368  std::unique_lock lock(manualViewTargetsMutex);
369 
370  while (!manualViewTargets.empty())
371  {
372  manualViewTargets.pop();
373  }
374 
375  // std::priority_queue<ViewTargetBasePtr, vector<ViewTargetBasePtr>, CompareViewTargets> temp;
376  // manualViewTargets.swap(temp);
377  }
378 
379  ViewTargetList ViewSelection::getManualViewTargets(const Ice::Current& c)
380  {
381  std::unique_lock lock(manualViewTargetsMutex);
382 
383  ViewTargetList result;
384 
385  std::priority_queue<ViewTargetBasePtr, std::vector<ViewTargetBasePtr>, CompareViewTargets> temp(manualViewTargets);
386 
387  while (!temp.empty())
388  {
389  result.push_back(temp.top());
390 
391  temp.pop();
392  }
393 
394  return result;
395  }
396 
397 
398 
399  void armarx::ViewSelection::updateSaliencyMap(const SaliencyMapBasePtr& map, const Ice::Current&)
400  {
401  std::unique_lock lock(syncMutex);
402 
403  hasNewSaliencyMap = true;
404 
405  map->timeAdded = TimestampVariant::nowPtr();
406 
407  saliencyMaps[map->name] = map;
408 
409  condition.notify_all();
410 
411  }
412 
413 
414  void ViewSelection::drawSaliencySphere(const ::Ice::StringSeq& names, const Ice::Current& c)
415  {
416  ARMARX_LOG << "visualizing saliency map";
417 
418  drawer->clearLayer("saliencyMap");
419 
420  SharedRobotInterfacePrx robotPrx = robotStateComponent->getSynchronizedRobot();
421 
422  Eigen::Matrix4f cameraToGlobal = FramedPosePtr::dynamicCast(robotPrx->getRobotNode(headFrameName)->getGlobalPose())->toEigen();
423 
424  std::vector<std::string> activeSaliencyMaps;
425 
426  if (names.size())
427  {
428  for (std::string n : names)
429  {
430  activeSaliencyMaps.push_back(n);
431  }
432  }
433  else
434  {
435  getActiveSaliencyMaps(activeSaliencyMaps);
436  }
437 
438  if (!activeSaliencyMaps.size())
439  {
440  return;
441  }
442 
443 
444  std::unique_lock lock(syncMutex);
445 
446  TNodeList* visibilityMaskGraphNodes = visibilityMaskGraph->getNodes();
447  DebugDrawer24BitColoredPointCloud cloud;
448  cloud.points.reserve(visibilityMaskGraphNodes->size());
449  for (size_t i = 0; i < visibilityMaskGraphNodes->size(); i++)
450  {
451  float saliency = 0.0f;
452  for (const std::string& n : activeSaliencyMaps)
453  {
454  saliency += saliencyMaps[n]->map[i];
455  }
456 
457  saliency /= activeSaliencyMaps.size();
458 
459  CIntensityNode* visibilityNode = (CIntensityNode*) visibilityMaskGraphNodes->at(i);
460  saliency *= visibilityNode->getIntensity();
461 
462  Eigen::Vector3d out;
463  TSphereCoord pos = visibilityNode->getPosition();
464  MathTools::convert(pos, out);
465 
467  pose.col(3).head<3>() = out.cast<float>() * 1000.0;
468  pose = cameraToGlobal * pose;
469 
470  // float r = std::min(1.0, (1.0 - saliency) * 0.2 + saliency * 0.8 + 0.2);
471  // float g = std::min(1.0, (1.0 - saliency) * 0.8 + saliency * 0.2 + 0.2);
472  // float b = std::min(1.0, (1.0 - saliency) * 0.2 + saliency * 0.2 + 0.2);
473 
474  if (saliency < visuSaliencyThreshold)
475  {
476  continue;
477  }
478  DebugDrawer24BitColoredPointCloudElement point;
479  point.color = colorutils::HeatMapRGBColor(saliency);
480  point.x = pose(0, 3);
481  point.y = pose(1, 3);
482  point.z = pose(2, 3);
483  cloud.points.push_back(point);
484  }
485  cloud.pointSize = 10;
486  drawer->set24BitColoredPointCloudVisu("saliencyMap", "SaliencyCloud", cloud);
487 
488  }
489 
490  void ViewSelection::clearSaliencySphere(const Ice::Current& c)
491  {
492  drawer->clearLayer("saliencyMap");
493  }
494 
495  void ViewSelection::removeSaliencyMap(const std::string& name, const Ice::Current& c)
496  {
497  std::unique_lock lock(syncMutex);
498 
499  if (saliencyMaps.count(name))
500  {
501  saliencyMaps.erase(name);
502  }
503 
504  condition.notify_all();
505  }
506 
507  Ice::StringSeq ViewSelection::getSaliencyMapNames(const Ice::Current& c)
508  {
509  std::vector<std::string> names;
510 
511  std::unique_lock lock(syncMutex);
512 
513  for (const auto& p : saliencyMaps)
514  {
515  names.push_back(p.second->name);
516  }
517 
518  return names;
519  }
520 
521 
523  {
525  }
526 }
RemoteRobot.h
armarx::ViewSelection::drawSaliencySphere
void drawSaliencySphere(const ::Ice::StringSeq &names, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:414
armarx::ViewSelection::getSaliencyMapNames
::Ice::StringSeq getSaliencyMapNames(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:507
TNodeList
std::vector< CSGNode * > TNodeList
Definition: SphericalGraph.h:88
armarx::ViewSelection::updateSaliencyMap
void updateSaliencyMap(const SaliencyMapBasePtr &map, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:399
CIntensityNode
Definition: IntensityGraph.h:25
armarx::ViewSelection::createPropertyDefinitions
PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: ViewSelection.cpp:522
armarx::ViewSelection::onConnectComponent
void onConnectComponent() override
Definition: ViewSelection.cpp:104
armarx::FramedDirectionPtr
IceInternal::Handle< FramedDirection > FramedDirectionPtr
Definition: FramedPose.h:81
armarx::ViewSelection::onExitComponent
void onExitComponent() override
Definition: ViewSelection.cpp:139
boost::target
Vertex target(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:688
armarx::TimestampVariant
Definition: TimestampVariant.h:54
armarx::ViewSelection::getManualViewTargets
ViewTargetList getManualViewTargets(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:379
armarx::CMakePackageFinder
The CMakePackageFinder class provides an interface to the CMake Package finder capabilities.
Definition: CMakePackageFinder.h:53
CSGNode::getPosition
TSphereCoord getPosition()
Definition: SphericalGraph.h:53
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:43
armarx::colorutils::HeatMapRGBColor
DrawColor24Bit HeatMapRGBColor(float percentage)
Definition: ColorUtils.h:165
armarx::CompareViewTargets
Definition: ViewSelection.h:56
ColorUtils.h
armarx::TimestampVariant::nowPtr
static TimestampVariantPtr nowPtr()
Definition: TimestampVariant.h:111
ViewSelection.h
IceInternal::Handle< TimestampVariant >
armarx::ViewSelection::addManualViewTarget
void addManualViewTarget(const FramedPositionBasePtr &target, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:347
armarx::ViewSelection::removeSaliencyMap
void removeSaliencyMap(const std::string &name, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:495
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:523
TSphereCoord::fPhi
float fPhi
Definition: Structs.h:25
armarx::SharedRobotInterfacePrx
::IceInternal::ProxyHandle< ::IceProxy::armarx::SharedRobotInterface > SharedRobotInterfacePrx
Definition: FramedPose.h:57
CIntensityGraph
Definition: IntensityGraph.h:51
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:177
armarx::CMakePackageFinder::getDataDir
std::string getDataDir() const
Definition: CMakePackageFinder.h:176
armarx::ViewSelection::clearManualViewTargets
void clearManualViewTargets(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:366
armarx::FramedPositionPtr
IceInternal::Handle< FramedPosition > FramedPositionPtr
Definition: FramedPose.h:134
ARMARX_ERROR
#define ARMARX_ERROR
Definition: Logging.h:189
ARMARX_WARNING_S
#define ARMARX_WARNING_S
Definition: Logging.h:206
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
CIntensityNode::getIntensity
float getIntensity()
Definition: IntensityGraph.cpp:47
ARMARX_LOG
#define ARMARX_LOG
Definition: Logging.h:163
armarx::TimeUtil::GetTime
static IceUtil::Time GetTime(TimeMode timeMode=TimeMode::VirtualTime)
Get the current time.
Definition: TimeUtil.cpp:42
armarx::Component::getConfigIdentifier
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Definition: Component.cpp:74
CMakePackageFinder.h
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:601
armarx::ViewSelection::clearSaliencySphere
void clearSaliencySphere(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ViewSelection.cpp:490
armarx::viz::data::ElementFlags::names
const simox::meta::IntEnumNames names
Definition: json_elements.cpp:14
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
armarx::VariantType::FramedDirection
const VariantTypeId FramedDirection
Definition: FramedPose.h:38
armarx::ArmarXDataPath::addDataPaths
static void addDataPaths(const std::string &dataPathList)
Definition: ArmarXDataPath.cpp:559
CIntensityNode::setIntensity
void setIntensity(float fIntensity)
Definition: IntensityGraph.cpp:42
armarx::ManagedIceObject::offeringTopic
void offeringTopic(const std::string &name)
Registers a topic for retrival after initialization.
Definition: ManagedIceObject.cpp:290
IceUtil::Handle< class PropertyDefinitionContainer >
memoryx::KBM::Vector3
Eigen::Vector3d Vector3
Definition: kbm.h:41
IceInternal::ProxyHandle< ::IceProxy::armarx::SharedRobotInterface >
CSphericalGraph::getNodes
TNodeList * getNodes()
Definition: SphericalGraph.cpp:162
armarx::Vector3Ptr
IceInternal::Handle< Vector3 > Vector3Ptr
Definition: Pose.h:165
armarx::ManagedIceObject::getName
std::string getName() const
Retrieve name of object.
Definition: ManagedIceObject.cpp:107
armarx::ArmarXDataPath::getAbsolutePath
static bool getAbsolutePath(const std::string &relativeFilename, std::string &storeAbsoluteFilename, const std::vector< std::string > &additionalSearchPaths={}, bool verbose=true)
Definition: ArmarXDataPath.cpp:111
armarx::PeriodicTask
Definition: ArmarXManager.h:70
armarx::ViewSelection::onInitComponent
void onInitComponent() override
Definition: ViewSelection.cpp:38
armarx::VariantType::FramedPosition
const VariantTypeId FramedPosition
Definition: FramedPose.h:39
min
T min(T t1, T t2)
Definition: gdiam.h:42
armarx::handleExceptions
void handleExceptions()
Definition: Exception.cpp:141
armarx::PropertyDefinitionsPtr
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
Definition: forward_declarations.h:34
armarx::ViewSelection::onDisconnectComponent
void onDisconnectComponent() override
Definition: ViewSelection.cpp:118
ArmarXDataPath.h
TSphereCoord
Definition: Structs.h:22
MathTools::convert
static void convert(TSphereCoord in, Eigen::Vector3d &out)
Definition: MathTools.cpp:401
armarx::ManagedIceObject::usingProxy
bool usingProxy(const std::string &name, const std::string &endpoints="")
Registers a proxy for retrieval after initialization and adds it to the dependency list.
Definition: ManagedIceObject.cpp:151
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::ViewSelectionPropertyDefinitions
Definition: ViewSelection.h:74