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 
164  // initialize scene provider
165  ARMARX_TRACE;
166  {
168  .graphReader = &graphReaderPlugin->get(),
169  .costmapReader = &costmapReaderPlugin->get(),
170  .virtualRobotReader = &virtualRobotReaderPlugin->get(),
171  .humanReader = &humanReaderPlugin->get(),
172  .laserScannerFeaturesReader = &laserScannerFeaturesReaderPlugin->get(),
173  .objectPoseClient = ObjectPoseClientPluginUser::getClient()};
174 
175  sceneProvider.emplace(srv, params.sceneCfg);
176  }
177 
178  initializeScene();
179 
180  ARMARX_TRACE;
181 
182  if (not params.disableExecutor)
183  {
184  executor.emplace(server::PlatformControllerExecutor(
187  .robotName = params.sceneCfg.robotName,
188  .rtUnitDynamicallyLoadLibraries = params.rtUnitDynamicallyLoadLibraries}));
189  }
190 
191  ARMARX_TRACE;
192  introspector = server::ArvizIntrospector(
194  // memoryIntrospector = server::MemoryIntrospector(resultsWriterPlugin->get(), );
195 
196 
197  navRemoteGui.emplace(remoteGui, *this);
198  navRemoteGui->enable();
199 
200  initialized = true;
201 
202  ARMARX_INFO << "Initialized. Will now respond to navigation requests.";
203  }
204 
205  void
207  {
208  ARMARX_TRACE;
209  navRemoteGui->enable();
210  }
211 
212  void
214  {
215  ARMARX_TRACE;
216 
217  stopAll();
218  navRemoteGui->disable();
219  }
220 
221  void
223  {
224  }
225 
226  void
228  {
229  ARMARX_TRACE;
230  sceneProvider->initialize(armarx::Clock::Now());
231  }
232 
233  std::string
235  {
236  return GetDefaultName();
237  }
238 
239  std::string
241  {
242  return "navigator";
243  }
244 
245  void
247  const std::string& callerId,
248  const Ice::Current&)
249  {
250  // TODO: Not thread-safe.
251  ARMARX_TRACE;
252  ARMARX_INFO << "Creating config for caller '" << callerId << "'";
253 
254  parameterizationService.store(stackConfig, callerId, armarx::Clock::Now());
255 
257  fac::NavigationStackFactory::create(stackConfig, sceneProvider->scene());
258 
259  // set visualization of LocalPlanner
260  if (stack.localPlanner)
261  {
262  stack.localPlanner->setVisualization(getArvizClient());
263  }
264 
265  memoryIntrospectors.emplace_back(
266  std::make_unique<server::MemoryIntrospector>(resultsWriterPlugin->get(), callerId));
267 
268  // keep track of all memory publishers
269  memoryPublishers.emplace(
270  callerId,
271  std::make_unique<server::MemoryPublisher>(
272  &resultsWriterPlugin->get(), &eventsWriterPlugin->get(), callerId));
273 
274  server::ExecutorInterface* executorPtr = nullptr;
275  if (executor.has_value())
276  {
277  executorPtr = &executor.value();
278  }
279 
280  // if we emplace an existing key it is not replaced, so remove it first.
281  navigators.erase(callerId);
282  navigators.emplace(
283  std::piecewise_construct,
284  std::forward_as_tuple(callerId),
285  std::forward_as_tuple(
286  server::Navigator::Config{.stack = std::move(stack),
289  .executor = executorPtr,
290  .publisher = memoryPublishers.at(callerId).get(),
291  .introspector = introspector.has_value() ? &(introspector.value()) : nullptr,
292  .debugObserverHelper = &getDebugObserverComponentPlugin(),
293  .sceneProvider =
294  sceneProvider.has_value() ? &sceneProvider.value() : nullptr}));
295  }
296 
297  void
298  Component::moveTo(const std::vector<Eigen::Matrix4f>& waypoints,
299  const std::string& navigationMode,
300  const std::string& callerId,
301  const Ice::Current&)
302  {
303  ARMARX_TRACE;
304 
305  ARMARX_INFO << "moveTo() requested by caller '" << callerId << "' with navigation mode `"
306  << navigationMode << "`.";
307  ARMARX_CHECK(navigators.count(callerId) > 0)
308  << "Navigator config for caller `" << callerId << "` not registered!";
309 
310  try
311  {
312  navigators.at(callerId).moveTo(convert(waypoints),
313  core::NavigationFrameNames.from_name(navigationMode));
314  }
315  catch (...)
316  {
318 
319  // TODO: Error handling.
320  ARMARX_WARNING << "Failed to execute moveTo()."
321  << "Movement will be paused.";
322  stopAll(); // TODO pause movement must not throw
323  throw;
324  }
325  }
326 
327  void
328  Component::updateMoveTo(const std::vector<Eigen::Matrix4f>& waypoints,
329  const std::string& navigationMode,
330  const std::string& callerId,
331  const Ice::Current& /*c*/)
332  {
333  ARMARX_TRACE;
334 
335  ARMARX_INFO << "updateMoveTo() requested by caller '" << callerId << "'";
336  ARMARX_CHECK(navigators.count(callerId) > 0)
337  << "Navigator config for caller `" << callerId << "` not registered!";
338 
339  const auto checkIsActiveNavigator = [&](const std::string& callerId)
340  {
341  const std::optional<std::string> activeNavigatorCallerId = activeNavigatorId();
342  if (not activeNavigatorCallerId.has_value())
343  {
344  ARMARX_VERBOSE << "No navigator is active.";
345  return false;
346  }
347 
348  return activeNavigatorCallerId == callerId;
349  };
350 
351  ARMARX_CHECK(checkIsActiveNavigator(callerId))
352  << "The navigator with id `" << callerId << "` is not active!";
353 
354  navigators.at(callerId).update(convert(waypoints),
355  core::NavigationFrameNames.from_name(navigationMode));
356  }
357 
358  void
360  const std::string& navigationMode,
361  const std::string& callerId,
362  const Ice::Current& c)
363  {
364  ARMARX_TRACE;
365 
366  ARMARX_IMPORTANT << "moveTo2 requested by caller '" << callerId << "'";
367 
368  const std::vector<client::WaypointTarget> wps = client::defrost(waypoints);
369 
370  ARMARX_CHECK(navigators.count(callerId) > 0)
371  << "Navigator config for caller `" << callerId << "` not registered!";
372 
373  navigators.at(callerId).moveTo(wps, core::NavigationFrameNames.from_name(navigationMode));
374  }
375 
376  void
377  Component::moveToLocation(const std::string& location,
378  const std::string& callerId,
379  const Ice::Current& c)
380  {
381  ARMARX_TRACE;
382  ARMARX_INFO << "MoveToLocation `" << location << "` requested by caller '" << callerId
383  << "'";
384 
385  ARMARX_CHECK(navigators.count(callerId) > 0)
386  << "Navigator config for caller `" << callerId << "` not registered!";
387 
388  navigators.at(callerId).moveToLocation(location);
389  }
390 
391  void
392  Component::moveTowards(const Eigen::Vector3f& direction,
393  const std::string& navigationMode,
394  const std::string& callerId,
395  const Ice::Current&)
396  {
397  // TODO: Error handling.
398  ARMARX_TRACE;
399  ARMARX_INFO << "MoveTowards requested by caller '" << callerId << "'";
400 
401  ARMARX_CHECK(navigators.count(callerId) > 0)
402  << "Navigator config for caller `" << callerId << "` not registered!";
403 
404  navigators.at(callerId).moveTowards(direction,
405  core::NavigationFrameNames.from_name(navigationMode));
406  }
407 
408  void
409  Component::pause(const std::string& configId, const Ice::Current&)
410  {
411  ARMARX_CHECK(navigators.count(configId) > 0)
412  << "Navigator config for caller `" << configId << "` not registered!";
413  navigators.at(configId).pause();
414  }
415 
416  void
417  Component::resume(const std::string& configId, const Ice::Current&)
418  {
419  ARMARX_TRACE;
420  ARMARX_CHECK(navigators.count(configId) > 0)
421  << "Navigator config for caller `" << configId << "` not registered!";
422  navigators.at(configId).resume();
423  }
424 
425  void
426  Component::stop(const std::string& configId, const Ice::Current&)
427  {
428  // FIXME make sure that event is emitted
429  ARMARX_TRACE;
430  ARMARX_CHECK(navigators.count(configId) > 0)
431  << "Navigator config for caller `" << configId << "` not registered!";
432  navigators.at(configId).stop();
433 
434  // emit UserAbortTriggered event
436  core::Pose(scene().robot->getGlobalPose())};
437  memoryPublishers.at(configId)->userAbortTriggered(event);
438  }
439 
440  void
441  Component::stopAll(const Ice::Current&)
442  {
443  ARMARX_IMPORTANT << "stopAll()";
444 
445  ARMARX_TRACE;
446  for (auto& [_, navigator] : navigators)
447  {
448  navigator.stop();
449  }
450 
451  // emit UserAbortTriggered event
453  core::Pose(scene().robot->getGlobalPose())};
454  for (auto& [callerId, memoryPublisher] : memoryPublishers)
455  {
456  memoryPublisher->userAbortTriggered(event);
457  }
458  }
459 
460  bool
461  Component::isPaused(const std::string& configId, const Ice::Current&)
462  {
463  ARMARX_TRACE;
464  ARMARX_CHECK(navigators.count(configId) > 0)
465  << "Navigator config for caller `" << configId << "` not registered!";
466  return navigators.at(configId).isPaused();
467  }
468 
469  const core::Scene&
471  {
472  ARMARX_CHECK_NOT_NULL(sceneProvider);
473  return sceneProvider->scene();
474  }
475 
476  bool
477  Component::isStopped(const std::string& configId, const Ice::Current&)
478  {
479  ARMARX_TRACE;
480  ARMARX_CHECK(navigators.count(configId) > 0)
481  << "Navigator config for caller `" << configId << "` not registered!";
482  return navigators.at(configId).isStopped();
483  }
484 
487  {
488  ARMARX_TRACE;
489 
491 
492  // Publish to a topic (passing the TopicListenerPrx).
493  // def->topic(myTopicListener);
494 
495  // Subscribe to a topic (passing the topic name).
496  // def->topic<PlatformUnitListener>("MyTopic");
497 
498  // Use (and depend on) another component (passing the ComponentInterfacePrx).
499  def->component(remoteGui, "RemoteGuiProvider");
500  // Add a required property.
501  // def->required(properties.boxLayerName, "p.box.LayerName", "Name of the box layer in ArViz.");
502 
503  // Add an optionalproperty.
504  def->optional(params.occupiedGridThreshold,
505  "p.occupancy_grid.occopied_threshold",
506  "Threshold for each cell to be considered occupied. Increase this value to "
507  "reduce noise.");
508 
509  def->optional(params.disableExecutor,
510  "p.disableExecutor",
511  "If the executor is disabled, the navigator will only plan the trajectory "
512  "but won't execute it.");
513 
514  def->required(params.sceneCfg.robotName, "p.scene.robotName");
515  def->optional(params.sceneCfg.staticCostmapProviderName,
516  "p.scene.staticCostmapProviderName");
517  def->optional(params.sceneCfg.staticCostmapName, "p.scene.staticCostmapName");
518  def->optional(params.sceneCfg.humanProviderName, "p.scene.humanProviderName");
519  def->optional(params.sceneCfg.laserScannerFeaturesProviderName,
520  "p.scene.laserScannerFeaturesProviderName");
521 
522  def->optional(params.rtUnitDynamicallyLoadLibraries,
523  "p.rtUnitDynamicallyLoadLibraries",
524  "If enabled, the controller library will automatically be loaded in the "
525  "RobotUnit. If disabled (desired), you have to make sure that the controller "
526  "library is listed in the RobotUnit's property `LoadLibraries`");
527 
528  return def;
529  }
530 
531  void
532  visualize(const algorithms::Costmap& costmap, viz::Client& arviz, const std::string& name)
533  {
534  const auto cmap = simox::color::cmaps::viridis();
535  const float vmax = costmap.getGrid().array().maxCoeff();
536 
537  const auto asColor = [&cmap, &vmax](const float distance) -> viz::data::Color
538  {
539  const auto color = cmap.at(distance, 0.F, vmax);
540  return {color.a, color.r, color.g, color.b};
541  };
542 
543  auto layer = arviz.layer("costmap_" + name);
544 
545  const std::int64_t cols = costmap.getGrid().cols();
546  const std::int64_t rows = costmap.getGrid().rows();
547 
548  auto mesh = viz::Mesh("");
549 
550  std::vector<std::vector<Eigen::Vector3f>> vertices;
551  std::vector<std::vector<viz::data::Color>> colors;
552 
553  for (int r = 0; r < rows; r++)
554  {
555  auto& verticesRow = vertices.emplace_back(cols);
556  auto& colorsRow = colors.emplace_back(cols);
557 
558  for (int c = 0; c < cols; c++)
559  {
560  verticesRow.at(c) = conv::to3D(costmap.toPositionGlobal({r, c}));
561  colorsRow.at(c) = asColor(costmap.getGrid()(r, c));
562  }
563  }
564 
565  mesh.grid2D(vertices, colors);
566 
567  layer.add(mesh);
568 
569  arviz.commit(layer);
570  }
571 
574  {
575 
576  const auto navigatorId = activeNavigatorId();
577  if (not navigatorId.has_value())
578  {
579  return nullptr;
580  }
581 
582  return &navigators.at(navigatorId.value());
583  }
584 
585  std::optional<std::string>
587  {
588  ARMARX_TRACE;
589  // We define the active navigator to be the one whose movement is enabled.
590  const auto isActive = [](const auto& nameNavPair) -> bool
591  {
592  const auto& [name, navigator] = nameNavPair;
593  return not navigator.isPaused();
594  };
595 
596  const auto it = std::find_if(navigators.begin(), navigators.end(), isActive);
597 
598  // no navigator active?
599  if (it == navigators.end())
600  {
601  return std::nullopt;
602  }
603 
604  return it->first;
605  }
606 
607 } // 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:573
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:477
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:586
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:486
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:409
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
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:426
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:532
persistence.h
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:328
armarx::navigation::components::navigator::Component::scene
const core::Scene & scene() const
Definition: Component.cpp:470
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:377
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:213
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:417
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:359
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:392
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:206
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:298
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:240
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:227
armarx::navigation::components::navigator::Component::isPaused
bool isPaused(const std::string &callerId, const Ice::Current &c=Ice::emptyCurrent) override
Definition: Component.cpp:461
armarx::navigation::components::navigator::Component::getDefaultName
std::string getDefaultName() const override
Definition: Component.cpp:234
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:246
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::server::PlatformControllerExecutor
The PlatformUnitExecutor class.
Definition: PlatformControllerExecutor.h:25
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:222
armarx::navigation::server::scene_provider::SceneProvider::InjectedServices
Definition: SceneProvider.h:68
SceneProvider.h