智能驾驶(2)_A*算法

180 阅读2分钟

前言

本文已参与「新人创作礼」活动,一起开启掘金创作之路。本文简单介绍智能驾驶中的A*寻路算法

正文

A*算法笔记 如有错误,烦请指正,谢谢大家

A是一种寻路算法,通常用来解决path finding problem,在A算法中,我们把地图划分成一个个小方格(其他图形也可以)。地图中包含起点、终点、障碍物等信息。我们通过A算法找出从起点到终点的路径,通过小方格一个位置一个位置的移动来到达终点。每个方格都有两个状态:可走状态和不可走状态,那些被障碍物占据的方格就成为不可走状态。A算法中还包含Openlist和Closelist两个元素。

算法的大致过程

  • 1、从起点开始,把起点和与起点相邻且可达的方格加入到openlist当中
  • 2、把起点设为这些方格的父亲节点
  • 3、把起点从Openlist中移除,并把它加入到closelist之中
  • 4、计算组成路径方格,计算组成路径方格主要靠F=G+H,其中G为移动到指定方格的移动代价,可以设横竖移动代价为10,对角线移动代价为14(这样操作可以加快计算机的运算速度)H可以用曼哈顿距离来估算出来(移动格子的总数乘10)
  • 5、把起点加入closelist中之后,我们选择F值最小的那个格子进行搜索
  • 6、把这个格子从openlist中取出,检查所有与他相邻且可达的方格,若这些方格有在openlist中,则选择F值最小的那个进行搜索,若都不在,则把他们加入到openlist中去,
  • 7、检查当前路径是否最优,即当前方格到所选方格G值是不是变小了,若没有不做任何操作,若变小了,重新计算那个方格的F值和G值