Skip to content

Commit b095ce2

Browse files
committed
SingleBallPlacementStates::CONTACT_BALLの終了条件にボールセンサを組み込み
1 parent 8176b14 commit b095ce2

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

crane_robot_skills/src/single_ball_placement.cpp

+20-2
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,26 @@ SingleBallPlacement::SingleBallPlacement(RobotCommandWrapperBase::SharedPtr & ba
272272
});
273273

274274
addTransition(
275-
SingleBallPlacementStates::CONTACT_BALL, SingleBallPlacementStates::MOVE_TO_TARGET,
276-
[this]() { return robot()->getDistance(world_model()->ball.pos) < 0.15; });
275+
SingleBallPlacementStates::CONTACT_BALL, SingleBallPlacementStates::MOVE_TO_TARGET, [this]() {
276+
auto now = rclcpp::Clock(RCL_ROS_TIME).now();
277+
static int count = 0;
278+
if (now.get_clock_type() == robot()->ball_sensor_stamp.get_clock_type()) {
279+
if (std::abs((now - robot()->ball_sensor_stamp).seconds()) < 0.01 && robot()->ball_sensor) {
280+
if (++count > 10) {
281+
count = 0;
282+
return true;
283+
} else {
284+
return false;
285+
}
286+
} else {
287+
count = 0;
288+
return false;
289+
}
290+
} else {
291+
// ボールセンサが動いていないとき
292+
return robot()->getDistance(world_model()->ball.pos) < 0.15;
293+
}
294+
});
277295

278296
addStateFunction(SingleBallPlacementStates::MOVE_TO_TARGET, [this]() {
279297
SvgTextBuilder text_builder;

0 commit comments

Comments
 (0)