RobotWriter.h
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  * @author Fabian Reister ( fabian dot reister at kit dot edu )
17  * @date 2021
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
24 #include <mutex>
25 #include <optional>
26 
34 
36 {
37  /**
38  * @brief The RobotReader class.
39  *
40  * The purpose of this class is to synchronize the armem data structure armem::Robot
41  * with the memory.
42  */
43  class RobotWriter : virtual public robot::WriterInterface
44  {
45  public:
46  RobotWriter() = default;
47  RobotWriter(const RobotWriter&);
48  ~RobotWriter() override;
49 
50  void connect(armem::client::MemoryNameSystem& memoryNameSystem);
52 
53 
54  [[nodiscard]] bool
55  storeDescription(const robot::RobotDescription& description,
56  const armem::Time& timestamp = armem::Time::Invalid()) override;
57 
58 
59  [[nodiscard]] bool storeState(const robot::RobotState& state,
60  const std::string& robotTypeName,
61  const std::string& robotName,
62  const std::string& robotRootNodeName) override;
63 
64 
65  [[nodiscard]] bool storeLocalization(const Eigen::Matrix4f& globalRootPose,
66  const std::string& robotName,
67  const std::string& robotRootNodeName,
68  const armem::Time& timestamp);
69 
70  [[nodiscard]] bool storeProprioception(const std::map<std::string, float>& jointMap,
71  const std::string& robotTypeName,
72  const std::string& robotName,
73  const armem::Time& timestamp);
74 
75  struct Properties
76  {
77 
78  } properties;
79 
80  const std::string propertyPrefix = "mem.robot_state.";
81 
82  mutable std::mutex memoryWriterMutex;
84  };
85 
86 } // namespace armarx::armem::robot_state
armarx::armem::robot_state::RobotWriter::propertyPrefix
const std::string propertyPrefix
Definition: RobotWriter.h:80
Reader.h
Writer.h
TransformReader.h
armarx::armem::robot_state::RobotWriter
The RobotReader class.
Definition: RobotWriter.h:43
armarx::armem::robot_state::RobotWriter::storeLocalization
bool storeLocalization(const Eigen::Matrix4f &globalRootPose, const std::string &robotName, const std::string &robotRootNodeName, const armem::Time &timestamp)
Definition: RobotWriter.cpp:102
interfaces.h
armarx::armem::robot_state
Definition: RobotStatePredictionClient.cpp:42
armarx::armem::robot_state::constants::robotRootNodeName
const std::string robotRootNodeName
Definition: constants.h:36
armarx::armem::robot_state::RobotWriter::storeDescription
bool storeDescription(const robot::RobotDescription &description, const armem::Time &timestamp=armem::Time::Invalid()) override
Definition: RobotWriter.cpp:68
armarx::armem::robot_state::RobotWriter::properties
struct armarx::armem::robot_state::RobotWriter::Properties properties
armarx::armem::robot::RobotState
Definition: types.h:54
armarx::armem::robot::RobotDescription
Definition: types.h:17
armarx::armem::robot_state::RobotWriter::memoryWriter
armem::client::Writer memoryWriter
Definition: RobotWriter.h:83
armarx::armem::robot_state::RobotWriter::storeProprioception
bool storeProprioception(const std::map< std::string, float > &jointMap, const std::string &robotTypeName, const std::string &robotName, const armem::Time &timestamp)
Definition: RobotWriter.cpp:146
armarx::armem::robot_state::RobotWriter::Properties
Definition: RobotWriter.h:75
armarx::armem::robot_state::RobotWriter::connect
void connect(armem::client::MemoryNameSystem &memoryNameSystem)
Definition: RobotWriter.cpp:50
armarx::armem::client::Writer
Helps a memory client sending data to a memory.
Definition: Writer.h:22
armarx::armem::robot::WriterInterface
Definition: interfaces.h:21
armarx::armem::robot_state::RobotWriter::RobotWriter
RobotWriter()=default
armarx::armem::robot_state::RobotWriter::~RobotWriter
~RobotWriter() override
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:601
armarx::armem::robot_state::RobotWriter::memoryWriterMutex
std::mutex memoryWriterMutex
Definition: RobotWriter.h:82
IceUtil::Handle< class PropertyDefinitionContainer >
types.h
Time.h
armarx::armem::client::MemoryNameSystem
The memory name system (MNS) client.
Definition: MemoryNameSystem.h:69
MemoryNameSystem.h
armarx::armem::robot_state::RobotWriter::registerPropertyDefinitions
void registerPropertyDefinitions(::armarx::PropertyDefinitionsPtr &def)
Definition: RobotWriter.cpp:45
armarx::core::time::DateTime::Invalid
static DateTime Invalid()
Definition: DateTime.cpp:60
armarx::armem::robot_state::RobotWriter::storeState
bool storeState(const robot::RobotState &state, const std::string &robotTypeName, const std::string &robotName, const std::string &robotRootNodeName) override
Definition: RobotWriter.cpp:180