Calculating the turning radius of a robot

339 views
Skip to first unread message

Mike Oliver

unread,
Jun 26, 2015, 3:53:33 AM6/26/15
to robo...@googlegroups.com
Hi Everyone,
I have been working on a new wall smoothing algorithm and I've run into a bit of an issue I cant seem to figure out.  I'm trying to calculate the turning radius of a robot given its velocity.  I can get its change in degrees per tick based on its velocity 10 - 0.75 * Math.abs(getVelocity()), but that doesn't really help me find the radius of its arc.

By plotting the points of my bot along its arc I was able to estimate its radius.  These values are close, but not 100% accurate. Does anyone know of a proper formula for calculating the radius without requiring 3 sample points along the arc?

Here are my findings: Velocity : Arc Radius

8 : 114.627
7 :  84.464
6 : 62:159
5: 45.862
4: 32.764
3: 22.186
2: 13.492
1: 6.205
0 : 0

Thanks for your time!

Johannes Slotta

unread,
Jun 26, 2015, 5:34:59 AM6/26/15
to robo...@googlegroups.com
Hi,

In theory of a continuous movement, these values should be
velocity/turning rate in radians, your values are close, the one for 6
is a bit off. Formula:
velocity / ((10-0.75*velocity)/(180/Math.PI))

In Reality, with discrete time steps, it is a bit more complicated (but
not much): velocity/2/sin(turning rate/2), or
velocity/2 / Math.sin((10-0.75*velocity)/(180*Math.PI)/2)

Values are (I used your values for first column):

measured continuous discrete
8 114.627 114.5915590262 114.6148333914
7 84.464 84.4358855982 84.4600705286
6 62.159 62.5044867415 62.5284914701
5 45.862 45.8366236105 45.8593571413
4 32.764 32.740445436 32.7608164788
3 22.186 22.1790114244 22.1959283285
2 13.492 13.4813598854 13.4937305748
1 6.205 6.1941383257 6.2008702328
0 0 0 0

HTH,
Johannes
> --
> You received this message because you are subscribed to the Google Groups
> "robocode" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to robocode+u...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Johannes Slotta

unread,
Jun 26, 2015, 5:37:59 AM6/26/15
to robo...@googlegroups.com
Should be 180/Math.PI instead of 180*Math.PI of course ;-)

Mike Oliver

unread,
Jun 26, 2015, 10:42:12 AM6/26/15
to robo...@googlegroups.com
Ah!  Thats exactly what I was looking for, I figured there was an easier solution to my approach.  Thanks Johannes!
Reply all
Reply to author
Forward
0 new messages