Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


How to simulating a turn radius


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 stoneshy   Members   -  Reputation: 114

Like
0Likes
Like

Posted 22 December 2012 - 08:50 AM

Hi I trying to simulate a vehicle turning around a radius. This is what I'm currently doing

  1. Calculate the radius of the turn.
  2. Calculate acceleration and add to velocity
  3. Use velocity magnitude to determine distance travelled in one update
  4. Use arctan( distanceTraveled / turnRadius ) to get the angle of rotation
  5. Update vehicle angle
  6. Rotate velocity by vehicle angle. e.g. velocity *= Quaternion.AngleAxis(angle, Vector3.up)
  7. Update vehicle position with velocity

I'm currently getting a lot of drift and not driving straight. Any ideas how to correctly implement this.

 

Cheers



Sponsor:

#2 Álvaro   Crossbones+   -  Reputation: 13652

Like
0Likes
Like

Posted 22 December 2012 - 09:14 AM

You shouldn't have to measure any angles. If you apply an acceleration pointing to the side you want to turn, the vehicle will turn. The relationship between the force applied and the turn radius is taught in high school, and I am sure it's easy to find on the Internet.

 

EDIT: http://en.wikipedia.org/wiki/Centripetal_force


Edited by Álvaro, 22 December 2012 - 09:14 AM.


#3 Emergent   Members   -  Reputation: 971

Like
0Likes
Like

Posted 22 December 2012 - 11:43 AM

Dynamics for a simple ("unicycle") vehicle in two dimensions:

 

The way to think about this is that your vehicle has some state that evolves according to some dynamics -- this captures the physics of the vehicle -- and it also has some control inputs that describe what the driver is commanding the vehicle to do (e.g., accelerate, brake, turn).  To organize our thoughts, we'll separate these different things.

 

The vehicle's state x = (p, R, s) consists of

p in R2  (position),

R in SO(2)  (orientation: First column is forward vector; second column is left vector), and

s in R  (speed).

 

The control input is u = (a, w), with

a in R (acceleration: positive for going faster; negative for braking), and

w in R (turning rate).

 

Finally, the dynamics (or time-evolution of the state) are given by the following differential equations:

dp/dt = s R e1   (where ei is the ith column of the 2x2 identity matrix)

dR/dt = w R J  (where J is the 90-degree rotation matrix)

ds/dt = a

 

This fully describes the vehicle.  By evolving everything according to these dynamics, you will get consistent behavior, without side-slip.

 

One question remains, and that is how to choose your control inputs.  This depends on what you are trying to achieve -- e.g., going to a specific point, following a road, etc -- and is typically done by designing a controller (aka behavior), which is a function that takes the state x and returns a control input u.

 

You seem concerned with achieving a specified turn radius.  To do that, for a radius r, you need to choose your control input w so that

s = w r.



#4 radioteeth   Prime Members   -  Reputation: 1103

Like
0Likes
Like

Posted 22 December 2012 - 02:30 PM

I came across this a long while ago, the original URL doesn't exist, but this might help http://www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS