CoordinationCore.h
Go to the documentation of this file.
1#pragma once
2
3#include <atomic>
4#include <map>
5#include <string>
6#include <vector>
7
8#include <Eigen/Core>
9// #include <VirtualRobot/VirtualRobot.h>
10
12#include <RobotAPI/interface/aron/Aron.h>
13
14#include <armarx/control/common/common.aron.generated.h>
15
17{
18 using PoseFrameMode = armarx::control::common::arondto::PoseFrameMode;
19
20 struct InputData
21 {
22 Eigen::Matrix4f targetPose;
24 Eigen::Matrix4f pose;
28
29 InputData(const Eigen::Matrix4f& targetPose,
31 const Eigen::Matrix4f& pose,
32 const Eigen::Vector6f& vel,
33 const Eigen::Vector6f& ft,
37 pose(pose),
38 vel(vel),
39 ft(ft),
41 {
42 }
43 };
44
46 {
47 public:
48 virtual ~Coordination() = default;
49 virtual void rtPreActivate() = 0;
50 virtual void reset(std::map<std::string, Eigen::Matrix4f>& initPose) = 0;
51 virtual void runRT(std::map<std::string, InputData>& input, double deltaT) = 0;
52 virtual void updateNonRt() = 0;
53 virtual void commitNonRt() = 0;
54 virtual void updateConfig(const ::armarx::aron::data::dto::DictPtr& dto,
55 bool flagResetRt = false) = 0;
56
57 bool isInitialized();
58 const std::vector<std::string>& getNodesetList();
59 void setNodesetList(const std::string& nodesetLeft, const std::string& nodesetRight);
60 std::string& getLeftNodesetName();
61 std::string& getRightNodesetName();
62
63 protected:
64 std::atomic_bool initialized_{false};
65
66 private:
67 std::vector<std::string> nodesetList_;
68 std::string nodesetLeft_;
69 std::string nodesetRight_;
70 };
71
72} // namespace armarx::control::common::coordination
virtual void reset(std::map< std::string, Eigen::Matrix4f > &initPose)=0
virtual void updateConfig(const ::armarx::aron::data::dto::DictPtr &dto, bool flagResetRt=false)=0
virtual void runRT(std::map< std::string, InputData > &input, double deltaT)=0
const std::vector< std::string > & getNodesetList()
void setNodesetList(const std::string &nodesetLeft, const std::string &nodesetRight)
Matrix< float, 6, 1 > Vector6f
armarx::control::common::arondto::PoseFrameMode PoseFrameMode
InputData(const Eigen::Matrix4f &targetPose, const PoseFrameMode targetPoseMode, const Eigen::Matrix4f &pose, const Eigen::Vector6f &vel, const Eigen::Vector6f &ft, const Eigen::Vector6f &stiffness)