YARP
Yet Another Robot Platform
FrameTransformStorage.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: LGPL-2.1-or-later
4  */
5 
6 #ifndef YARP_DEV_FRAMETRANSFORMSTORAGE_H
7 #define YARP_DEV_FRAMETRANSFORMSTORAGE_H
8 
9 
10 #include <yarp/os/Network.h>
11 #include <yarp/os/PeriodicThread.h>
12 
13 #include <yarp/sig/Vector.h>
14 
17 #include <yarp/dev/PolyDriver.h>
18 #include <yarp/dev/WrapperSingle.h>
19 #include <mutex>
20 #include <map>
21 #include <mutex>
22 
40 {
41 protected:
43 
44 public:
45  FrameTransformStorage(double tperiod=0.010) : PeriodicThread (tperiod) {}
47 
48  //DeviceDriver
49  bool open(yarp::os::Searchable& config) override;
50  bool close() override;
51 
52  //IFrameTransformStorageSet interface
53  bool setTransforms(const std::vector<yarp::math::FrameTransform>& transforms) override;
54  bool setTransform(const yarp::math::FrameTransform& transform) override;
55 
56  //IFrameTransformStorageGet interface
57  bool getTransforms(std::vector<yarp::math::FrameTransform>& transforms) const override;
58 
59  //IFrameTransformStorageUtils interface
60  bool deleteTransform(std::string t1, std::string t2) override;
61  bool size(size_t& size) const override;
62  bool clearAll() override;
63  bool getInternalContainer(FrameTransformContainer*& container) override;
64  bool startStorageThread() override;
65  bool stopStorageThread() override;
66 
67  //wrapper and interfaces
68  bool attach(yarp::dev::PolyDriver* driver) override;
69  bool detach() override;
70 private:
71  mutable std::mutex m_pd_mutex;
72  yarp::dev::PolyDriver* pDriver = nullptr;
73  IFrameTransformStorageGet* iGetIf = nullptr;
74 
75  //periodicThread
76  void run() override;
77 };
78 
79 #endif // YARP_DEV_FRAMETRANSFORMSTORAGE_H
contains the definition of a Vector type
FrameTransformContainer: A class that contains a vector of frame transformations and exposes yarp::de...
frameTransformStorage: A class that keeps a FrameTransformContainer updated by receiving transformati...
bool close() override
Close the DeviceDriver.
FrameTransformStorage(double tperiod=0.010)
bool getInternalContainer(FrameTransformContainer *&container) override
bool attach(yarp::dev::PolyDriver *driver) override
Attach to another object.
bool open(yarp::os::Searchable &config) override
Open the DeviceDriver.
bool setTransform(const yarp::math::FrameTransform &transform) override
Save a frame transform in a storage.
FrameTransformContainer m_tf_container
bool getTransforms(std::vector< yarp::math::FrameTransform > &transforms) const override
Obtains all frame transforms saved in a storage.
bool deleteTransform(std::string t1, std::string t2) override
Delete a single transform in the storage.
bool detach() override
Detach the object (you must have first called attach).
bool clearAll() override
Delete all transforms in a storage.
bool setTransforms(const std::vector< yarp::math::FrameTransform > &transforms) override
Save some frame transforms in a storage.
bool size(size_t &size) const override
Interface implemented by all device drivers.
Definition: DeviceDriver.h:35
A container for a device driver.
Definition: PolyDriver.h:24
Helper interface for an object that can wrap/or "attach" to a single other device.
Definition: WrapperSingle.h:32
An abstraction for a periodic thread.
PeriodicThread(double period, ShouldUseSystemClock useSystemClock=ShouldUseSystemClock::No, PeriodicThreadClock clockAccuracy=PeriodicThreadClock::Relative)
Constructor.
A base class for nested structures that can be searched.
Definition: Searchable.h:66