1.1 - 2D栅格地图 - Python运动规划库教程(Python Motion Planning)
·
前序教程请参照专栏,如您是从0开始阅读,可以直接跳到Python运动规划库教程(Python Motion Planning)-0-简介与安装。
固定随机种子,以确保结果可被复现。
import random
random.seed(0)
import numpy as np
np.random.seed(0)
导入库。
from python_motion_planning.common import *
from python_motion_planning.path_planner import *
from python_motion_planning.controller import *
定义栅格地图并添加障碍物。
栅格地图是路径规划领域最常用的一种地图形式。世界坐标系是描述机器人与环境在真实世界中的全局坐标系,而栅格地图坐标系是用于栅格地图表示的局部或离散坐标系,通常与地图分辨率和索引相关。
bounds参数定义离散栅格地图在世界坐标系的范围。随后会结合分辨率参数自动计算出栅格地图的大小。Grid类的分辨率默认是1,因此计算出来的离散栅格地图尺寸是51*31格。
创建栅格地图后,我们为其添加一些障碍物用于测试路径规划器。
map_ = Grid(bounds=[[0, 51], [0, 31]])
map_.fill_boundary_with_obstacles()
map_.type_map[10:21, 15] = TYPES.OBSTACLE
map_.type_map[20, :15] = TYPES.OBSTACLE
map_.type_map[30, 15:] = TYPES.OBSTACLE
map_.type_map[40, :16] = TYPES.OBSTACLE
可视化检查2D网格地图。
vis = Visualizer2D()
vis.plot_grid_map(map_)
vis.show()

膨胀障碍物,以防止路径规划器规划的路径过于靠近障碍物。这里膨胀半径设置为3格,参数可调整。
map_.inflate_obstacles(radius=3)
可视化检查2D网格地图。
vis = Visualizer2D()
vis.plot_grid_map(map_)
vis.show()
vis.close()

完整的可运行代码:
import random
random.seed(0)
import numpy as np
np.random.seed(0)
from python_motion_planning.common import *
from python_motion_planning.path_planner import *
from python_motion_planning.controller import *
map_ = Grid(bounds=[[0, 51], [0, 31]])
map_.fill_boundary_with_obstacles()
map_.type_map[10:21, 15] = TYPES.OBSTACLE
map_.type_map[20, :15] = TYPES.OBSTACLE
map_.type_map[30, 15:] = TYPES.OBSTACLE
map_.type_map[40, :16] = TYPES.OBSTACLE
map_.inflate_obstacles(radius=3)
vis = Visualizer2D()
vis.plot_grid_map(map_)
vis.show()
vis.close()
更多推荐
所有评论(0)