机器人路径规划:基于D*Lite的机器人路径规划(提供Python代码)

一、D*Lite简介

D* Lite算法是栅格模型下针对动态环境的路径规划算法, 其将LPA*算法的思想运用于动态环境下, 使得移动机器人在未知环境下可以快速重规划。D* Lite算法的优势在于, 当环境中出现新的未知障碍物时, 可以快速更新该障碍物周边节点的信息, 并将由此而导致不连续的节点重新压入优先列表中进行快速地重规划.但是, 由于是在栅格环境下, D* Lite算法所规划出的路径是八邻域的, 得到的路径并不平滑.而另一方面, 在现实未知环境下, 极有可能在距当前位置较近处出现障碍物, 此时D* Lite规划出的路径过于靠近障碍物.

D* Lite算法采用从目标节点到起始节点的搜索方式, 可以运用于起始点改变的情况, 并且引入了LPA*算法中rhs(s)的定义, 即

(1)

其中: Succ(s)表示所有节点s的后继节点, g(s')表示节点s'到目标节点的距离. D* Lite对每个栅格维护g(s)与rhs(s)两个变量, 当两者相等时, 表示该节点处于一致状态, 否则处于不一致状态.当处于不一致状态时表示该节点的路径信息是不准确的, 只有处于一致状态下的节点是已经扩展完毕、可以通行的.

参考文献:

[1]Koenig, Sven and Maxim Likhachev. “D*lite.” AAAI/IAAI (2002).

[2]杨奇峰,曲道奎,徐方.基于障碍物运动预测的移动机器人路径规划[J].计算机工程与设计, 2021.DOI:10.16208/j.issn1000-7024.2021.01.027.

二、部分代码

import math
import matplotlib.pyplot as plt
import random
import numpy as np

show_animation = False
pause_time = 0.001
p_create_random_obstacle = 0


class Node:
    def __init__(self, x: int = 0, y: int = 0, cost: float = 0.0):
        self.x = x
        self.y = y
        self.cost = cost


def add_coordinates(node1: Node, node2: Node):
    new_node = Node()
    new_node.x = node1.x + node2.x
    new_node.y = node1.y + node2.y
    new_node.cost = node1.cost + node2.cost
    return new_node


def compare_coordinates(node1: Node, node2: Node):
    return node1.x == node2.x and node1.y == node2.y

三、部分结果

四、完整Python代码

见下方名片的联系方式

机器⼈python路径规划_基于Q-learning的机器⼈路径规划系统 (matlab) 0 引⾔ Q-Learning算法是由Watkins于1989年在其博⼠论⽂中提出,是强化学习发展的⾥程碑,也是⽬前应⽤最为⼴泛的强化学习算法。Q- Learning⽬前主要应⽤于动态系统、机器⼈控制、⼯⼚中学习最优操作⼯序以及学习棋类对弈等领域。 1 项⽬概述 Q学习在机器⼈路径规划领域有较为⼴泛的应⽤,由于其只需要与环境进⾏交互,且仅需感知当前状态和环境即可对下⼀步动作进⾏决策。 本研究以 MATLAB为基础,设计基于Q学习的最短路径规划算法,并考虑智能体的斜 向运动,更加符合实际情况。同时使⽤DQN⽹络对Q 值更新进⾏⼀定的优 化,使得Q值表能够更加符合实际应⽤。 本次研究的具体步骤如下: 设计⼀个有障碍物的地图,⽤户可以修改障碍物布局,可以指定起点和终点; 使⽤MATLAB编程实现Q-learning算法,⽤于机器⼈规划最短路径,学习算法参数可以由⽤户设置; 使⽤⽤可视化界⾯演⽰Q值变化过程及最短路径探测过程。 2 Q-learning算法思想 Q-Learning算法是⼀种off-policy的强化学习算法,⼀种典型的与模型⽆关的算法算法通过每⼀步进⾏的价值来进⾏下⼀步的动作。基于 QLearning算法智能体可以在不知道整体环境的情况下,仅通过当前状态对下⼀步做出判断。 Q-Learning是强化学习算法中value-based的算法,Q是指在某⼀时刻的某⼀状态下采取某⼀动作期望获得的收益。环境会根据智能体的动 作反馈相 应的回报,所以算法的主要思想就是将状态与动作构建成⼀张Q值表,然后根据Q值来选取能够获得最⼤的收益的动作。 3 算法步骤 (⼀)Q-学习步骤 初始化Q值表。构造⼀个n⾏n列(n为状态数)的 Q值表,并将表中的所有值初始化为零。 基于当前Q值表选取下⼀个动作a。初始状态时,Q值 均为零,智能体可有很⼤的选择空间,并随机选择下⼀步动作。随着迭代次数增 加,Q值表不断更新,智能体 将会选择回报最⼤的动作。 计算动作回报。采⽤动作a后,根据当前状态和奖励,使⽤Bellman ⽅程更新上⼀个状态的Q(s, t)。 NewQ(s,a) = (1 α)Q(s,a) + α(R(s,a) + γmaxQ (s ,a )) 其中, NewQ(s,a)——上⼀个状态s和动作a的新Q值 Q(s,a)——当前状态s和动作a的Q值 R(s,a)——当前状态s和动作a的奖励r maxQ (s ,a )——新的状态下所有动作中最⼤的Q值 重复步骤3,直到迭代结束,得到最终的Q值表。 根据Q值表选择最佳路径。 (⼆)算法改进 避免局部最优 Q-learning本质上是贪⼼算法。如果每次都取预期奖励最⾼的⾏为去 做,那么在训练过程中可能⽆法探索其他可能的⾏为,甚⾄会进 ⼊"局部 最优",⽆法完成游戏。所以,设置系数,使得智能体有⼀定的概率采取 最优⾏为,也有⼀定概率随即采取所有可采取的⾏动。 将⾛过的路径纳⼊ 记忆库,避免⼩范围内的循环。 增加斜向运动 将斜向运动的奖励值设置为 2/ 2 ,取近似值0.707,可以避免出现如机器 ⼈先向左上⽅移动再向左下⽅移动⽽不选择直接向左移动两格 的情况。设 置为此值是根据地图的两格之间的相对距离确定的。 4 MATLAB实现代码 %% 基于Q-learning算法的机器⼈路径规划系统 clear %% ⾸先创造⼀个机器⼈运动的环境 % n是该运动的运动环境的矩阵environment(n,n)的⾏列⼤⼩ n = 20; % 新建⼀个全为1的n*n维environment矩阵 environment = ones(n,n); %下⾯设置环境中的障碍物,将其在矩阵中标为值-100(可⾃⾏设置障碍物) environment(2,2:5)=-100; environment(5,3:5)=-100; environment(4,11:15)=-100; environment(2,13:17)=-100; environment(7,14:18)=-100; environment(3:10,19)=-100; environment(15:18,19)=-100; environment(3:10,19)=-100; environment(3:10,7)=-100; environment(9:19,2)=-100; environment(15:17,7)=-100; environment(10,3:7)=-100; environment(13,5:8)=-100; environment(6:8,4)=-100; environment(13:18,4)=-100; environment(6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值