To help with the math:
If you want to move d pixel distances in t seconds then you will need to move on average x/t (pixels/seconds).
For this you will need to store the start time of your animation (start_time).
In every timer tick, compute the percentage of animation completed:
percent_complete= (now - start_time) / t
Multiply percent_complete by the distance you want to move to get the distance you should be from where you started (d_now). Remember to keep track of the start distance when you start the animation.
d_now = percent_complete * d
The robot's x and y for the current timer tick can then be computed by:
x = d_now * cos(heading) + start.x
y = d_now * sin(heading) + start.y
You may need to tweak the signs of things but that's the gist of it. Math aside, aren't basic animation routines already provided for you in WPF? I've never used it but that was my impression. Link.