[Gameplay] Dribble FSM should align with ball before starting to dribble
Description of the task
Currently, DribbleFSM::findInterceptionPoint finds where the robot should go to start dribbling the ball. The current implementation will set the destination of the robot to be where the ball is, if the ball is moving slowly/is stationary. The problem with this is that the robot may not be facing the ball before dribbling into it, as such, it may arrive at the destination position prior to the dribbler being aligned with the ball. We should update this logic or add a new state where we first align with the ball with our dribbler (with the destination being slightly away from the ball so we don't ram into it), and once we're positioned correctly, we drive into it.
Furthermore, when aligning with the ball, we should have the ball as an obstacle (TbotsProto::BallCollisionType::AVOID) so we don't accidentally ram into the ball when dribbling into position. This is related to #2848
Acceptance criteria
- [ ] If the ball is positioned on the left/right of the robot and almost touching it, then the robot first aligns its dribbler with the ball, then drives into it with its dribbler (i.e. should not bump the ball away while rotating)
- [ ] Same as above with the ball being behind the robot
an approach: draw a rectangle from the dribbler in the direction of the robot orientation. If the ball intersects this dribble, the robot is aligned. Otherwise align with the ball such that the rectangle does intersect with the ball.