Segment.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 // STD / STL
25 #include <optional>
26 #include <string>
27 #include <unordered_map>
28 
29 // Eigen
30 #include <Eigen/Geometry>
31 
32 // ArmarX
36 #include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h>
39 
41 {
43  {
45 
46  public:
48  virtual ~Segment() override;
49 
51  const std::string& prefix = "") override;
52 
53  void init() override;
54 
55  void onConnect();
56 
57 
58  RobotPoseMap getRobotGlobalPoses(const armem::Time& timestamp) const;
59  RobotPoseMap getRobotGlobalPosesLocking(const armem::Time& timestamp) const;
60 
61  RobotFramePoseMap getRobotFramePoses(const armem::Time& timestamp) const;
63 
66 
67 
68  private:
70 
71  PredictionResult predictLinear(const PredictionRequest& request);
72 
73  struct Properties
74  {
75  double predictionTimeWindow = 2;
76  };
77 
78  Properties properties;
79  };
80 
81 } // namespace armarx::armem::server::robot_state::localization
armarx::armem::PredictionRequest
Definition: Prediction.h:48
armarx::armem::server::segment::SpecializedCoreSegment
A base class for core segments.
Definition: SpecializedCoreSegment.h:19
armarx::armem::server::robot_state::localization::Segment::~Segment
virtual ~Segment() override
Definition: Segment.cpp:40
armarx::armem::server::MemoryToIceAdapter
Helps connecting a Memory server to the Ice interface.
Definition: MemoryToIceAdapter.h:19
forward_declarations.h
armarx::armem::server::robot_state::localization::Segment
Definition: Segment.h:42
armarx::armem::server::robot_state::localization::Segment::Segment
Segment(server::MemoryToIceAdapter &iceMemory)
Definition: Segment.cpp:32
armarx::armem::robot_state::localization::Transform
Definition: types.h:154
armarx::armem::server::robot_state::localization
Definition: forward_declarations.h:71
armarx::armem::PredictionResult
Definition: Prediction.h:57
armarx::armem::server::robot_state::localization::Segment::defineProperties
void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string &prefix="") override
Definition: Segment.cpp:45
forward_declarations.h
armarx::armem::server::robot_state::localization::Segment::onConnect
void onConnect()
Definition: Segment.cpp:66
armarx::armem::server::segment::detail::SegmentBase< server::wm::CoreSegment >
armarx::armem::server::robot_state::localization::Segment::getRobotGlobalPosesLocking
RobotPoseMap getRobotGlobalPosesLocking(const armem::Time &timestamp) const
Definition: Segment.cpp:108
armarx::armem::server::robot_state::localization::Segment::getRobotGlobalPoses
RobotPoseMap getRobotGlobalPoses(const armem::Time &timestamp) const
Definition: Segment.cpp:114
armarx::armem::EntityUpdate
An update of an entity for a specific point in time.
Definition: Commit.h:25
armarx::armem::server::robot_state::localization::Segment::commitTransformLocking
bool commitTransformLocking(const armem::robot_state::localization::Transform &transform)
Definition: Segment.cpp:155
types.h
armarx::armem::server::robot_state::localization::Segment::commitTransform
bool commitTransform(const armem::robot_state::localization::Transform &transform)
Definition: Segment.cpp:145
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:351
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::server::robot_state::localization::RobotPoseMap
std::unordered_map< std::string, Eigen::Isometry3f > RobotPoseMap
Definition: forward_declarations.h:73
armarx::armem::server::segment::detail::SegmentBase< server::wm::CoreSegment >::iceMemory
MemoryToIceAdapter & iceMemory
Definition: SpecializedSegment.h:58
armarx::armem::server::robot_state::localization::Segment::getRobotFramePosesLocking
RobotFramePoseMap getRobotFramePosesLocking(const armem::Time &timestamp) const
Definition: Segment.cpp:71
IceUtil::Handle< class PropertyDefinitionContainer >
SpecializedProviderSegment.h
armarx::armem::server::robot_state::localization::Segment::init
void init() override
Definition: Segment.cpp:56
armarx::armem::server::robot_state::localization::RobotFramePoseMap
std::unordered_map< std::string, std::vector< Eigen::Isometry3f > > RobotFramePoseMap
Definition: forward_declarations.h:74
SpecializedCoreSegment.h
armarx::armem::server::robot_state::localization::Segment::getRobotFramePoses
RobotFramePoseMap getRobotFramePoses(const armem::Time &timestamp) const
Definition: Segment.cpp:77