4.5.c A*代码解析

type
status
slug
date
summary
tags
category
password
icon
生活就像一盒巧克力,你永远不知道你会得到什么。
—《阿甘正传》
🏰代码及环境配置:请参考0.2 环境配置和代码运行 | 动手学运动规划!

本节提供了A*算法的代码测试:

4.5.c.1 构图的代码实现

基于图搜的运动规划中最重要的一步是构图,构建的图比较简单,主要包含map border和obstacles,读者也可根据需求修改构图方式。

4.5.c.2 A*的代码实现

在A*算法中,首先我们定义了节点Node ,这是图的基础元素。其中(x, y)表示节点的位置,cost表示从源节点到当前节点的cost,parent 表示当前节点的父节点。
在A*中,启发式函数使用的是欧式距离,如下:
下面是A*的核心算法,基于环境信息,起始点位置,目标点位置搜到最优路径,其中:
sx:起始点的x坐标的值
sy:起始点的y坐标的值
gx:目标点的x坐标的值
gy:目标点的y坐标的值
最终返回一条路径:rx, ry

4.5.c.3 A*的代码测试

main 函数中设置起始点,目标点,grid的分辨率和机器人的半径,在创建grid map之后,并运行A*算法,即可找到最优路径。如下图所示,红色路径即为最终A*搜出来的最优路径。
notion image
动手学运动规划(Motion Planning)动手学运动规划(Motion Planning)
Loading...
目录
文章列表