Component.cpp
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 Navigation::ArmarXObjects::Navigator
17  * @author Fabian Reister ( fabian dot reister at kit dot edu )
18  * @author Christian R. G. Dreher ( c dot dreher at kit dot edu )
19  * @date 2021
20  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
21  * GNU General Public License
22  */
23 
24 #include "Component.h"
25 
26 #include <algorithm>
27 #include <cmath>
28 #include <cstddef>
29 #include <cstdint>
30 #include <iterator>
31 #include <memory>
32 #include <optional>
33 #include <utility>
34 
35 #include <Eigen/Geometry>
36 
37 #include <opencv2/core/eigen.hpp>
38 #include <opencv2/imgcodecs.hpp>
39 
40 #include <Ice/Current.h>
41 
42 #include <SimoxUtility/color/ColorMap.h>
43 #include <SimoxUtility/color/cmaps/colormaps.h>
44 #include <SimoxUtility/math/convert/rpy_to_mat3f.h>
45 #include <VirtualRobot/MathTools.h>
46 #include <VirtualRobot/Robot.h>
47 
59 
61 
69 
78 #include <armarx/navigation/client/ice/NavigatorInterface.h>
91 
93 {
95 }
96 
97 namespace armarx::navigation
98 {
99 
100  std::vector<core::Pose>
101  convert(const std::vector<Eigen::Matrix4f>& wps)
102  {
103  std::vector<core::Pose> p;
104  p.reserve(wps.size());
105  std::transform(wps.begin(),
106  wps.end(),
107  std::back_inserter(p),
108  [](const auto& p) { return core::Pose(p); });
109  return p;
110  }
111 
112 } // namespace armarx::navigation
113 
115 {
116 
117  Component::Component() : parameterizationService(nullptr, nullptr)
118  // publisher(&resultsWriter, &eventsWriter)
119  {
120  // scene().timeServer = &timeServer;
121 
122  addPlugin(parameterizationReaderPlugin);
123  addPlugin(parameterizationWriterPlugin);
124  addPlugin(eventsWriterPlugin);
125  addPlugin(resultsWriterPlugin);
126  addPlugin(graphReaderPlugin);
127  addPlugin(costmapReaderPlugin);
128  addPlugin(humanReaderPlugin);
129  addPlugin(laserScannerFeaturesReaderPlugin);
130 
131  addPlugin(virtualRobotReaderPlugin);
132 
133  parameterizationService = server::MemoryParameterizationService(
134  &parameterizationReaderPlugin->get(), &parameterizationWriterPlugin->get());
135  }
136 
137 
138  Component::~Component() = default;
139 
140  void
142  {
143  }
144 
145  void
147  {
148  ARMARX_TRACE;
149 
150  static bool initialized{false};
151 
152  // redirect to onReconnect to avoid any setup issues
153  if (initialized)
154  {
155  ARMARX_INFO << "Reconnecting ...";
157  return;
158  }
159 
160 
161  virtualRobotReaderPlugin->get().setSyncTimeout(Duration::MilliSeconds(20));
162  virtualRobotReaderPlugin->get().setSleepAfterSyncFailure(Duration::MilliSeconds(10));
163 
165 
166  // initialize scene provider
167  ARMARX_TRACE;
168  {
170  .graphReader = &graphReaderPlugin->get(),
171  .costmapReader = &costmapReaderPlugin->get(),
172  .virtualRobotReader = &virtualRobotReaderPlugin->get(),
173  .humanReader = &humanReaderPlugin->get(),
174  .laserScannerFeaturesReader = &laserScannerFeaturesReaderPlugin->get(),
175  .objectPoseClient = ObjectPoseClientPluginUser::getClient()};
176 
177  sceneProvider.emplace(srv, params.sceneCfg);
178  }
179 
180  initializeScene();
181 
182  ARMARX_TRACE;
183 
184  if (not params.disableExecutor)
185  {
186  executor.emplace(
189  .robotName = params.sceneCfg.robotName,
190  .rtUnitDynamicallyLoadLibraries = params.rtUnitDynamicallyLoadLibraries});
191  }
192 
193  ARMARX_TRACE;
194  introspector = server::ArvizIntrospector(
196  // memoryIntrospector = server::MemoryIntrospector(resultsWriterPlugin->get(), );
197 
198 
199  navRemoteGui.emplace(remoteGui, *this);
200  navRemoteGui->enable();
201 
202  initialized = true;
203 
204  ARMARX_INFO << "Initialized. Will now respond to navigation requests.";
205  }
206 
207  void
209  {
210  ARMARX_TRACE;
211  navRemoteGui->enable();
212  }
213 
214  void
216  {
217  ARMARX_TRACE;
218 
219  stopAll();
220  navRemoteGui->disable();
221  }
222 
223  void
225  {
226  }
227 
228  void
230  {
231  ARMARX_TRACE;
232  sceneProvider->initialize(armarx::Clock::Now());
233  }
234 
235  std::string
237  {
238  return GetDefaultName();
239  }
240 
241  std::string
243  {
244  return "navigator";
245  }
246 
247  void
249  const std::string& callerId,
250  const Ice::Current&)
251  {
252  // TODO: Not thread-safe.
253  ARMARX_TRACE;
254  ARMARX_INFO << "Creating config for caller '" << callerId << "'";
255 
256  parameterizationService.store(stackConfig, callerId, armarx::Clock::Now());
257 
259  fac::NavigationStackFactory::create(stackConfig, sceneProvider->scene());
260 
261  // set visualization of LocalPlanner
262  if (stack.localPlanner)
263  {
264  stack.localPlanner->setVisualization(getArvizClient());
265  }
266 
267  memoryIntrospectors.emplace_back(
268  std::make_unique<server::MemoryIntrospector>(resultsWriterPlugin->get(), callerId));
269 
270  // keep track of all memory publishers
271  memoryPublishers.emplace(
272  callerId,
273  std::make_unique<server::MemoryPublisher>(
274  &resultsWriterPlugin->get(), &eventsWriterPlugin->get(), callerId));
275 
276  server::ExecutorInterface* executorPtr = nullptr;
277  if (executor.has_value())
278  {
279  executorPtr = &executor.value();
280  }
281 
282  // if we emplace an existing key it is not replaced, so remove it first.
283  navigators.erase(callerId);
284  navigators.emplace(
285  std::piecewise_construct,
286  std::forward_as_tuple(callerId),
287  std::forward_as_tuple(
288  server::Navigator::Config{.stack = std::move(stack),
291  .executor = executorPtr,
292  .publisher = memoryPublishers.at(callerId).get(),
293  .introspector = introspector.has_value() ? &(introspector.value()) : nullptr,
294  .debugObserverHelper = &getDebugObserverComponentPlugin(),
295  .sceneProvider =
296  sceneProvider.has_value() ? &sceneProvider.value() : nullptr}));
297  }
298 
299  void
300  Component::moveTo(const std::vector<Eigen::Matrix4f>& waypoints,
301  const std::string& navigationMode,
302  const std::string& callerId,
303  const Ice::Current&)
304  {
305  ARMARX_TRACE;
306 
307  ARMARX_INFO << "moveTo() requested by caller '" << callerId << "' with navigation mode `"
308  << navigationMode << "`.";
309  ARMARX_CHECK(navigators.count(callerId) > 0)
310  << "Navigator config for caller `" << callerId << "` not registered!";
311 
312  try
313  {
314  navigators.at(callerId).moveTo(convert(waypoints),
315  core::NavigationFrameNames.from_name(navigationMode));
316  }
317  catch (...)
318  {
320 
321  // TODO: Error handling.
322  ARMARX_WARNING << "Failed to execute moveTo()."
323  << "Movement will be paused.";
324  stopAll(); // TODO pause movement must not throw
325  throw;
326  }
327  }
328 
329  void
330  Component::updateMoveTo(const std::vector<Eigen::Matrix4f>& waypoints,
331  const std::string& navigationMode,
332  const std::string& callerId,
333  const Ice::Current& /*c*/)
334  {
335  ARMARX_TRACE;
336 
337  ARMARX_INFO << "updateMoveTo() requested by caller '" << callerId << "'";
338  ARMARX_CHECK(navigators.count(callerId) > 0)
339  << "Navigator config for caller `" << callerId << "` not registered!";
340 
341  const auto checkIsActiveNavigator = [&](const std::string& callerId)
342  {
343  const std::optional<std::string> activeNavigatorCallerId = activeNavigatorId();
344  if (not activeNavigatorCallerId.has_value())
345  {
346  ARMARX_VERBOSE << "No navigator is active.";
347  return false;
348  }
349 
350  return activeNavigatorCallerId == callerId;
351  };
352 
353  ARMARX_CHECK(checkIsActiveNavigator(callerId))
354  << "The navigator with id `" << callerId << "` is not active!";
355 
356  navigators.at(callerId).update(convert(waypoints),
357  core::NavigationFrameNames.from_name(navigationMode));
358  }
359 
360  void
362  const std::string& navigationMode,
363  const std::string& callerId,
364  const Ice::Current& c)
365  {
366  ARMARX_TRACE;
367 
368  ARMARX_IMPORTANT << "moveTo2 requested by caller '" << callerId << "'";
369 
370  const std::vector<client::WaypointTarget> wps = client::defrost(waypoints);
371 
372  ARMARX_CHECK(navigators.count(callerId) > 0)
373  << "Navigator config for caller `" << callerId << "` not registered!";
374 
375  navigators.at(callerId).moveTo(wps, core::NavigationFrameNames.from_name(navigationMode));
376  }
377 
378  void
379  Component::moveToLocation(const std::string& location,
380  const std::string& callerId,
381  const Ice::Current& c)
382  {
383  ARMARX_TRACE;
384  ARMARX_INFO << "MoveToLocation `" << location << "` requested by caller '" << callerId
385  << "'";
386 
387  ARMARX_CHECK(navigators.count(callerId) > 0)
388  << "Navigator config for caller `" << callerId << "` not registered!";
389 
390  navigators.at(callerId).moveToLocation(location);
391  }
392 
393  void
394  Component::moveTowards(const Eigen::Vector3f& direction,
395  const std::string& navigationMode,
396  const std::string& callerId,
397  const Ice::Current&)
398  {
399  // TODO: Error handling.
400  ARMARX_TRACE;
401  ARMARX_INFO << "MoveTowards requested by caller '" << callerId << "'";
402 
403  ARMARX_CHECK(navigators.count(callerId) > 0)
404  << "Navigator config for caller `" << callerId << "` not registered!";
405 
406  navigators.at(callerId).moveTowards(direction,
407  core::NavigationFrameNames.from_name(navigationMode));
408  }
409 
410  void
411  Component::pause(const std::string& configId, const Ice::Current&)
412  {
413  ARMARX_CHECK(navigators.count(configId) > 0)
414  << "Navigator config for caller `" << configId << "` not registered!";
415  navigators.at(configId).pause();
416  }
417 
418  void
419  Component::resume(const std::string& configId, const Ice::Current&)
420  {
421  ARMARX_TRACE;
422  ARMARX_CHECK(navigators.count(configId) > 0)
423  << "Navigator config for caller `" << configId << "` not registered!";
424  navigators.at(configId).resume();
425  }
426 
427  void
428  Component::stop(const std::string& configId, const Ice::Current&)
429  {
430  // FIXME make sure that event is emitted
431  ARMARX_TRACE;
432  ARMARX_CHECK(navigators.count(configId) > 0)
433  << "Navigator config for caller `" << configId << "` not registered!";
434  navigators.at(configId).stop();
435 
436  // emit UserAbortTriggered event
438  core::Pose(scene().robot->getGlobalPose())};
439  memoryPublishers.at(configId)->userAbortTriggered(event);
440  }
441 
442  void
443  Component::stopAll(const Ice::Current&)
444  {
445  ARMARX_IMPORTANT << "stopAll()";
446 
447  ARMARX_TRACE;
448  for (auto& [_, navigator] : navigators)
449  {
450  navigator.stop();
451  }
452 
453  // emit UserAbortTriggered event
455  core::Pose(scene().robot->getGlobalPose())};
456  for (auto& [callerId, memoryPublisher] : memoryPublishers)
457  {
458  memoryPublisher->userAbortTriggered(event);
459  }
460  }
461 
462  bool
463  Component::isPaused(const std::string& configId, const Ice::Current&)
464  {
465  ARMARX_TRACE;
466  ARMARX_CHECK(navigators.count(configId) > 0)
467  << "Navigator config for caller `" << configId << "` not registered!";
468  return navigators.at(configId).isPaused();
469  }
470 
471  const core::Scene&
473  {
474  ARMARX_CHECK_NOT_NULL(sceneProvider);
475  return sceneProvider->scene();
476  }
477 
478  bool
479  Component::isStopped(const std::string& configId, const Ice::Current&)
480  {
481  ARMARX_TRACE;
482  ARMARX_CHECK(navigators.count(configId) > 0)
483  << "Navigator config for caller `" << configId << "` not registered!";
484  return navigators.at(configId).isStopped();
485  }
486 
489  {
490  ARMARX_TRACE;
491 
493 
494  // Publish to a topic (passing the TopicListenerPrx).
495  // def->topic(myTopicListener);
496 
497  // Subscribe to a topic (passing the topic name).
498  // def->topic<PlatformUnitListener>("MyTopic");
499 
500  // Use (and depend on) another component (passing the ComponentInterfacePrx).
501  def->component(remoteGui, "RemoteGuiProvider");
502  // Add a required property.
503  // def->required(properties.boxLayerName, "p.box.LayerName", "Name of the box layer in ArViz.");
504 
505  // Add an optionalproperty.
506  def->optional(params.occupiedGridThreshold,
507  "p.occupancy_grid.occopied_threshold",
508  "Threshold for each cell to be considered occupied. Increase this value to "
509  "reduce noise.");
510 
511  def->optional(params.disableExecutor,
512  "p.disableExecutor",
513  "If the executor is disabled, the navigator will only plan the trajectory "
514  "but won't execute it.");
515 
516  def->required(params.sceneCfg.robotName, "p.scene.robotName");
517  def->optional(params.sceneCfg.staticCostmapProviderName,
518  "p.scene.staticCostmapProviderName");
519  def->optional(params.sceneCfg.staticCostmapName, "p.scene.staticCostmapName");
520  def->optional(params.sceneCfg.humanProviderName, "p.scene.humanProviderName");
521  def->optional(params.sceneCfg.laserScannerFeaturesProviderName,
522  "p.scene.laserScannerFeaturesProviderName");
523 
524  def->optional(params.rtUnitDynamicallyLoadLibraries,
525  "p.rtUnitDynamicallyLoadLibraries",
526  "If enabled, the controller library will automatically be loaded in the "
527  "RobotUnit. If disabled (desired), you have to make sure that the controller "
528  "library is listed in the RobotUnit's property `LoadLibraries`");
529 
530  return def;
531  }
532 
533  void
534  visualize(const algorithms::Costmap& costmap, viz::Client& arviz, const std::string& name)
535  {
536  const auto cmap = simox::color::cmaps::viridis();
537  const float vmax = costmap.getGrid().array().maxCoeff();
538 
539  const auto asColor = [&cmap, &vmax](const float distance) -> viz::data::Color
540  {
541  const auto color = cmap.at(distance, 0.F, vmax);
542  return {color.a, color.r, color.g, color.b};
543  };
544 
545  auto layer = arviz.layer("costmap_" + name);
546 
547  const std::int64_t cols = costmap.getGrid().cols();
548  const std::int64_t rows = costmap.getGrid().rows();
549 
550  auto mesh = viz::Mesh("");
551 
552  std::vector<std::vector<Eigen::Vector3f>> vertices;
553  std::vector<std::vector<viz::data::Color>> colors;
554 
555  for (int r = 0; r < rows; r++)
556  {
557  auto& verticesRow = vertices.emplace_back(cols);
558  auto& colorsRow = colors.emplace_back(cols);
559 
560  for (int c = 0; c < cols; c++)
561  {
562  verticesRow.at(c) = conv::to3D(costmap.toPositionGlobal({r, c}));
563  colorsRow.at(c) = asColor(costmap.getGrid()(r, c));
564  }
565  }
566 
567  mesh.grid2D(vertices, colors);
568 
569  layer.add(mesh);
570 
571  arviz.commit(layer);
572  }
573 
576  {
577 
578  const auto navigatorId = activeNavigatorId();
579  if (not navigatorId.has_value())
580  {
581  return nullptr;
582  }
583 
584  return &navigators.at(navigatorId.value());
585  }
586 
587  std::optional<std::string>
589  {
590  ARMARX_TRACE;
591  // We define the active navigator to be the one whose movement is enabled.
592  const auto isActive = [](const auto& nameNavPair) -> bool
593  {
594  const auto& [name, navigator] = nameNavPair;
595  return not navigator.isPaused();
596  };
597 
598  const auto it = std::find_if(navigators.begin(), navigators.end(), isActive);
599 
600  // no navigator active?
601  if (it == navigators.end())
602  {
603  return std::nullopt;
604  }
605 
606  return it->first;
607  }
608 
609 } // namespace armarx::navigation::components::navigator
ice_conversions.h
armarx::navigation::fac::NavigationStackFactory::create
static server::NavigationStack create(const aron::data::DictPtr &params, const core::Scene &ctx)
Definition: NavigationStackFactory.cpp:17
Client.h
armarx::navigation::components::navigator::Component::activeNavigator
server::Navigator * activeNavigator()
Definition: Component.cpp:575
RemoteRobot.h
armarx::viz::Client::commit
CommitResult commit(StagedCommit const &commit)
Definition: Client.cpp:80
armarx::ArVizComponentPluginUser::getArvizClient
armarx::viz::Client & getArvizClient()
Definition: ArVizComponentPlugin.h:45
armarx::navigation::components::navigator::Component::isStopped
bool isStopped(const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:479
ARMARX_VERBOSE
#define ARMARX_VERBOSE
Definition: Logging.h:180
util.h
armarx::navigation::components::navigator::Component::activeNavigatorId
std::optional< std::string > activeNavigatorId() const
Definition: Component.cpp:588
armarx::navigation::server::MemoryParameterizationService::store
bool store(const aron::data::DictPtr &params, const std::string &clientId, const armarx::core::time::DateTime &timestamp)
Definition: MemoryParameterizationService.cpp:14
armarx::navigation::server::scene_provider::SceneProvider::InjectedServices::graphReader
memory::client::graph::Reader * graphReader
Definition: SceneProvider.h:71
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:183
armarx::navigation::server::PlatformControllerExecutor::Properties::robotName
std::string robotName
Definition: PlatformControllerExecutor.h:33
LocalException.h
armarx::navigation::server::ExecutorInterface
An executer the server navigator will use to send its control commands to.
Definition: ExecutorInterface.h:11
armarx::navigation::core::Pose
Eigen::Isometry3f Pose
Definition: basic_types.h:31
armarx::navigation::components::navigator::Component::createPropertyDefinitions
PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: Component.cpp:488
util.h
ExecutorInterface.h
armarx::navigation::convert
std::vector< core::Pose > convert(const std::vector< Eigen::Matrix4f > &wps)
Definition: Component.cpp:101
armarx::DebugObserverComponentPluginUser::getDebugObserverComponentPlugin
plugins::DebugObserverComponentPlugin & getDebugObserverComponentPlugin()
Definition: DebugObserverComponentPlugin.cpp:85
armarx::navigation::components::navigator::Component::pause
void pause(const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:411
MemoryID.h
CostmapBuilder.h
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition: ExpressionException.h:206
armarx::navigation::client::NavigatorInterface::stopAll
idempotent void stopAll()
armarx::viz::Mesh
Definition: Mesh.h:28
trace.h
armarx::objpose::ObjectPoseClient::objectFinder
ObjectFinder objectFinder
Definition: ObjectPoseClient.h:119
Duration.h
Reader.h
PeriodicTask.h
armarx::navigation::server::Navigator::Config
Definition: Navigator.h:66
armarx::navigation::server::NavigationStack
Definition: NavigationStack.h:34
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:43
armarx::navigation::components::navigator::Component::stop
void stop(const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:428
armarx::navigation::server::Navigator
Definition: Navigator.h:62
armarx::ManagedIceObject::addPlugin
PluginT * addPlugin(const std::string prefix="", ParamsT &&...params)
Definition: ManagedIceObject.h:182
armarx::navigation::components::navigator::visualize
void visualize(const algorithms::Costmap &costmap, viz::Client &arviz, const std::string &name)
Definition: Component.cpp:534
persistence.h
armarx::ObjectFinder::setLogObjectDiscoveryError
void setLogObjectDiscoveryError(bool logEnabled)
Definition: ObjectFinder.cpp:379
armarx::navigation
This file is part of ArmarX.
Definition: aron_conversions.cpp:13
armarx::navigation::algorithms::Costmap::toPositionGlobal
Position toPositionGlobal(const Index &index) const
Definition: Costmap.cpp:71
NavigationStackFactory.h
armarx::navigation::components::navigator::Component::updateMoveTo
void updateMoveTo(const std::vector< Eigen::Matrix4f > &waypoints, const std::string &navigationMode, const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:330
armarx::navigation::components::navigator::Component::scene
const core::Scene & scene() const
Definition: Component.cpp:472
armarx::navigation::components::navigator::Component::moveToLocation
void moveToLocation(const std::string &location, const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:379
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
Clock.h
armarx::navigation::server::NavigationStack::localPlanner
local_planning::LocalPlannerPtr localPlanner
Definition: NavigationStack.h:37
ShortestPathFasterAlgorithm.h
armarx::navigation::components::navigator::Component
Definition: Component.h:83
armarx::navigation::components::navigator::Component::onDisconnectComponent
void onDisconnectComponent() override
Definition: Component.cpp:215
armarx::navigation::core::NavigationFrameNames
const simox::meta::EnumNames< NavigationFrame > NavigationFrameNames
Definition: types.h:49
Costmap.h
armarx::navigation::server::PlatformControllerExecutor::Properties
Definition: PlatformControllerExecutor.h:31
armarx::GetHandledExceptionString
std::string GetHandledExceptionString()
Definition: Exception.cpp:147
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:69
armarx::navigation::client::defrost
client::GlobalPlanningStrategy defrost(const client::detail::GlobalPlanningStrategy &strategy)
Definition: ice_conversions.cpp:16
armarx::navigation::components::navigator::Component::resume
void resume(const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:419
Reader.h
RemoteGui.h
Color
uint32_t Color
RGBA color.
Definition: color.h:8
util.h
NavigationStackConfig.h
armarx::navigation::server::Navigator::Config::stack
server::NavigationStack stack
Definition: Navigator.h:76
PathBuilder.h
armarx::navigation::client::detail::Waypoints
sequence< Waypoint > Waypoints
Definition: NavigatorInterface.ice:58
armarx::navigation::components::navigator::Component::moveTo2
void moveTo2(const client::detail::Waypoints &waypoints, const std::string &navigationMode, const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:361
armarx::navigation::core::UserAbortTriggeredEvent
Event describing that the user aborted the current execution.
Definition: events.h:93
armarx::navigation::algorithms::Costmap::getGrid
const Grid & getGrid() const
Definition: Costmap.cpp:236
armarx::navigation::components::navigator::Component::moveTowards
void moveTowards(const Eigen::Vector3f &direction, const std::string &navigationMode, const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:394
armarx::navigation::server::Navigator::InjectedServices
Definition: Navigator.h:80
armarx::control::client::ComponentPluginUser::getControlComponentPlugin
ComponentPlugin & getControlComponentPlugin()
Definition: ComponentPlugin.cpp:70
TaskUtil.h
armarx::navigation::server::Navigator::InjectedServices::executor
ExecutorInterface * executor
Definition: Navigator.h:82
armarx::navigation::server::Navigator::Config::General
Definition: Navigator.h:68
armarx::navigation::components::navigator::Component::onReconnectComponent
void onReconnectComponent()
Definition: Component.cpp:208
armarx::navigation::core::Scene
Definition: types.h:71
MemoryIntrospector.h
Component.h
MemoryPublisher.h
ExpressionException.h
armarx::navigation::components::navigator::Component::moveTo
void moveTo(const std::vector< Eigen::Matrix4f > &waypoints, const std::string &navigationMode, const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:300
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition: Dict.h:41
armarx::Component::getConfigIdentifier
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Definition: Component.cpp:74
Decoupled.h
armarx::ComponentPropertyDefinitions
Default component property definition container.
Definition: Component.h:70
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
armarx::navigation::components::navigator::Component::onConnectComponent
void onConnectComponent() override
Definition: Component.cpp:146
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::transform
auto transform(const Container< InputT, Alloc > &in, OutputT(*func)(InputT const &)) -> Container< OutputT, typename std::allocator_traits< Alloc >::template rebind_alloc< OutputT > >
Convenience function (with less typing) to transform a container of type InputT into the same contain...
Definition: algorithm.h:315
OccupancyGridHelper.h
LogSender.h
F
Definition: ExportDialogControllerTest.cpp:16
Time.h
armarx::navigation::conv::to3D
std::vector< Eigen::Vector3f > to3D(const std::vector< Eigen::Vector2f > &v)
Definition: eigen.cpp:11
armarx::navigation::components::navigator::Component::Component
Component()
Definition: Component.cpp:117
armarx::core::time::Clock::Now
static DateTime Now()
Current time on the virtual clock.
Definition: Clock.cpp:97
Widgets.h
distance
double distance(const Point &a, const Point &b)
Definition: point.hpp:88
armarx::navigation::components::navigator::Component::GetDefaultName
static std::string GetDefaultName()
Definition: Component.cpp:242
eigen.h
Logging.h
armarx::navigation::components::navigator::Component::~Component
~Component() override
armarx::ObjectPoseClientPluginUser::getClient
objpose::ObjectPoseClient getClient() const
Definition: ObjectPoseClientPlugin.cpp:64
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
armarx::viz::Client::layer
Layer layer(std::string const &name) const
Definition: Client.cpp:73
armarx::navigation::components::navigator::Component::initializeScene
void initializeScene()
Definition: Component.cpp:229
armarx::navigation::components::navigator::Component::isPaused
bool isPaused(const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:463
armarx::navigation::components::navigator::Component::getDefaultName
std::string getDefaultName() const override
Definition: Component.cpp:236
armarx::viz::Client
Definition: Client.h:109
armarx::navigation::components::navigator::Component::createConfig
void createConfig(const aron::data::dto::DictPtr &stackConfig, const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:248
armarx::navigation::server::ArvizIntrospector
Definition: ArvizIntrospector.h:52
types.h
Navigator.h
armarx::navigation::server::MemoryParameterizationService
Definition: MemoryParameterizationService.h:36
NJointControllerRegistry.h
armarx::navigation::components::navigator::ARMARX_REGISTER_COMPONENT_EXECUTABLE
ARMARX_REGISTER_COMPONENT_EXECUTABLE(Component, Component::GetDefaultName())
armarx::navigation::components::navigator
This file is part of ArmarX.
Definition: Component.cpp:92
armarx::navigation::algorithms::Costmap
Definition: Costmap.h:13
armarx::core::time::Duration::MilliSeconds
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
Definition: Duration.cpp:55
armarx::navigation::components::navigator::Component::onInitComponent
void onInitComponent() override
Definition: Component.cpp:141
armarx::navigation::components::navigator::Component::onExitComponent
void onExitComponent() override
Definition: Component.cpp:224
armarx::navigation::server::scene_provider::SceneProvider::InjectedServices
Definition: SceneProvider.h:68
SceneProvider.h