Skip to content
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

Implement Avoid Obstacle - Steer Away From Surface Force #15

Open
lxfschr opened this issue Feb 19, 2015 · 0 comments
Open

Implement Avoid Obstacle - Steer Away From Surface Force #15

lxfschr opened this issue Feb 19, 2015 · 0 comments

Comments

@lxfschr
Copy link
Owner

lxfschr commented Feb 19, 2015

The steer away from surface ("force field") approach supposes that a force field is emanating from the surface of the obstacle. The flying object is accelerated away from the surface of the obstacle by a force whose strength is inversely related to distance. Often the field can be represented by a single equation and so the steering acceleration can be easily calculated. But the motion produced by this technique does not correspond very well to our intuitive notion of steering around obstacles. If we are moving directly toward a wall we need to decide which way to turn to avoid a collision. But the force field from the wall will be directed exactly opposite to our velocity. As a result we will not be turned to either side but rather we will just decelerate to a stop.

One way to picture this effect is the "lateral acceleration as a function of horizontal offset." An object is moving along on the X-Z plane, parallel to the Z axis, towards a cylinder centered on the Y axis (see figure 3). Consider the paths that result for various values of the X offset. Basically those paths that start to the left of the obstacle veer to the left and those on the right veer to the right. But the significant issue is the relation of the lateral acceleration to the horizontal offset. For the "steer away from surface" model this relationship has a "dead spot" in the middle (figure 4).
image
Figure 4: lateral acceleration function, "dead spot" at center
Another important property of an obstacle avoidance technique is directional discrimination. A moving object needs to react to the obstacles that block its path, but it must also ignore obstacles that are not along its path. The moving object needs to have a sort of "tunnel vision", generally ignoring obstacles that are off to the side or behind it. This is presumably why horses that work in crowded environments are fitted with blinders.
The "steer away from surface" obstacle avoidance technique has no directional discrimination at all. The global direction of the steering force is the same at a given global position regardless of the direction in which we are moving. So the same force that would tend to steer us away from an impending collision with an obstacle will also steer us away from a harmless attempt to fly alongside the obstacle. Ideally a moving object will be much more sensitive to obstacles directly in front of it than any others. Because sensitivity to the force field is uniform in all directions, the effect of the force field tends to be too strong when flying harmlessly alongside and too weak when flying directly into the obstacle from further away. Small steering accelerations applied earlier make for much more robust obstacle avoidance behavior.

From http://www.red3d.com/cwr/nobump/nobump.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant