-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Agent specs: clarify maxsteeringforce meaning (doc) #15
Comments
Not sure if i understand that correctly, you're saying that the maxsteeringforce is the max acceptable euclidian distance between our current speed vector and our next tick speed vector? So maxsteeringforce = max(||vc - vn||) (where vc is the current speed vector and vn is the next tick speed vector?) |
And if true what are you doing if we send actions that does not respect these conditions ? Will you only cap the magnitude of the acceleration vector that we sent to you on this tick ? Will you ignore our acceleration vector? Something else ? |
yes Given |
As for every actions taken by the agent, if directives max out the specs, the directives are capped to the max available for the action. |
How are those caps applied? Will you only cap the vector magnitude or can you also do things on the vector components directly. (Will our acc. vector direction always be respected by the game engine or can you also change our acc. vector direction?) |
Btw please feel free to PR the documentation to clarify this here: https://github.com/ByteArena/docs |
One point I'd like to make first to clarify things up: a physical acceleration (as we're speaking about here) is not necessarily an increase of the "speed" of the agent, but any change in the agent velocity; so, what we call a change of direction (even while keeping constant forward speed) is in fact an acceleration; and in fact even what we commonly call a deceleration (reduction of speed) is concretized by a physical acceleration pointing towards the back of the agent. Building on this, any change of the agent velocity (being forward, backwards of sidewards during turns) is constrained by this max steering force (could be named "max change of velocity" for that matter). It can be perceived in these situations :
So to answer your question now : when capping, we keep the orientation of the desired (new) velocity vector, and set it's magnitude to the maximum it can be to respect the constraint (can in fact reverse the desired velocity vector if needed. |
Thinking about this :
It might not be the best solution though, because it will "decelerate" agents that make over-specs turns rather than just reducing the rotation angle. In the case of changes of direction, we could maybe try first to find a rotation of the desired velocity that respects the constraint ? |
Well, no it wont decelerate them, it will, as you want, reduce the angle speed: |
The steering limit is how much the agent velocity can change from one tick to the other.
Corresponds to the max length from the tip of the current velocity vector to the tip of the new velocity vector.
=> defines maximum acceleration between ticks, whatever it's direction (forward acceleration, braking, or turning).
=> also means that, depending on the limit value, one could not turn as fast as required when at full speed.
The text was updated successfully, but these errors were encountered: