# What exactly is the difference between separation and obstacle avoidance

I've been reading some literature that explains both separation and obstacle avoidance. On first sight, they both seem very similar in what they are supposed to do: keeping objects apart form each other. If that is the case, why would I need to have both behaviors? Is separation sort of wrapping obstacle avoidance, and adding to it?

-
I'm not familiar with the terms "separation" and "obstacle avoidance" as they're being used here - could you edit the question to elaborate on how they're defined in the books you're looking at? – Nathan Reed Nov 17 '11 at 20:57
I'd like to know what literature you read that had this. If it's what I think it is, then it may be talking about separation with regards to flocking which is a slightly different thing than Jonathan's answer. – Ray Dey Nov 18 '11 at 13:20
I would have thought it referred to the canonical source: red3d.com/cwr/steer – Kylotan Nov 18 '11 at 14:02
@Kylotan That's what I thought, where separation is essentially the same as obstacle avoidance, just the obstacles are your local flockmates. Jonathan's answer to me seems like collision resolution rather than "steer to avoid crowding local flockmates". – Ray Dey Nov 19 '11 at 18:06

# Avoidance

This makes an object avoid obstacles that may be hindering it while it navigates to a goal. Perfect avoidance would never allow objects to overlap.

# Separation

This deals with the situation when avoidance fails to keep objects apart. This often occurs 'between frames': an object can move into a new position that overlaps other objects because the precise time of collision happened between the last frame and the current one (or some other condition such as momentum). Separation will seek to move the object so that it no longer collides.

# Are They The Same Thing?

They are not really the same, but they are related - in a system which contains both separation is only there because avoidance would need to multisample (and hence impact performance) to avoid collisions between frames. Thus, we simply allow the overlap to occur from the perspective of avoidance and IMMEDIATELY resolve it using separation.

Note that separation can exist alone in a system: for example when the movement of an object is controlled by physics and not by AI. I do not think the inverse (avoidance alone) would be found alone in any serious implementation.

-