混合A*路径规划器:非完整约束车辆的实时路径规划算法
创作时间:
作者:
@小白创作中心
混合A*路径规划器:非完整约束车辆的实时路径规划算法
引用
CSDN
1.
https://m.blog.csdn.net/qq1309399183/article/details/144861830
混合A路径规划器是一种专门针对非完整约束车辆(如自动驾驶汽车)的实时路径规划算法。它通过在三维离散搜索空间中结合Dubin's路径和Dijkstra算法,实现了既考虑车辆运动约束又避开障碍物的最优路径规划。本文将详细介绍混合A算法的原理、实现方法及其在自动驾驶领域的应用场景。
项目背景
本项目是一个用于非完整约束车辆的实时路径规划代码,采用混合A*(Hybrid-A*)算法。该项目是自动地面车辆(AGV)研究小组的研究成果,并已在实验室测试车辆Eklavya上成功测试。实验中使用GPS航点作为目标,并通过安装在车辆前端的激光雷达(LIDAR)生成二进制障碍物地图。传感器接口方面,采用了ROS(机器人操作系统)。
算法描述
混合A算法使用了一个三维离散搜索空间,但与传统的A不同的是,它为每个网格单元关联了一个连续的三维车辆状态。这样可以确保生成的路径是可行驶的(而标准A*只能产生分段线性的路径)。
搜索过程由两个启发式规则指导:
- 无障碍物非完整约束(Non-Holonomic Without Obstacles):采用Dubin’s路径长度计算方法,忽略障碍物的存在。
- 有障碍物完整约束(Holonomic With Obstacles):使用Dijkstra算法在二维平面上计算最短路径,同时忽略了车辆的完整约束条件。
为了提高搜索速度,算法会在接近目标时,利用Dubins路径分析扩展节点,并检查这些路径是否与当前的障碍物地图发生碰撞。
改进点
- 3D离散搜索空间:相较于传统A*,混合A*不仅考虑位置信息,还考虑了方向和姿态等连续状态变量,从而保证了路径的实际可执行性。
- 双重启发式规则:结合了非完整约束下的最优路径估算以及考虑障碍物的最短路径规划,提高了搜索效率和路径质量。
- 快速收敛机制:针对靠近目标区域的节点,采用解析方法进行扩展,减少了不必要的计算开销,加快了搜索进程。
应用场景
混合A路径规划器适用于各种需要精确路径规划的应用场景,特别是在复杂环境下的自主导航任务中表现出色。例如,在城市道路、工业厂房或农业领域内,对于无人配送车、自动叉车或者智能农机等设备来说,混合A算法能够提供安全可靠的路径解决方案。
以下是GUI类的部分代码实现:
#include "../include/Gui.hpp"
GUI::GUI(int rows, int cols){
display_size=cv::Size(rows, cols);
display=Mat(display_size, CV_8UC3, Scalar(220,220,220));
}
void GUI::drawCar(State src){
RotatedRect rotRect = RotatedRect(Point2f(src.x*display_size.width/MAPX, src.y*display_size.height/MAPY), Size2f(BOT_L*display_size.width/MAPX, BOT_W*display_size.height/MAPY), src.theta*Theta_Res);
Point2f vert[4];
rotRect.points(vert);
for(int i=0;i<4;i++)
line(display, vert[i], vert[(i+1)%4], Scalar(200, 0, 0));
circle(display, Point2f((src.x + 17*cos(src.theta*2.0*PI/Theta))*display_size.width/MAPX, (src.y + 17*sin(src.theta*2.0*PI/Theta))*display_size.width/MAPX), 5, Scalar(255, 0, 0));
}
void GUI::drawObs(Map map){
for(int i=0;i<MAPX;i++)
for(int j=0;j<MAPY;j++)
if(map.obs_map[i][j]){
for(int k=i*display_size.width/MAPX;k<(i+1)*display_size.width/MAPX;k++)
for(int l=j*display_size.height/MAPY;l<(j+1)*display_size.height/MAPY;l++){
display.at<Vec3b>(l,k)={128, 128, 128};
}
}
}
void GUI::markPoint(int i, int j){
if(i<0 || i>MAPX || j<0 || j>MAPY)
return;
for(int k=i*display_size.width/MAPX;k<(i+1)*display_size.width/MAPX;k++)
for(int l=j*display_size.height/MAPY;l<(j+1)*display_size.height/MAPY;l++){
display.at<Vec3b>(k,l)={0, 255, 0};
}
}
void GUI::show(int t){
Mat temp=display;
//resize(display, temp, display_size);
imshow("Display", temp);
waitKey(t);
return;
}
请注意,上述内容基于原文进行了翻译和适当扩充,以确保信息完整性和表达清晰度。实际应用和技术细节可能会随着研究进展而有所变化。
热门推荐
国外自媒体视频搬运,合法还是侵权?探讨其背后的法律与道德问题
"政和八闽鸟"横空出世,始祖鸟地位不保?
一棵金丝楠木价值上亿!为什么树苗才10元一棵,却没有人肯种?
户外伸缩看台座椅的适应性
制作简历Word表格去掉小箭头的三种方法
生辰八字五行缺火意味着什么?缺火命格影响命运性格解析
丁巳年是哪几年?丁巳年出生的人命怎么样?
六角螺丝磨损后拆卸有哪些方法?
宜宾两日游详细旅游攻略:行程规划、预算估算及景点推荐
泰山的海拔高度是多少米
如何使用按摩槍、護膝、貼布才能保護自己?
西安学区房价格大跌,小户型成交总价缩水40%!
航空物流运作效率提升
张家界七星山游览火车线路:观光小火车的具体行驶路线指南
黄玉手串佩戴指南:好处、禁忌与选择技巧详解
电子数据取证的程序合法性审查
答辩后的论文修改技巧:如何应对答辩委员会意见?
镁不足会导致失眠、抽筋、心律不整?补镁食物有哪些?保健品怎么选?
鲜牛奶可以冷冻保存吗?是妙招还是败笔?你真的会存牛奶吗?
物料粉碎新纪元:揭秘气流粉碎机的技术优势
经常给孩子穿别人的二手衣物,大抵难逃三大“宿命”,你别不在意
劳工法规:了解你的权利与义务
摸底保险代理人线上获客:谁吃到了这波红利?
如何解决项目进展问题?专家给你全面解析
校园文学活动方式及其对中学生人文素质的影响
15万的电车和15万的燃油车,才明白新能源车与燃油车的差异有多大
幼儿体育游戏《一圈多玩》:呼啦圈的多种玩法
绘画教育机构怎么选?
特斯拉车主陷入维修困境:官方维修太贵 找第三方修影响车辆质保
融资租赁租入的固定资产怎么做账