fix(touch): detect stopped speedL controller during touch
This commit is contained in:
parent
d51ceab46e
commit
7df07fba56
@ -1577,6 +1577,22 @@ bool TouchScreenTask::stepTouching() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// A successful speedL submission does not report later worker failures.
|
||||
// With duration=0 the controller must stay active until we request a stop
|
||||
// or retract; otherwise waiting for contact/distance can continue forever.
|
||||
if (!arm_->busy()) {
|
||||
const double elapsed =
|
||||
std::chrono::duration<double>(Clock::now() - phase_start_time_).count();
|
||||
CMVR_LOG(ERROR) << "[TouchScreenTask][TOUCHING] speedL controller became idle before contact"
|
||||
<< ", elapsed_s=" << elapsed
|
||||
<< ", fz_N=" << last_touch_resultant_fz_
|
||||
<< ", criterion_value_N=" << last_touch_pressure_sum_
|
||||
<< ", threshold_N=" << config_.touch().tactile().force_threshold()
|
||||
<< "; check preceding CartesianVelocityController/planner errors";
|
||||
enterFailed(Status::ROBOT_COMMAND_FAILED);
|
||||
return false;
|
||||
}
|
||||
|
||||
const double speed_l_max_distance_m = config_.touch().speed_l().max_distance_m();
|
||||
if (speed_l_max_distance_m > 0.0) {
|
||||
if (!touch_start_position_valid_) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user