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