28#include <armarx/control/njoint_mp_controller/task_space/ControllerInterface.h>
32 using namespace armarx::control::njoint_controller::task_space;
33 using namespace armarx::control::common;
62 std::vector<mp::MP::MPConfig>
mpList;
80 virtual public NJointKVILImpedanceMPControllerInterface
83 using AronDTO = arondto::KVILImpedanceMPConfig;
87 const NJointControllerConfigPtr& config,
90 std::string
getClassName(
const Ice::Current&)
const override;
91 void updateConfig(const ::armarx::aron::data::dto::DictPtr& dto,
92 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
94 getConfig(
const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
102 const Eigen::Vector3f& curve_vec_,
103 const Ice::Current&)
override;
107 std::map<std::string, ConstraintPtr> constraints;
108 int n_constraints = 0;
110 struct NonlinearManifoldInfoStruct
112 Eigen::Vector3f pm_proj_point;
113 float pm_proj_point_to_mean_distance = 100.0f;
114 Eigen::Vector3f pm_tangent_vec;
119 Eigen::Vector3f curve_kpt_position;
A simple triple buffer for lockfree comunication between a single writer and a single reader.
NJointKeypointsImpedanceController(const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
void additionalTask() override
NJointKVILImpedanceMPController(const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
void setCurveProjection(const Eigen::Vector3f &curve_proj_point_, float proj_value_, const Eigen::Vector3f &curve_vec_, const Ice::Current &) override
TripleBuffer< BO > bufferUserToAdditionalTask
void configureConstraints(const ConstraintList &c)
::armarx::aron::data::dto::DictPtr getConfig(const Ice::Current &iceCurrent=Ice::emptyCurrent) override
Eigen::Vector3f getCurveKeypointPosition(const Ice::Current &) override
TripleBuffer< BO > bufferUserToRt
void updateConfig(const ::armarx::aron::data::dto::DictPtr &dto, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
TripleBuffer< BO > bufferAdditionalTaskToUser
arondto::KVILImpedanceMPConfig AronDTO
std::string getClassName(const Ice::Current &) const override
void rtPreActivateController() override
This function is called before the controller is activated.
std::shared_ptr< class Robot > RobotPtr
::IceInternal::Handle< Dict > DictPtr
This file is part of ArmarX.
std::shared_ptr< Constraint1 > ConstraintPtr
std::vector< Constraint1 > ConstraintList
IceUtil::Handle< class RobotUnit > RobotUnitPtr
you can set the following values from outside of the rt controller via Ice interfaces
Eigen::Vector3f pm_init_tangent_vec
Eigen::Vector3f pm_init_proj_point
Eigen::MatrixXf density_mu
Eigen::Vector3f localFrameOrigin
Eigen::Matrix3f localFrameRotMat
Eigen::Matrix3f pcaComponents
Eigen::VectorXf density_weights
std::vector< Constraint1 > constraintList
std::vector< mp::MP::MPConfig > mpList