Obstacle avoidance robot artificial potential source code