基于BFS+DFS+CoordinateDescent的motion planning设计思路
作者受论文path planning for on-road autonoumous driving with concetrated iterative search的启发,设计了一个新的基于linear segments的motion planner.
方法分为三部分:首先进行深度搜索,获得粗路径,再用广度搜多获得精确路径,再用CD迭代获得平滑路径。
本文持续更新:
基于BFS的搜索方案
clc
clear all
obs = [4.5, 0.5; 5.5,0.5];
point_ini = [0,0];
i = 1;
alpha = 1;
beta = 10;
point.layer(i).x(1) = point_ini(1);
point.layer(i).y(1) = point_ini(2);
end_length =10;
while i <end_lengthx = point.layer(i).x(1) + 1y_min = max(0, min(point.layer(i).y -1));y_max = min(5, max(point.layer(i).y + 1));temp = [];for j = 1:length(point.layer(i).x)for y = max(y_min, point.layer(i).y(1) - 1) : min(y_max, point.layer(i).y(1) + 1)cost = alpha * norm([1, (y - point.layer(i).y(1))]) + beta * abs(y-3);temp = [temp; [cost,x,y]];endendtemp = sortrows(temp);i = i+1;for k = 1:size(temp,1)point.layer(i).x(k) = temp(k, 2);point.layer(i).y(k) = temp(k, 3);end
endfor i = 1: end_lengthplot_x(i) = point.layer(i).x(1);plot_y(i) = point.layer(i).y(1);
endfigure
plot(plot_x, plot_y,'-o')
grid on
path = [plot_x; plot_y]';
figure
for i = 0.25for j = 0.1alpha = i;beta = j;optPath=PathSmoothing(path,alpha, beta);plot(path(:,1),path(:,2),'*b');hold on;plot(optPath(:,1),optPath(:,2),'-or');hold on;axis([-1 7 -2 6])legend('Before','After');title('Path Smoothing');grid on;hold on;end
end
hold offfunction optPath=PathSmoothing(path,alpha, beta)
optPath=path;%
torelance=0.00001;
change=torelance;
while abs(change)>=torelance change=0;for ip=2:(length(path(:,1))-1) prePath=optPath(ip,:);optPath(ip,:)=optPath(ip,:)-alpha*(optPath(ip,:)-path(ip,:));optPath(ip,:)=optPath(ip,:)-beta*(2*optPath(ip,:)-optPath(ip-1,:)-optPath(ip+1,:));change=change+norm(optPath(ip,:)-prePath);end
end
end
基于BFS+DFS+CoordinateDescent的motion planning设计思路相关推荐
- 基于界面交互展开的用例设计思路
测试用例是测试人员日常最重要的输出之一,对用例的评价标准一般有三个维度:结构清晰易读.可执行性强.覆盖度高.站在质量维度,最为重要的要属高覆盖度.如何写出高覆盖度的设计用例,离不开以下几个角度的分析. ...
- 基于SaaS化的低代码平台设计思路(二)
经过多日的整理,数据库结构算是把初版本弄出来了,准备采用DDD的模式进行,类似于金蝶这样的产品,直接通过BOS设计器进行业务单据的开发.摒弃传统的手工一行一行敲代码,将业务进行细化,用业务驱动整个平台 ...
- 基于OHCI的USB主机 —— OHCI(设计思路)
在OHCI层,主要完成如下功能: l 通过控制端口读写数据(包含SETUP.DATA.STATUS等3个TD): l 通过控制端口发送设置命令(没有DATA的TD): l 通过批量端口读数据: ...
- Robotics: Computational Motion Planning(路径规划)笔记(一):基于图搜索的方法-Grassfire、Dijkstra和A*算法
在本课程中,我们将考虑机器人如何决定如何到达目标的问题.这个问题通常被称为运动规划,它以不同的方式来描述不同的情况.您将学习一些解决这个问题的最常用方法,包括基于图的方法.基于采样的方法和人工势场法. ...
- 高动态环境下基于随机可及集的Path-Guided APF算法的Motion Planning
文章目录 摘要 引言 相关工作 问题假设 动态障碍物 Relative robot-obstacle dynamics(运动学) SR Sets for Collision Avoidance 方法! ...
- 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)
前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...
- 【规划】Motion Planning Approaches 路径规划方法汇总
什么是规划 规划的本质是搜索. 基于目标函数,找到一个安全舒适的行驶轨迹. 机器学习的话,其实是一个寻找mapping的过程,state to action 的mapping 搜索是寻找action去 ...
- 路径规划(Path Planning)与运动规划(Motion Planning)
路径规划(Path Planning)与运动规划(Motion Planning) 评论区有个观点: 也可以把路径规划理解为运动规划的一份.我个人具体的认识是,特别是在实现的时候,路径规划我们强调的是 ...
- Apollo进阶课程㉒丨Apollo规划技术详解——Motion Planning with Autonomous Driving
原文链接:进阶课程㉒丨Apollo规划技术详解--Motion Planning with Autonomous Driving 自动驾驶车辆的规划决策模块负责生成车辆的行驶行为,是体现车辆智慧水平的 ...
最新文章
- 【翻译自mos文章】job 不能自己主动运行的解决方法
- insert select带来的问题
- BW之数据源 增量管理DELTA
- Pytorch 词嵌入word_embedding1初识
- php 收缩栏,HTML5每日一练之details展开收缩标签的应用
- find的用法_【同步练习】高一英语下册find+复合宾语用法
- [转载] Python算法
- vc屏幕录像存为wmv文件_最好用的录像软件,三步实现高清录制?
- 5000字彻底道尽「区块链分叉」真相!
- Ubuntu16.04 安装Firefox火狐浏览器中国版使用及升级
- 2021-07-29 vue事件冒泡和事件捕获,阻止冒泡和阻止浏览器默认行为
- 如果程序员能早知道这些该有多好!
- docker安装mosquitto2.0.14问题
- 信号量(sem)学习笔记
- 罗克韦尔AB PLC RSLogix5000中的比较指令使用方法介绍
- 三角形(triangle)
- 数据库身份证号用什么类型_【文末送书】MySQL数据库?看这一篇干货文章就够了!...
- CryEngine技术
- 格式化 计算机术语,计算机格式化操作步骤
- 番茄工作法总结-第三章:方法
热门文章
- linux 内存使用率_我的内存都去哪里了?| 美创运维日记
- 【windows】windows允许 ICMP协议(允许ping)
- three.js和php,前端图形学(二十二)一切绕过原生WebGl直接上ThreeJs的都是耍流氓
- micropython开发idethonny_Thonny 3.0 首个稳定版发布,一个面向初学者的 Python IDE
- mysql source导入慢,MySQL mysqldump与source导入慢怎么解决
- mobileconfigs.php,iOS APP .mobileconfig的生成
- Java集合——概述
- JavaSelenium处理页面Table以及Table中随机位置的数据
- 【BZOJ4108】[Wf2015]Catering 有上下界费用流
- Android 第三方有用的库收集