前序教程请参照专栏,如您是从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()
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐