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>
12
13#include <yarp/sig/Vector.h>
14
17#include <yarp/dev/PolyDriver.h>
19#include <mutex>
20#include <map>
21#include <mutex>
22
40{
41protected:
43
44public:
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;
70private:
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:30
A container for a device driver.
Definition: PolyDriver.h:23
Helper interface for an object that can wrap/or "attach" to a single other device.
Definition: WrapperSingle.h:31
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:63