32#include <RobotAPI/interface/aron/Aron.h>
34#include <armarx/control/common/common.aron.generated.h>
36#include <armarx/control/common/coordination/aron/CoordinationConfig.aron.generated.h>
45 using Config = arondto::SyncModeConfig;
93 const bool rightAsLeader,
94 const bool followerIsolation);
95 void reset(
const Eigen::Matrix4f& desiredPose,
96 Eigen::Matrix4f& leftPose,
97 Eigen::Matrix4f& rightPose,
101 Eigen::Matrix4f& leftPose,
104 Eigen::Matrix4f& rightPose,
117 bool flagResetRt = false) override;
141 std::atomic_bool cfgBufferInitialized_{
false};
146 static void setObjPoseFromHandPoses(Eigen::Matrix4f& objPose,
147 const Eigen::Matrix4f& poseL,
148 const Eigen::Matrix4f& poseR);
150 void updateCurrentPose(Eigen::Matrix4f& leftPose, Eigen::Matrix4f& rightPose);
A simple triple buffer for lockfree comunication between a single writer and a single reader.
void reset(std::map< std::string, Eigen::Matrix4f > &initPose) override
~SyncCoordination() override=default
SyncCoordination(const ::armarx::aron::data::dto::DictPtr &dto)
void runRT(std::map< std::string, InputData > &input, double deltaT) override
void resetBufferUserCfgAfterMP()
std::recursive_mutex mtx_data_non_rt
TODO private?
TripleBuffer< Data > bufferDataRtToPublish
void updateNonRt() override
void rtPreActivate() final
void updateTargetPose(const Eigen::Matrix4f &targetPose)
void updateConfig(const ::armarx::aron::data::dto::DictPtr &dto, bool flagResetRt=false) override
arondto::SyncModeConfig Config
TripleBuffer< Config > bufferUserCfgToPublish
void commitNonRt() override
Matrix< float, 6, 1 > Vector6f
This file is part of ArmarX.
armarx::control::common::arondto::PoseFrameMode PoseFrameMode
This file offers overloads of toIce() and fromIce() functions for STL container types.
Eigen::VectorXf bimanualVel
Eigen::Vector6f virtualAcc
Eigen::Matrix4f virtualPose
Eigen::Vector3f tcp2ObjInMilliMeterR
void updateGraspMatrix(const bool leftAsLeader, const bool rightAsLeader, const bool followerIsolation)
Eigen::Vector6f deltaPosForWrenchControlR
Eigen::Vector6f deltaObjPose
Eigen::Matrix4f currentPose
Eigen::Matrix3f dOriInObjL
void resetGraspVariableLeft(const Eigen::Matrix4f &desiredPose, Eigen::Matrix4f &leftPose, PoseFrameMode leftPoseMode)
Eigen::Vector3f obj2TcpInMeterR
Eigen::MatrixXf graspMatrix
Eigen::MatrixXf pinvGraspMatrixT
double deltaT
Note: all positions in matrix4f poses are in milli-meter but in grasp matrix, it must be in meter.
Eigen::Vector6f deltaPosForWrenchControlL
Eigen::Vector6f currentVel
Eigen::Vector3f rvec
Temporal variables to avoid memory allocation.
Eigen::Vector6f currentFT
Eigen::Matrix3f dOriInTCPR
Eigen::Vector6f poseError
Eigen::Vector3f tcp2ObjInMilliMeterL
Eigen::Matrix4f targetPose
void resetGraspVariableRight(const Eigen::Matrix4f &desiredPose, Eigen::Matrix4f &rightPose, PoseFrameMode rightPoseMode)
Eigen::VectorXf bimanualFT
Eigen::Matrix3f dOriInTCPL
Eigen::Vector3f obj2TcpInMeterL
vectors represented in the object local frame
Eigen::Matrix3f dOriInObjR
Eigen::Vector6f virtualVel