RoboWaiter/robowaiter/algos/navigator
Caiyishuai c379f15a5c 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
..
__init__.py 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
costMap_3.pkl 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
costMap_4.pkl 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
costMap_5.pkl 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
discretize_map.py 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
dstar_lite.py 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
mag_5.png 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
map_3.pkl 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
map_4.pkl 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
map_5.pkl 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
navigate.py 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
readme.md 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00
test.py 更新了 导航算法 和 部分动作节点 2023-11-16 15:28:08 +08:00

readme.md

D_star Lite 机器人任务规划

目录结构

坐标离散化

discretize_map.py

地图文件(选择缩放倍率)

map_3.pkl map_4.pkl map_5.pkl

导航类

navigate.py

D_star Lite 算法实现

dstar_lite.py

测试文件

test.py


世界地图

实际坐标范围

X: -350 ~ 600

Y: -400 ~ 1450

5倍缩放后坐标范围

X: -70 ~ 120

Y: -80 ~ 290

网格地图

Idx Obj
0 free
1 obstacle
2 dynamic obstacle

代价地图

Cost Obj
0 free
15-10-5 obs周围3格
inf obstacle
100 dynamic obstacle

参数

机器人步长 150

机器人速度 150

机器人观测范围 300

行人半径 36

目标判达距离 50

机器人移动dis_limit 10


使用方法

# 选择缩放合适的地图3、4、5
file_name = 'map_4.pkl'
if os.path.exists(file_name):
    with open(file_name, 'rb') as file:
        map = pickle.load(file)

# 初始化场景
scene.init_world(1, 11)
scene = scene.Scene(sceneID=0)

# 舒适化导航类
# (需要传入:场景、实际地图范围、离散化地图、缩放比例)
navigator = Navigator(scene=scene, area_range=[-350, 600, -400, 1450], map=map, scale_ratio=4)

# 设置目标
goal = (0, 0)

# 导航
# (animation: 选择是否画出导航过程)
navigator.navigate(goal, animation=False)


可靠性保证

目标合法性保证

  • 目标在地图外:重置目标为最近的地图内位置
  • 目标在静态障碍物:从当前位置不断向外圈扩展直到找到合法位置,重置目标为该位置

规划sbgoal合法性保证

  • 规划subgoal被动态障碍物占据重新规划路径

起点合法性保证

  • 起点在静态障碍物:从当前位置不断向外圈扩展直到找到合法位置,重置起点为该位置
  • 起点在动态障碍物范围内:缩小动态障碍物半径,保证起点位置为空闲

机器人朝向保证

  • 机器人始终朝向每一步的移动方向

规划抖动解决

  • 规划路径不允许有重复点

避免机器人沿障碍物行走

  • 障碍物扩张:在代价地图cost_map静态障碍物周围的空位也会受到影响并产生cost