File tree 1 file changed +11
-2
lines changed
1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -139,7 +139,7 @@ Kick::Kick(RobotCommandWrapperBase::SharedPtr & base)
139
139
visualizer->add (text_builder.getSvgString ());
140
140
}
141
141
command.setTargetPosition (ball_pos + (ball_pos - target).normalized () * 0.3 )
142
- .lookAtFrom (target, ball_pos)
142
+ .lookAt ( ball_pos)
143
143
.setTerminalVelocity (0.3 );
144
144
return Status::RUNNING;
145
145
} else {
@@ -168,13 +168,22 @@ Kick::Kick(RobotCommandWrapperBase::SharedPtr & base)
168
168
getAngle (target - robot ()->pose .pos ))) *
169
169
ratio;
170
170
Vector2 move_vec = getNormVec (move_direction);
171
- command.lookAtFrom (target, ball_pos)
171
+ command.lookAt ( ball_pos)
172
172
.setDribblerTargetPosition (
173
173
robot ()->pose .pos + move_vec * 0.3 + world_model ()->ball .vel * 0.4 )
174
174
// .setTerminalVelocity(world_model()->ball.vel.norm())
175
175
.disableCollisionAvoidance ()
176
176
.disableBallAvoidance ();
177
177
178
+ double current_target_angle = getAngle (ball_pos - robot ()->pose .pos );
179
+ double final_target_angle = getAngle (target - ball_pos);
180
+ using boost::math::constants::degree;
181
+ // しきい値以下ならキック方向の精度を高めるために最終方向を向く
182
+ if (
183
+ std::abs (getAngleDiff (current_target_angle, final_target_angle)) < 10 . * degree<double >()) {
184
+ command.setTargetTheta (final_target_angle);
185
+ }
186
+
178
187
if (getParameter<bool >(" chip_kick" )) {
179
188
command.kickWithChip (getParameter<double >(" kick_power" ));
180
189
} else {
You can’t perform that action at this time.
0 commit comments