127 virtual public RobotIKInterface
159 NameValueMap computeIKFramedPose(
const std::string& robotNodeSetName,
160 const FramedPoseBasePtr& tcpPose,
161 armarx::CartesianSelection cs,
162 const Ice::Current& = Ice::emptyCurrent)
override;
176 NameValueMap computeIKGlobalPose(
const std::string& robotNodeSetName,
177 const PoseBasePtr& tcpPose,
178 armarx::CartesianSelection cs,
179 const Ice::Current& = Ice::emptyCurrent)
override;
194 computeExtendedIKGlobalPose(
const std::string& robotNodeSetName,
195 const PoseBasePtr& tcpPose,
196 armarx::CartesianSelection cs,
197 const Ice::Current& = Ice::emptyCurrent)
override;
210 NameValueMap computeCoMIK(
const std::string& robotNodeSetJoints,
211 const CoMIKDescriptor& desc,
212 const Ice::Current& = Ice::emptyCurrent)
override;
237 NameValueMap computeHierarchicalDeltaIK(
const std::string& robotNodeSet,
238 const IKTasks& iktasks,
239 const CoMIKDescriptor& comIK,
241 bool avoidJointLimits,
242 bool enableCenterOfMass,
243 const Ice::Current& = Ice::emptyCurrent)
override;
265 bool createReachabilitySpace(
const std::string& chainName,
266 const std::string& coordinateSystem,
267 float stepTranslation,
269 const WorkspaceBounds& minBounds,
270 const WorkspaceBounds& maxBounds,
272 const Ice::Current& = Ice::emptyCurrent)
override;
285 bool defineRobotNodeSet(
const std::string& name,
286 const NodeNameList& nodes,
287 const std::string& tcpName,
288 const std::string& rootNode,
289 const Ice::Current& = Ice::emptyCurrent)
override;
298 bool hasReachabilitySpace(
const std::string& chainName,
299 const Ice::Current& = Ice::emptyCurrent)
const override;
315 bool isFramedPoseReachable(
const std::string& chainName,
316 const FramedPoseBasePtr& tcpPose,
317 const Ice::Current& = Ice::emptyCurrent)
const override;
332 bool isPoseReachable(
const std::string& chainName,
333 const PoseBasePtr& tcpPose,
334 const Ice::Current& = Ice::emptyCurrent)
const override;
346 bool loadReachabilitySpace(
const std::string& filename,
347 const Ice::Current& = Ice::emptyCurrent)
override;
358 bool saveReachabilitySpace(
const std::string& robotNodeSet,
359 const std::string& filename,
360 const Ice::Current& = Ice::emptyCurrent)
const override;
368 void onInitComponent()
override;
369 void onConnectComponent()
override;
370 void onDisconnectComponent()
override;
373 bool solveIK(
const Eigen::Matrix4f& tcpPose,
374 armarx::CartesianSelection cs,
375 VirtualRobot::RobotNodeSetPtr nodeSet);
376 void computeIK(
const std::string& robotNodeSetName,
377 const Eigen::Matrix4f& tcpPose,
378 armarx::CartesianSelection cs,
379 NameValueMap& iksolution);
381 void computeIK(VirtualRobot::RobotNodeSetPtr nodeSet,
382 const Eigen::Matrix4f& tcpPose,
383 armarx::CartesianSelection cs,
384 NameValueMap& iksolution);
386 void computeIK(
const std::string& robotNodeSetName,
387 const Eigen::Matrix4f& tcpPose,
388 armarx::CartesianSelection cs,
389 ExtendedIKResult& iksolution);
391 void computeIK(VirtualRobot::RobotNodeSetPtr nodeSet,
392 const Eigen::Matrix4f& tcpPose,
393 armarx::CartesianSelection cs,
394 ExtendedIKResult& iksolution);
396 Eigen::Matrix4f toGlobalPose(
const FramedPoseBasePtr& tcpPose)
const;
397 Eigen::Matrix4f toReachabilityMapFrame(
const FramedPoseBasePtr& tcpPose,
398 const std::string& chainName)
const;
400 bool isReachable(
const std::string& setName,
const Eigen::Matrix4f& tcpPose)
const;
402 VirtualRobot::IKSolver::CartesianSelection
403 convertCartesianSelection(armarx::CartesianSelection cs)
const;
405 VirtualRobot::JacobiProvider::InverseJacobiMethod
406 convertInverseJacobiMethod(armarx::InverseJacobiMethod aenum)
const;
408 void synchRobot()
const;
413 mutable std::recursive_mutex _modifyRobotModelMutex;
416 mutable std::recursive_mutex _editRobotNodeSetsMutex;
418 mutable std::recursive_mutex _accessReachabilityCacheMutex;
421 std::string _robotFile;
427 using ReachabilityCacheType =
428 std::map<std::string, VirtualRobot::WorkspaceRepresentationPtr>;
429 ReachabilityCacheType _reachabilities;