ObjectCollisionAvoidance.h
Go to the documentation of this file.
1#pragma once
2
3#include <armarx/control/common/control_law/aron/ObjectCollisionAvoidanceConfig.aron.generated.h>
4
6
8
9{
10
13 {
14
15 public:
16 using Config = common::control_law::arondto::ObjectCollisionAvoidanceConfig;
17
18 ObjectCollisionAvoidanceController(const simox::control::robot::NodeSetInterface* nodeSet);
19
20 void run(const Config& c,
21 RtStatusForSafetyStrategy& robotStatus,
22 RecoveryState& rStateSelfColl,
23 RecoveryState& rStateObjColl,
24 const DistanceResults& collisionPairs,
25 const DistanceResults& externalCollisionPairs,
26 const CollisionRobotIndices& collisionRobotIndices,
27 DynamicsModel& dynamicsModel,
28 float torqueLimit,
29 float jointVelLimit,
30 TSCtrlRtStatus& rts);
31
34 RecoveryState& rState,
35 const DistanceResults& externalCollisionPairs,
36 const CollisionRobotIndices& collisionRobotIndices,
37 const Eigen::VectorXf& qvelFiltered,
38 double deltaT) const;
39
41 RtStatusForSafetyStrategy& rtStatus) const;
42
43 private:
44 std::vector<std::tuple<unsigned int,
45 std::reference_wrapper<Eigen::VectorXf>,
46 std::reference_wrapper<Eigen::MatrixXf>>>
47 controllerHierarchy; // priority, type, torque, nullspace
48
49 void sortHierarchy();
50 };
51
52
53} // 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
ObjectCollisionAvoidanceController(const simox::control::robot::NodeSetInterface *nodeSet)
common::control_law::arondto::ObjectCollisionAvoidanceConfig Config
void run(const Config &c, RtStatusForSafetyStrategy &robotStatus, RecoveryState &rStateSelfColl, RecoveryState &rStateObjColl, const DistanceResults &collisionPairs, const DistanceResults &externalCollisionPairs, const CollisionRobotIndices &collisionRobotIndices, DynamicsModel &dynamicsModel, float torqueLimit, float jointVelLimit, TSCtrlRtStatus &rts)
------------------------------— main rt-loop ---------------------------------------—
void calculateExternalCollisionTorque(const Config &c, RtStatusForSafetyStrategy &rts, RecoveryState &rState, const DistanceResults &externalCollisionPairs, const CollisionRobotIndices &collisionRobotIndices, const Eigen::VectorXf &qvelFiltered, double deltaT) const