42 static const std::string
LOGNAME =
"collision_check_thread";
51 : parameters_(parameters), planning_scene_monitor_(planning_scene_monitor)
77 double self_collision_distance = 0;
78 double scene_collision_distance = 0;
79 bool collision_detected;
84 double velocity_scale = 1;
92 if (!shared_variables.
paused)
94 shared_variables.lock();
95 sensor_msgs::JointState jts = shared_variables.
joints;
96 shared_variables.unlock();
98 for (std::size_t i = 0; i < jts.position.size(); ++i)
102 collision_detected =
false;
108 collision_result.
clear();
109 scene_ro->getCollisionWorld()->checkRobotCollision(collision_request, collision_result,
110 *scene_ro->getCollisionRobot(), current_state, acm);
112 scene_collision_distance = collision_result.
distance;
113 collision_detected |= collision_result.
collision;
115 collision_result.
clear();
116 scene_ro->getCollisionRobotUnpadded()->checkSelfCollision(collision_request, collision_result, current_state,
120 self_collision_distance = collision_result.
distance;
121 collision_detected |= collision_result.
collision;
125 if (collision_detected)
140 std::min(velocity_scale,
exp(scene_velocity_scale_coefficient *
147 std::min(velocity_scale,
exp(self_velocity_scale_coefficient *
151 shared_variables.lock();
153 shared_variables.unlock();
156 collision_rate.
sleep();
void setJointPositions(const std::string &joint_name, const double *position)
void startMainLoop(moveit_jog_arm::JogArmShared &shared_variables)
std::atomic< bool > stop_requested
planning_scene_monitor::PlanningSceneMonitorPtr planning_scene_monitor_
INLINE Rall1d< T, V, S > log(const Rall1d< T, V, S > &arg)
static const std::string LOGNAME
std::atomic< bool > paused
EIGEN_MAKE_ALIGNED_OPERATOR_NEW void clear()
sensor_msgs::JointState joints
double collision_check_rate
#define ROS_WARN_STREAM_THROTTLE_NAMED(period, name, args)
const moveit_jog_arm::JogArmParameters parameters_
double scene_collision_proximity_threshold
CollisionCheckThread(const moveit_jog_arm::JogArmParameters ¶meters, const planning_scene_monitor::PlanningSceneMonitorPtr &planning_scene_monitor)
Constructor.
double collision_velocity_scale
INLINE Rall1d< T, V, S > exp(const Rall1d< T, V, S > &arg)
planning_scene_monitor::LockedPlanningSceneRO getLockedPlanningSceneRO() const
std::string move_group_name
void updateCollisionBodyTransforms()
double self_collision_proximity_threshold
static const double MIN_RECOMMENDED_COLLISION_RATE