资源简介
移动机器人的避障和运动规划算法代码,包括D算法A*算法基于模糊控制的算法等
代码片段和文件信息
// AStart.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “math.h“
#include “list“
using namespace std;
/*
a->a1->a2->a3 b
A*:
把地图分成一个一个的格子;
A* 算法有一个评估函数: F=G+H
F: 从A到B的路径长度
G: 从起点,沿着产生的路径,移动到指定点的耗费;
H:预估值,从a到B的预估值
A*:A*需要两个表保存数据,一个启动列表一个关闭列表;
1.把A加到启动列表中;
2. 在启动列表中找到权值最小的格子,在当前格子周围只要能走且不再启动列表和关闭列表中就把它加入启动列表中,
并且把周围格子的父节点设置为A, 把A从启动列表中删除,并把他放到关闭列表;
3. 直到终点在启动列表中找到了! 如果启动列表中没有方格饿了,说名没有找到:
*/
//定义每个格子的宽度
#define LatticeLen 10
//用1表示阻断点,3表示起始点,4表示终点,2表示路径~
//虚拟一个地图出来
int G_PathLattice[10][10]=
{
{ 0 0 0 0 0 0 0 0 0 0 }
{ 0 0 0 0 1 0 0 0 0 0 }
{ 0 0 0 0 1 0 1 0 0 0 }
{ 0 0 0 0 1 0 0 0 0 0 }
{ 0 0 3 0 1 0 1 4 0 0 }
{ 0 0 0 0 1 1 0 0 0 0 }
{ 0 0 0 0 0 0 0 0 0 0 }
{ 0 0 0 0 0 0 0 0 0 0 }
{ 0 0 0 0 1 0 0 0 0 0 }
{ 0 0 0 0 1 0 0 0 0 0 }
};
struct stNode
{
int row;
int rant;
int f;
int g;
int h;
struct stNode* pParent; //当前节点的前一个节点
};
int Distance(int row1 int rank1 int row2 int rank2)
{
//得到格子中心点的坐标
int x1 = rank1*LatticeLen + LatticeLen / 2;
int y1 = row1*LatticeLen + LatticeLen / 2;
int x2 = rank2*LatticeLen + LatticeLen / 2;
int y2 = row2*LatticeLen + LatticeLen / 2;
//计算2个格子的中心坐标
return (int)sqrt((float)(x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
}
//判断一个节点是否在俩目标中
bool IsNodeInList(stNode* pNode listnodeList)
{
for (list::iterator it = nodeList.begin(); it != nodeList.end(); it++)
{
if (pNode->row == (*it)->row && pNode->rant == (*it)->rant)
{
return true;
}
}
return false;
}
stNode* GetNearestNode(listnodeList)
{
stNode* pNode = NULL;
int tempF = 10000000; //随便设置一个大数
for (list::iterator it = nodeList.begin(); it != nodeList.end(); it++)
{
//比较F值, 如果当前点的F小于tempF
if ((*it)->f < tempF)
{
pNode = (*it);
tempF = (*it)->f;
}
}
return pNode;
}
//pNode 周围的点放到ListNear 中, 要求点不在启动列表和关闭列表,且不能是障碍点
void GetNearNodeList(stNode* pNode list & listNear
list listStart list listEnd stNode* pEndNode)
{
//把一个节点旁边的8个点3*3的格子放到ListNear
for (int i = -1; i <= 1; i++)
{
for(int j = -1; j <= 1; j++)
{
//点自己不加
if (i == 0 && j == 0)
{
continue;
}
//得到周围点的座标
int rowTemp = pNode->row + i;
int rankTemp = pNode->rant + j;
//越界的格子不加
if (rowTemp < 0 || rowTemp > 9 ||
rankTemp <0 || rankTemp > 9)
{
continue;
}
//阻断点不加
if (G_PathLattice[rowTemp][rankTemp] == 1)
{
continue;
}
//在开启表
stNode node;
node.row = rowTemp;
node.rant = rankTemp;
if (IsNodeInList(&node listStart))
{
continue;
}
if (IsNodeInList(&node listEnd))
{
continue;
}
stNode* pNearNode = new stNode;
pNearNode->g = pNode->g + Distance(pNode->row pNode->rant rowTemp rankTemp);
pNearNode->h = Distance(rowTemp rankTemp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
....... 341 2015-10-30 17:25 算法\RRT\RRT-master\.gitignore
....... 1082 2015-10-30 17:25 算法\RRT\RRT-master\LICENSE
....... 10067 2015-10-30 17:25 算法\RRT\RRT-master\map.mat
....... 6168 2015-10-30 17:25 算法\RRT\RRT-master\maze.mat
....... 531 2015-10-30 17:25 算法\RRT\RRT-master\README.md
....... 119843 2015-10-30 17:25 算法\RRT\RRT-master\Report\map.png
....... 31986 2015-10-30 17:25 算法\RRT\RRT-master\Report\maze.png
....... 305772 2015-10-30 17:25 算法\RRT\RRT-master\Report\RRTAlgorithm.png
....... 263741 2015-10-30 17:25 算法\RRT\RRT-master\Report\RRTAlgorithm2.png
....... 54450 2015-10-30 17:25 算法\RRT\RRT-master\Report\rrtMap.png
....... 95920 2015-10-30 17:25 算法\RRT\RRT-master\Report\rrtMaze.png
....... 279487 2015-10-30 17:25 算法\RRT\RRT-master\Report\rrtSmoothing.png
....... 877 2015-10-30 17:25 算法\RRT\RRT-master\Report\RRT_Report.out
....... 880025 2015-10-30 17:25 算法\RRT\RRT-master\Report\RRT_Report.pdf
....... 13437 2015-10-30 17:25 算法\RRT\RRT-master\Report\RRT_Report.tex
....... 61275 2015-10-30 17:25 算法\RRT\RRT-master\Report\smoothMap.png
....... 78178 2015-10-30 17:25 算法\RRT\RRT-master\Report\smoothMaze.png
....... 9860 2015-10-30 17:25 算法\RRT\RRT-master\rrt.m
....... 528039 2015-10-30 17:25 算法\RRT\RRT-master\RRT.pdf
....... 1793 2015-10-30 17:25 算法\RRT\RRT-master\RRT_Test_sc
....... 3156 2015-10-30 17:25 算法\RRT\RRT-master\smooth.m
文件 2611961 2018-10-11 22:34 算法\RRT\RRT-master.zip
文件 1350 2018-10-11 22:48 算法\基于神经网络的\FZ2.m
文件 743 2018-10-11 22:40 算法\基于神经网络的\matlan仿真程序.rar
文件 35405 2010-04-16 17:58 算法\基于神经网络的\避障小车\qlearningcar.mdl
文件 18184 2010-04-16 14:12 算法\基于神经网络的\避障小车\QlearningCar.wrl
文件 727 2018-10-11 22:52 算法\基于神经网络的\避障小车\slprj\_jitprj\jitEngineAccessInfo.mat
文件 85612 2018-10-11 22:52 算法\基于神经网络的\避障小车\slprj\_jitprj\sqFagFM239bDhDBno52naZ.l
文件 1445 2018-10-11 22:52 算法\基于神经网络的\避障小车\slprj\_jitprj\sqFagFM239bDhDBno52naZ.mat
文件 726 2018-10-11 22:52 算法\基于神经网络的\避障小车\slprj\_sfprj\EMLReport\emlReportAccessInfo.mat
............此处省略207个文件信息
相关资源
- arduino 蓝牙遥控和红外避障小车设计过
- 移动机器人的系统设计与定位导航
- 集合几十篇整理过的智能小车毕业论
- 11-智能小车红外寻迹 超声波避障小车
- Planning Algorithms
- 自主移动机器人导论中文版
- slam避障/建图/导航/视觉定位/3Dslam 5篇
- ompl_installed.rar
- 自主移动机器人导论 第2版美R·西格沃
- 基于51单片机的智能小车避障
- 智能小车硬件课设(循迹,避障,蓝
- 规划算法中文版
- stm32智能小车的代码
- 51单片机 红外寻迹 + 蓝牙 + 超声避障
- 2、红外避障单独程序-PWM调速.rar
- 智能小车--循迹--追光--避障--测速--超
- 基于51单片机的智能小车循迹寻迹避障
- 基于Robei:(FPGA)超声波避障
- 机械臂避障路径规划仿真 路径平滑
- 机械臂碰撞检测 八组逆解碰撞检测
- 改进遗传算法的移动机器人动态路径
- 遗传算法小车避障问题
- LM393红外避障PCB+原理图
- 论文研究-欠驱动船舶的运动规划和全
- 四轮全方位轮式移动机器人的运动学
- 基于遗传算法的避障轨迹规划六自由
- 机器人避障算法
- 智能小车-51单片机-红外避障基础版
- 基于51单片机的超声波避障小车AD原理
- 动态避障仿真.rar
评论
共有 条评论