RobotUnitReader.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <memory>
5 #include <optional>
6 #include <queue>
7 #include <string>
8 
12 
13 #include <RobotAPI/interface/units/RobotUnit/RobotUnitInterface.h>
15 
16 #include "../exteroception/converters/ConverterInterface.h"
17 #include "../exteroception/converters/ConverterRegistry.h"
18 #include "RobotUnitData.h"
19 #include "converters/ConverterInterface.h"
20 #include "converters/ConverterRegistry.h"
21 
22 namespace armarx::plugins
23 {
24  class RobotUnitComponentPlugin;
25  class DebugObserverComponentPlugin;
26 } // namespace armarx::plugins
27 
28 namespace armarx
29 {
30  using RobotUnitDataStreamingReceiverPtr = std::shared_ptr<class RobotUnitDataStreamingReceiver>;
31 }
32 
33 // TODO move this out of proprioception. it is now for proprioception and exteroception
35 {
37  {
38  public:
40 
42 
43 
46  const std::string& robotTypeName);
47 
48 
49  /// Reads data from `handler` and fills `dataQueue`.
50  void run(float pollFrequency, Queue& dataBuffer);
51 
52  std::optional<RobotUnitData> fetchAndConvertLatestRobotUnitData();
53 
54 
55  private:
56  /// Fetch the latest timestep and clear the robot unit buffer.
57  std::optional<RobotUnitDataStreaming::TimeStep> fetchLatestData();
58 
59 
60  public:
61  struct Properties
62  {
63  std::string sensorPrefix = "sens.*";
64  };
65 
67 
68  std::optional<DebugObserverHelper> debugObserver;
69 
70 
71  RobotUnitDataStreaming::Config config;
73  RobotUnitDataStreaming::DataStreamingDescription description;
74 
79 
81  };
82 
83 } // namespace armarx::armem::server::robot_state::proprioception
armarx::armem::server::robot_state::proprioception::RobotUnitReader::config
RobotUnitDataStreaming::Config config
Definition: RobotUnitReader.h:71
armarx::armem::server::robot_state::exteroception::ConverterInterface
Definition: ConverterInterface.h:21
armarx::armem::server::robot_state::proprioception::RobotUnitReader
Definition: RobotUnitReader.h:36
armarx::RobotUnitDataStreamingReceiverPtr
std::shared_ptr< class RobotUnitDataStreamingReceiver > RobotUnitDataStreamingReceiverPtr
Definition: RobotUnitReader.h:30
armarx::armem::server::robot_state::proprioception::RobotUnitReader::converterExteroception
exteroception::ConverterInterface * converterExteroception
Definition: RobotUnitReader.h:78
armarx::armem::server::robot_state::proprioception::RobotUnitReader::properties
Properties properties
Definition: RobotUnitReader.h:66
armarx::armem::server::robot_state::proprioception::RobotUnitReader::converterProprioception
proprioception::ConverterInterface * converterProprioception
Definition: RobotUnitReader.h:77
armarx::armem::server::robot_state::proprioception
Definition: forward_declarations.h:78
armarx::armem::server::robot_state::proprioception::RobotUnitReader::Properties::sensorPrefix
std::string sensorPrefix
Definition: RobotUnitReader.h:63
armarx::armem::server::robot_state::proprioception::Queue
boost::sync_queue< RobotUnitData > Queue
Definition: RobotUnitData.h:21
armarx::armem::server::robot_state::proprioception::RobotUnitReader::debugObserver
std::optional< DebugObserverHelper > debugObserver
Definition: RobotUnitReader.h:68
armarx::armem::server::robot_state::proprioception::RobotUnitReader::receiver
RobotUnitDataStreamingReceiverPtr receiver
Definition: RobotUnitReader.h:72
armarx::armem::server::robot_state::exteroception::ConverterRegistry
Definition: ConverterRegistry.h:12
armarx::plugins
This file is part of ArmarX.
Definition: DebugObserverComponentPlugin.cpp:27
RobotUnitData.h
armarx::armem::server::robot_state::proprioception::ConverterInterface
Definition: ConverterInterface.h:21
armarx::armem::server::robot_state::proprioception::ConverterRegistry
Definition: ConverterRegistry.h:12
armarx::armem::server::robot_state::proprioception::RobotUnitReader::fetchAndConvertLatestRobotUnitData
std::optional< RobotUnitData > fetchAndConvertLatestRobotUnitData()
Definition: RobotUnitReader.cpp:80
armarx::armem::server::robot_state::proprioception::RobotUnitReader::Properties
Definition: RobotUnitReader.h:61
armarx::armem::server::robot_state::proprioception::RobotUnitReader::exteroceptionConverterRegistry
exteroception::ConverterRegistry exteroceptionConverterRegistry
Definition: RobotUnitReader.h:76
TaskUtil.h
armarx::plugins::RobotUnitComponentPlugin
Definition: RobotUnitComponentPlugin.h:11
armarx::armem::server::robot_state::proprioception::RobotUnitReader::Queue
armarx::armem::server::robot_state::proprioception::Queue Queue
Definition: RobotUnitReader.h:41
armarx::armem::server::robot_state::proprioception::RobotUnitReader::RobotUnitReader
RobotUnitReader()
DebugObserverHelper.h
armarx::armem::server::robot_state::proprioception::RobotUnitReader::run
void run(float pollFrequency, Queue &dataBuffer)
Reads data from handler and fills dataQueue.
Definition: RobotUnitReader.cpp:49
armarx::armem::server::robot_state::proprioception::RobotUnitReader::connect
void connect(armarx::plugins::RobotUnitComponentPlugin &robotUnitPlugin, armarx::plugins::DebugObserverComponentPlugin &debugObserverPlugin, const std::string &robotTypeName)
Definition: RobotUnitReader.cpp:19
armarx::Logging
Base Class for all Logging classes.
Definition: Logging.h:239
armarx::armem::server::robot_state::proprioception::RobotUnitReader::task
armarx::SimpleRunningTask ::pointer_type task
Definition: RobotUnitReader.h:80
IceUtil::Handle
Definition: forward_declarations.h:30
armarx::armem::server::robot_state::proprioception::RobotUnitReader::description
RobotUnitDataStreaming::DataStreamingDescription description
Definition: RobotUnitReader.h:73
Logging.h
armarx::plugins::DebugObserverComponentPlugin
Brief description of class DebugObserverComponentPlugin.
Definition: DebugObserverComponentPlugin.h:46
armarx::armem::server::robot_state::proprioception::RobotUnitReader::proprioceptionConverterRegistry
ConverterRegistry proprioceptionConverterRegistry
Definition: RobotUnitReader.h:75
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
RobotUnitComponentPlugin.h