There are three fields you have to be aware of. Path planning, motion
planning and obstacle avoidance. The combination of these three is usually
referred to as "Navigation".
Path planning is the process you use to construct a path from a starting
point to an end point given a full, partial or dynamic map. Motion planning
is the process by which you define the set of actions you need to execute
to follow the path you planned. Obstacle avoidance, as the name suggests,
is used to avoid colliding with obstacles during the navigation process.
To develop an efficient and reliable navigation method, you need to:
- Have a clear idea about the environment you are trying to navigate (map
+ minimum gaps)
- Determine the motion model and dynamics of your robot
- Develop a closed loop control system that constructs a path and follows
For instance, if your environment is static (nothing changes), with
plenty of space and large openings, and you are trying to move a relatively
small robot (10x10 cm). Then probably you don't need to focus on obstacle
avoidance as long as your paths go in the middle of the space, and you
execute your actions accurately.
Majority of the cases, you use a high level planner to construct a
global path, and a local planner (VFH, ND, ...) to act as the motion
controller and the obstacle avoidance in a local scale. There is plenty of
literature on that front. You can have a look at some of my papers here :
and use some of the code I developed as reference here : http://tarektaha.com/tarektaha.com/download.php?list.6