CollisionAvoidance.h
Go to the documentation of this file.
1 /**
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @author Jianfeng Gao ( jianfeng dot gao at kit dot edu )
17  * @date 2021
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
24 #include <VirtualRobot/VirtualRobot.h>
25 
27 
28 #include <armarx/control/common/control_law/aron/CollisionAvoidanceConfig.aron.generated.h>
31 #include <armarx/control/common/ft/aron/FTConfig.aron.generated.h>
32 
33 #include <simox/control/environment/DistanceResult.h>
34 #include <simox/control/robot/RobotInterface.h>
35 
37 {
38  namespace helper
39  {
40  /// helper functions
41  Eigen::Vector4f calculateTransitionWeights(float z1, float z2);
42  } // namespace helper
43 
44  namespace collision
45  {
46  void validateConfigData(const arondto::CollisionAvoidanceConfig& cfg);
47  }
48 
49  /*
50  * This class should be used for one kinematric chain / robot node set
51  */
53  {
54  public:
55  using SCRobot = ::simox::control::robot::RobotInterface;
56  using DistanceResult = ::simox::control::environment::DistanceResult;
57  using DistanceResults = std::vector<DistanceResult>;
58  using DynamicsModel = simox::control::dynamics::RBDLModel;
59  using FTConfig = common::ft::arondto::FTConfig;
60  using Config = common::control_law::arondto::CollisionAvoidanceConfig;
61  using CollisionRobotIndices = std::unordered_map<unsigned int, const simox::control::robot::NodeInterface*>;
62 
64  {
65  /// the distances and projected jacobians from the generateSelfCollisionTorque() method
66  /// are needed for the null space calculation
67  unsigned int node1 = 0;
68  unsigned int node2 = 0;
69  Eigen::MatrixXd jacobian;
70  float minDistance = -1.0f;
71 
72  // Debugging values
73  float repulsiveForce = -1.0f;
74  float localStiffness = -1.0f;
75  Eigen::VectorXf projectedJacT;
76  float distanceVelocity = -1.0f;
77  Eigen::Vector3f direction = Eigen::Vector3f::Zero();
78  Eigen::Vector3f point1 = Eigen::Vector3f::Zero();
79  Eigen::Vector3f point2 = Eigen::Vector3f::Zero();
80  float damping = -1.0f;
81  float projectedMass = -1.0f;
82  float desiredNSColl = -1.0f;
83 
84  // mapped back from joint space with projectedJac pinv
85  float projectedImpedanceForce = -1.0f;
86 
87  SelfCollisionData(unsigned int size) :
88  jacobian(Eigen::MatrixXd::Zero(3, size)),
89  projectedJacT(Eigen::VectorXf::Zero(size))
90  {
91  }
92 
93  inline void
95  {
96  node1 = 0;
97  node2 = 0;
98  jacobian.setZero();
99  projectedJacT.setZero();
100  direction.setZero();
101  point1.setZero();
102  point2.setZero();
103  minDistance = -1.0f;
104  repulsiveForce = -1.0f;
105  localStiffness = -1.0f;
106  distanceVelocity = -1.0f;
107  damping = -1.0f;
108  projectedMass = -1.0f;
109  desiredNSColl = -1.0f;
110  projectedImpedanceForce = -1.0f;
111  }
112  };
113 
115  {
116  /// for each joint, that has a limit, based on the config parameters:
117  /// jointRangeBufferZone
118  /// jointRangeBufferZone_z1
119  /// jointRangeBufferZone_z2
120  ///
121  /// the specific values depending on the joint range of each joint have to
122  /// be calculated (and stored, so the calculation is only done in the init)
123  std::string jointName = "";
124  bool isLimitless = false;
125  float qLimLow = 0.0f;
126  float qLimHigh = 0.0f;
127  float thresholdRange = 0.0f;
128  float qposThresholdLow = 0.0f; // unique for each joint in rep. torque function
129  float qposThresholdHigh = 0.0f;
130  /// null space parameters
131  float qposZ1Low = 0.0f;
132  float qposZ2Low = 0.0f;
133  float qposZ1High = 0.0f;
134  float qposZ2High = 0.0f;
135  Eigen::Vector4f jointLimitNullSpaceWeightsLow = Eigen::Vector4f::Zero();
136  Eigen::Vector4f jointLimitNullSpaceWeightsHigh = Eigen::Vector4f::Zero();
137  float desiredNSjointLim = 0.0f;
138  float repulsiveTorque = 0.0f;
139  float totalDamping = 0.0f;
140  };
141 
142  /// internal status of the controller, containing intermediate variables, mutable targets
144  {
145  public:
146  /// global pose
148  /// targets
149  Eigen::VectorXf desiredJointTorques;
150 
152 
153  Eigen::Vector3f dirErrorImp;
157 
158  /// intermediate torque results
159  Eigen::VectorXf impedanceJointTorque;
160  Eigen::VectorXf kdImpedanceTorque;
161  Eigen::VectorXf selfCollisionJointTorque;
162  Eigen::VectorXf jointLimitJointTorque;
163 
165  Eigen::VectorXf jointLimitTorqueFiltered;
166 
167  /// intermediate projected torques via null space matrices
168  Eigen::VectorXf projImpedanceJointTorque;
169  Eigen::VectorXf projSelfCollJointTorque;
170  Eigen::VectorXf projJointLimJointTorque;
171 
174 
175  /// intermediate null space matrices (self-collision and joint limit avoidance)
176  Eigen::MatrixXf selfCollNullSpace;
177  Eigen::MatrixXf jointLimNullSpace;
179 
180  Eigen::MatrixXf selfCollNullSpaceFiltered;
181  Eigen::MatrixXf jointLimNullSpaceFiltered;
182 
183  /// self-collision avoidance initialization parameters
185 
186  /// distance results
187  std::vector<SelfCollisionData> selfCollDataVec;
188 
189  /// self-collision avoidance null space intermediate results
190  float k1, k2, k3, k4;
191  Eigen::VectorXf normalizedJacT;
192  Eigen::MatrixXf tempNullSpaceMatrix;
193 
194  /// joint limit avoidance initialization parameters
195 
196  // TODO rename to jointLimitDataVec
197  std::vector<JointRangeBufferZoneData> jointLimitData;
198 
199  /// joint limit avoidance intermediate results
200  float jointVel;
202 
205 
206  float k1Lo, k2Lo, k3Lo, k4Lo;
207  float k1Hi, k2Hi, k3Hi, k4Hi;
208 
209  /// others
210  Eigen::MatrixXd inertia;
211  Eigen::MatrixXf inertiaInverse;
212 
213  /// time status
220 
221  /// collision pair info
222  unsigned int collisionPairsNum;
223  unsigned int activeCollPairsNum;
224 
225  void reset(const Config& c,
226  const unsigned int nDoF,
227  const unsigned int maxCollisionPairs,
228  VirtualRobot::RobotNodeSetPtr& rns);
229  void rtPreActivate(){};
230 
231  private:
232  void initJointLimtDataVec(const Config& c,
233  const unsigned int nDoF,
234  VirtualRobot::RobotNodeSetPtr& rns);
235  };
236 
237  CollisionAvoidanceController(const simox::control::robot::NodeSetInterface* nodeSet);
238 
240 
241  void run(const Config& c,
242  RtStatusForSafetyStrategy& robotStatus,
243  const DistanceResults& collisionPairs,
244  const CollisionRobotIndices& collisionRobotIndices,
245  DynamicsModel& dynamicsModel,
246  const Eigen::VectorXf& qpos,
247  const Eigen::VectorXf& qvelFiltered,
248  float torqueLimit);
249 
250  inline std::size_t
251  numNodes() const
252  {
253  return nodeSet->getSize();
254  }
255 
256  inline const simox::control::robot::NodeSetInterface&
257  getNodeSet() const
258  {
259  return *nodeSet;
260  }
261 
262  private:
263  const simox::control::robot::NodeSetInterface* nodeSet;
264  const Eigen::MatrixXf I;
265 
266  /// avoidance torque methods
267  void calculateSelfCollisionTorque(const Config& c,
268  RtStatusForSafetyStrategy& rtStatus,
269  const DistanceResults& collisionPairs,
270  const CollisionRobotIndices& collisionRobotIndices,
271  const Eigen::VectorXf& qvelFiltered) const;
272 
273  void calculateJointLimitTorque(const Config& c,
274  RtStatusForSafetyStrategy& rtStatus,
275  const Eigen::VectorXf& qpos,
276  const Eigen::VectorXf& qvelFiltered) const;
277 
278  /// caclulate null spaces
279  void calculateSelfCollisionNullspace(const Config& c, RtStatusForSafetyStrategy& rtStatus) const;
280  void calculateJointLimitNullspace(const Config& c,
281  RtStatusForSafetyStrategy& rtStatus,
282  const Eigen::VectorXf& qpos) const;
283  };
284 } // namespace armarx::control::common::control_law
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimitData
std::vector< JointRangeBufferZoneData > jointLimitData
joint limit avoidance initialization parameters
Definition: CollisionAvoidance.h:197
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::desiredNSColl
float desiredNSColl
Definition: CollisionAvoidance.h:82
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::inertia
Eigen::MatrixXd inertia
others
Definition: CollisionAvoidance.h:210
armarx::control::common::control_law::CollisionAvoidanceController::numNodes
std::size_t numNodes() const
Definition: CollisionAvoidance.h:251
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::impTorqueRatio
float impTorqueRatio
Definition: CollisionAvoidance.h:172
Eigen
Definition: Elements.h:32
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::collisionPairsNum
unsigned int collisionPairsNum
collision pair info
Definition: CollisionAvoidance.h:222
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::totalDamping
float totalDamping
Definition: CollisionAvoidance.h:139
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qLimHigh
float qLimHigh
Definition: CollisionAvoidance.h:126
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::dampingJointLim
float dampingJointLim
Definition: CollisionAvoidance.h:204
armarx::control::common::control_law::CollisionAvoidanceController::CollisionRobotIndices
std::unordered_map< unsigned int, const simox::control::robot::NodeInterface * > CollisionRobotIndices
Definition: CollisionAvoidance.h:61
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::jointName
std::string jointName
for each joint, that has a limit, based on the config parameters: jointRangeBufferZone jointRangeBuff...
Definition: CollisionAvoidance.h:123
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::tempNullSpaceMatrix
Eigen::MatrixXf tempNullSpaceMatrix
Definition: CollisionAvoidance.h:192
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::projectedImpedanceForce
float projectedImpedanceForce
Definition: CollisionAvoidance.h:85
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::clearValues
void clearValues()
Definition: CollisionAvoidance.h:94
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k4Hi
float k4Hi
Definition: CollisionAvoidance.h:207
armarx::control::common::control_law::CollisionAvoidanceController::getNodeSet
const simox::control::robot::NodeSetInterface & getNodeSet() const
Definition: CollisionAvoidance.h:257
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimitJointTorque
Eigen::VectorXf jointLimitJointTorque
Definition: CollisionAvoidance.h:162
armarx::control::common::control_law::CollisionAvoidanceController::DistanceResults
std::vector< DistanceResult > DistanceResults
Definition: CollisionAvoidance.h:57
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k2
float k2
Definition: CollisionAvoidance.h:190
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
common.h
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::localStiffness
float localStiffness
Definition: CollisionAvoidance.h:74
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::projImpedanceJointTorque
Eigen::VectorXf projImpedanceJointTorque
intermediate projected torques via null space matrices
Definition: CollisionAvoidance.h:168
armarx::control::common::control_law::CollisionAvoidanceController::FTConfig
common::ft::arondto::FTConfig FTConfig
Definition: CollisionAvoidance.h:59
armarx::control::common::control_law::collision::validateConfigData
void validateConfigData(const arondto::CollisionAvoidanceConfig &cfg)
Definition: CollisionAvoidance.cpp:979
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::dirErrorImp
Eigen::Vector3f dirErrorImp
Definition: CollisionAvoidance.h:153
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k4Lo
float k4Lo
Definition: CollisionAvoidance.h:206
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::repulsiveForce
float repulsiveForce
Definition: CollisionAvoidance.h:73
FTSensor.h
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::projectedJacT
Eigen::VectorXf projectedJacT
Definition: CollisionAvoidance.h:75
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::desiredJointTorques
Eigen::VectorXf desiredJointTorques
targets
Definition: CollisionAvoidance.h:149
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::projJointLimJointTorque
Eigen::VectorXf projJointLimJointTorque
Definition: CollisionAvoidance.h:170
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::node2
unsigned int node2
Definition: CollisionAvoidance.h:68
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::normalizedJacT
Eigen::VectorXf normalizedJacT
Definition: CollisionAvoidance.h:191
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollisionJointTorque
Eigen::VectorXf selfCollisionJointTorque
Definition: CollisionAvoidance.h:161
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qposZ1Low
float qposZ1Low
null space parameters
Definition: CollisionAvoidance.h:131
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::preFilterTime
double preFilterTime
Definition: CollisionAvoidance.h:215
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qposThresholdHigh
float qposThresholdHigh
Definition: CollisionAvoidance.h:129
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollNullSpace
Eigen::MatrixXf selfCollNullSpace
intermediate null space matrices (self-collision and joint limit avoidance)
Definition: CollisionAvoidance.h:176
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::direction
Eigen::Vector3f direction
Definition: CollisionAvoidance.h:77
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::projectedMass
float projectedMass
Definition: CollisionAvoidance.h:81
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::projSelfCollJointTorque
Eigen::VectorXf projSelfCollJointTorque
Definition: CollisionAvoidance.h:169
armarx::control::common::control_law::CollisionAvoidanceController::run
void run(const Config &c, RtStatusForSafetyStrategy &robotStatus, const DistanceResults &collisionPairs, const CollisionRobotIndices &collisionRobotIndices, DynamicsModel &dynamicsModel, const Eigen::VectorXf &qpos, const Eigen::VectorXf &qvelFiltered, float torqueLimit)
------------------------------— main rt-loop ---------------------------------------—
Definition: CollisionAvoidance.cpp:498
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::localStiffnessJointLim
float localStiffnessJointLim
Definition: CollisionAvoidance.h:203
armarx::control::common::control_law::CollisionAvoidanceController::SCRobot
::simox::control::robot::RobotInterface SCRobot
Definition: CollisionAvoidance.h:55
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::kdImpedanceTorque
Eigen::VectorXf kdImpedanceTorque
Definition: CollisionAvoidance.h:160
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k1Lo
float k1Lo
Definition: CollisionAvoidance.h:206
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:570
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::point1
Eigen::Vector3f point1
Definition: CollisionAvoidance.h:78
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::SelfCollisionData
SelfCollisionData(unsigned int size)
Definition: CollisionAvoidance.h:87
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::jointLimitNullSpaceWeightsHigh
Eigen::Vector4f jointLimitNullSpaceWeightsHigh
Definition: CollisionAvoidance.h:136
armarx::control::common::control_law::CollisionAvoidanceController::~CollisionAvoidanceController
~CollisionAvoidanceController()
Definition: CollisionAvoidance.cpp:30
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointInertia
float jointInertia
Definition: CollisionAvoidance.h:201
armarx::control::common::control_law::CollisionAvoidanceController::CollisionAvoidanceController
CollisionAvoidanceController(const simox::control::robot::NodeSetInterface *nodeSet)
Definition: CollisionAvoidance.cpp:21
armarx::control::common::control_law::CollisionAvoidanceController::DynamicsModel
simox::control::dynamics::RBDLModel DynamicsModel
Definition: CollisionAvoidance.h:58
armarx::control::common::control_law::CollisionAvoidanceController
Definition: CollisionAvoidance.h:52
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::repulsiveTorque
float repulsiveTorque
Definition: CollisionAvoidance.h:138
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::desiredNSjointLim
float desiredNSjointLim
Definition: CollisionAvoidance.h:137
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::collisionPairTime
double collisionPairTime
time status
Definition: CollisionAvoidance.h:214
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimitNullspaceTime
double jointLimitNullspaceTime
Definition: CollisionAvoidance.h:219
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::impedanceJointTorque
Eigen::VectorXf impedanceJointTorque
intermediate torque results
Definition: CollisionAvoidance.h:159
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::projTotalForceImpedance
float projTotalForceImpedance
Definition: CollisionAvoidance.h:156
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k2Hi
float k2Hi
Definition: CollisionAvoidance.h:207
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k2Lo
float k2Lo
Definition: CollisionAvoidance.h:206
armarx::control::common::control_law
This file is part of ArmarX.
Definition: aron_conversions.cpp:68
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollisionNullSpaceWeights
Eigen::Vector4f selfCollisionNullSpaceWeights
self-collision avoidance initialization parameters
Definition: CollisionAvoidance.h:184
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::totalForceImpedance
float totalForceImpedance
Definition: CollisionAvoidance.h:154
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qposThresholdLow
float qposThresholdLow
Definition: CollisionAvoidance.h:128
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::rtPreActivate
void rtPreActivate()
Definition: CollisionAvoidance.h:229
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::trackingError
float trackingError
Definition: CollisionAvoidance.h:151
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy
internal status of the controller, containing intermediate variables, mutable targets
Definition: CollisionAvoidance.h:143
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::distanceVelocity
float distanceVelocity
Definition: CollisionAvoidance.h:76
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::collisionTorqueTime
double collisionTorqueTime
Definition: CollisionAvoidance.h:216
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimitTorqueTime
double jointLimitTorqueTime
Definition: CollisionAvoidance.h:217
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::damping
float damping
Definition: CollisionAvoidance.h:80
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollisionTorqueFiltered
Eigen::VectorXf selfCollisionTorqueFiltered
Definition: CollisionAvoidance.h:164
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qposZ2Low
float qposZ2Low
Definition: CollisionAvoidance.h:132
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k1Hi
float k1Hi
Definition: CollisionAvoidance.h:207
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollNullspaceTime
double selfCollNullspaceTime
Definition: CollisionAvoidance.h:218
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k1
float k1
self-collision avoidance null space intermediate results
Definition: CollisionAvoidance.h:190
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::jacobian
Eigen::MatrixXd jacobian
Definition: CollisionAvoidance.h:69
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::globalPose
Eigen::Matrix4f globalPose
global pose
Definition: CollisionAvoidance.h:147
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::reset
void reset(const Config &c, const unsigned int nDoF, const unsigned int maxCollisionPairs, VirtualRobot::RobotNodeSetPtr &rns)
Definition: CollisionAvoidance.cpp:785
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollDataVec
std::vector< SelfCollisionData > selfCollDataVec
distance results
Definition: CollisionAvoidance.h:187
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimNullSpaceFiltered
Eigen::MatrixXf jointLimNullSpaceFiltered
Definition: CollisionAvoidance.h:181
armarx::control::common::control_law::CollisionAvoidanceController::Config
common::control_law::arondto::CollisionAvoidanceConfig Config
Definition: CollisionAvoidance.h:60
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::thresholdRange
float thresholdRange
Definition: CollisionAvoidance.h:127
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::impForceRatio
float impForceRatio
Definition: CollisionAvoidance.h:173
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qposZ1High
float qposZ1High
Definition: CollisionAvoidance.h:133
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::isLimitless
bool isLimitless
Definition: CollisionAvoidance.h:124
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimitTorqueFiltered
Eigen::VectorXf jointLimitTorqueFiltered
Definition: CollisionAvoidance.h:165
Eigen::Matrix< float, 6, 1 >
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::inertiaInverse
Eigen::MatrixXf inertiaInverse
Definition: CollisionAvoidance.h:211
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::projForceImpedance
Eigen::Vector6f projForceImpedance
Definition: CollisionAvoidance.h:155
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qposZ2High
float qposZ2High
Definition: CollisionAvoidance.h:134
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::point2
Eigen::Vector3f point2
Definition: CollisionAvoidance.h:79
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData
Definition: CollisionAvoidance.h:63
armarx::control::common::control_law::helper::calculateTransitionWeights
Eigen::Vector4f calculateTransitionWeights(float z1, float z2)
helper functions
Definition: CollisionAvoidance.cpp:471
EigenForwardDeclarations.h
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k3Lo
float k3Lo
Definition: CollisionAvoidance.h:206
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::desiredNullSpace
float desiredNullSpace
Definition: CollisionAvoidance.h:178
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::selfCollNullSpaceFiltered
Eigen::MatrixXf selfCollNullSpaceFiltered
Definition: CollisionAvoidance.h:180
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointLimNullSpace
Eigen::MatrixXf jointLimNullSpace
Definition: CollisionAvoidance.h:177
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k3Hi
float k3Hi
Definition: CollisionAvoidance.h:207
armarx::control::common::control_law::CollisionAvoidanceController::DistanceResult
::simox::control::environment::DistanceResult DistanceResult
Definition: CollisionAvoidance.h:56
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k4
float k4
Definition: CollisionAvoidance.h:190
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::minDistance
float minDistance
Definition: CollisionAvoidance.h:70
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::qLimLow
float qLimLow
Definition: CollisionAvoidance.h:125
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::activeCollPairsNum
unsigned int activeCollPairsNum
Definition: CollisionAvoidance.h:223
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData::jointLimitNullSpaceWeightsLow
Eigen::Vector4f jointLimitNullSpaceWeightsLow
Definition: CollisionAvoidance.h:135
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::k3
float k3
Definition: CollisionAvoidance.h:190
armarx::control::common::control_law::CollisionAvoidanceController::RtStatusForSafetyStrategy::jointVel
float jointVel
joint limit avoidance intermediate results
Definition: CollisionAvoidance.h:200
armarx::control::common::control_law::CollisionAvoidanceController::JointRangeBufferZoneData
Definition: CollisionAvoidance.h:114
armarx::control::common::control_law::CollisionAvoidanceController::SelfCollisionData::node1
unsigned int node1
the distances and projected jacobians from the generateSelfCollisionTorque() method are needed for th...
Definition: CollisionAvoidance.h:67