26#include <VirtualRobot/Robot.h>
28#include <simox/control/dynamics/RBDLModel.h>
29#include <simox/control/environment/CollisionRobotInterface.h>
30#include <simox/control/environment/fwd.h>
31#include <simox/control/impl/simox/robot/Robot.h>
32#include <simox/control/robot/RobotInterface.h>
37#include <armarx/control/common/control_law/aron/ObjectCollisionAvoidanceVelConfig.aron.generated.h>
42 namespace law = armarx::control::common::control_law;
59 using SCRobot = law::CollisionAvoidanceVelController::SCRobot;
62 using CtrlConfig = law::arondto::ObjectCollisionAvoidanceVelConfig;
63 using Config = law::arondto::ObjectCollisionAvoidanceVelConfigDict;
64 using RtStatus = law::CollisionAvoidanceVelController::RtStatusForSafetyStrategy;
65 using RecoveryState = law::CollisionAvoidanceVelController::RecoveryState;
74 VirtualRobot::RobotNodeSetPtr
rtRNS;
93 const std::string& robotNodeSetName,
106 const Eigen::VectorXf& qpos,
107 const Eigen::VectorXf& qvelFiltered,
109 const Eigen::VectorXf& trajFollowJointVel,
151 simox::control::environment::CompDistArgs{.nearestPoints =
true,
152 .individualColObjects =
true};
157 float preFilterDistance = 0.6;
160 const bool reduceModel =
false;
162 simox::control::environment::CompDistArgs selfColAvoidanceArgs;
165 std::vector<hpp::fcl::CollisionObject> rtCollisionObjects;
166 VirtualRobot::RobotNodeSetPtr rtRobotNodeSet;
A simple triple buffer for lockfree comunication between a single writer and a single reader.
std::vector< std::string > actuatedJointNames
const simox::control::environment::CompDistArgs compDistArgs
!
Eigen::Matrix< double, 4, 4 > globalPose
DistanceResults userExternalCollisionPairs
simox::control::dynamics::RBDLModel DynamicsModel
law::CollisionAvoidanceVelController::CollisionRobotIndices CollisionRobotIndices
std::vector< unsigned int > translationJointIndex
std::unique_ptr< CollisionRobot > collisionRobot
armarx::TripleBuffer< Config > bufferCfgUserToRT
DistanceResults collisionPairs
void deleteUserCollisionObjects()
Eigen::VectorXd qposActuatedJoints
law::CollisionAvoidanceVelController::RecoveryState RecoveryState
law::arondto::ObjectCollisionAvoidanceVelConfigDict Config
virtual void rtCollisionChecking()
simox::control::environment::CollisionRobotInterface CollisionRobot
law::CollisionAvoidanceVelController::RtStatusForSafetyStrategy RtStatus
std::vector< hpp::fcl::CollisionObject > userCollisionObjects
DistanceResults externalCollisionPairs
law::arondto::ObjectCollisionAvoidanceVelConfig CtrlConfig
std::unique_ptr< SCRobot > scRobot
void updateUserCollisionObjects(const std::vector< hpp::fcl::CollisionObject > &)
law::CollisionAvoidanceVelController::DistanceResults DistanceResults
virtual ~ObjectCollisionAvoidanceVelBase()
void setUserCfg(const Config &cfg)
ObjectCollisionAvoidanceVelBase(const VirtualRobot::RobotPtr &rtRobot, const Config &cfg)
void validateConfigData(const Config &cfg)
armarx::TripleBuffer< std::tuple< DistanceResults, std::vector< hpp::fcl::CollisionObject > > > bufferCollisionObjectsUserToRt
void updateRtConfigFromUser()
VirtualRobot::RobotNodeSetPtr scRobotNodeSet
void updateRtCollisionObjects()
law::CollisionAvoidanceVelController::SCRobot SCRobot
void rtLimbControllerRun(const std::string &robotNodeSetName, const Eigen::VectorXf &qpos, const Eigen::VectorXf &qvelFiltered, float velocityLimit, const Eigen::VectorXf &trajFollowJointVel, double deltaT)
std::map< std::string, NodeSetData > collLimb
std::shared_ptr< class Robot > RobotPtr
This file is part of ArmarX.
This file is part of ArmarX.
std::shared_ptr< ObjectCollisionAvoidanceVelBase > ObjectCollisionAvoidanceVelBasePtr
armarx::TripleBuffer< RecoveryState > bufferRecoveryStateSelfColl
CollisionRobotIndices collisionRobotIndices
RecoveryState recoveryStateObjColl
VirtualRobot::RobotNodeSetPtr rtRNS
!!!!!!! Note that, all the data below should only be accessed in rt thread !!!!!!!
std::unique_ptr< DynamicsModel > dynamicsModel
self-collision avoidance
RecoveryState recoveryStateSelfColl
recovery strategy
armarx::TripleBuffer< RtStatus > bufferRTtoPublish
void reset(const Config &c)
const DistanceResults & collisionPairs
NodeSetData(const VirtualRobot::RobotPtr &rtRobot, const std::string &robotNodeSetName, const SCRobot &scRobot, const DistanceResults &collisionPairs, const Config &c)