ObjectCollisionAvoidanceVel.h
Go to the documentation of this file.
1#pragma once
2
3#include <armarx/control/common/control_law/aron/ObjectCollisionAvoidanceVelConfig.aron.generated.h>
4
6
8
9{
10
13 {
14
15 public:
16 using Config = common::control_law::arondto::ObjectCollisionAvoidanceVelConfig;
17
19 const simox::control::robot::NodeSetInterface* nodeSet);
20
21 void run(const Config& c,
22 RtStatusForSafetyStrategy& robotStatus,
23 RecoveryState& rStateSelfColl,
24 RecoveryState& rStateObjColl,
25 const DistanceResults& collisionPairs,
26 const DistanceResults& externalCollisionPairs,
27 const CollisionRobotIndices& collisionRobotIndices,
28 DynamicsModel& dynamicsModel,
29 const Eigen::VectorXf& qpos,
30 const Eigen::VectorXf& qvelFiltered,
31 float velocityLimit,
32 double deltaT);
33
36 RecoveryState& rState,
37 const DistanceResults& externalCollisionPairs,
38 const CollisionRobotIndices& collisionRobotIndices,
39 const Eigen::VectorXf& qvelFiltered,
40 double deltaT) const;
41
43 RtStatusForSafetyStrategy& rtStatus) const;
44
45 private:
46 std::vector<std::tuple<unsigned int,
47 std::reference_wrapper<Eigen::VectorXf>,
48 std::reference_wrapper<Eigen::MatrixXf>>>
49 controllerHierarchy; // priority, type, torque, nullspace
50
51 void sortHierarchy();
52 };
53
54
55} // namespace armarx::control::common::control_law
constexpr T c
internal status of the controller, containing intermediate variables, mutable targets
std::unordered_map< unsigned int, const simox::control::robot::NodeInterface * > CollisionRobotIndices
void calculateObjectCollisionNullspace(const Config &c, RtStatusForSafetyStrategy &rtStatus) const
ObjectCollisionAvoidanceVelController(const simox::control::robot::NodeSetInterface *nodeSet)
void run(const Config &c, RtStatusForSafetyStrategy &robotStatus, RecoveryState &rStateSelfColl, RecoveryState &rStateObjColl, const DistanceResults &collisionPairs, const DistanceResults &externalCollisionPairs, const CollisionRobotIndices &collisionRobotIndices, DynamicsModel &dynamicsModel, const Eigen::VectorXf &qpos, const Eigen::VectorXf &qvelFiltered, float velocityLimit, double deltaT)
------------------------------— main rt-loop ---------------------------------------—
common::control_law::arondto::ObjectCollisionAvoidanceVelConfig Config
void calculateExternalCollisionVel(const Config &c, RtStatusForSafetyStrategy &rts, RecoveryState &rState, const DistanceResults &externalCollisionPairs, const CollisionRobotIndices &collisionRobotIndices, const Eigen::VectorXf &qvelFiltered, double deltaT) const