Autonomous parking algorithms