- 小车工作空间用OccupancyGrid表示,其实就是栅格
- 可以用robotics.BinaryOccupancyGrid表示(BinaryOG):1表示障碍物,0表示能走。可以用map = robotics.BinaryOccupancyGrid(10,10,5)命令生成一个BOG,10米乘10米,每米被分成5等份(分辨率为5),用setOccupancy(map,障碍物坐标,1)可以往map里加障碍物。
- 可以用robotics.OccupancyGrid表示(ProbabilityOccupancyGrid):1很可能有障碍物,0没啥可能有障碍物
- 给定起点和终点,可以用PRM(prob road map)算法来找一条没有障碍物的路,其基本流程是在平面上随机撒一些点,然后把所有点连起来(不经过障碍物),最后离起点和终点最近的随机点之间的路径就是要的路径。可以用PRMobj = robotics.PRM(map,250)撒250个点到map上,并生成PRM。PRMobj.show可以画出来看,PRMobj.findpath([起点坐标],[目标点坐标])可以找到一条起点到终点的折线并返回折线上每个点的坐标,这个时候再PRMobj.show可以看到这条线。有时候机器人比较大,规划出来的路线可能靠障碍物太近了,这时候可以先把map里的障碍物膨胀一点,再规划路径。
- 用PRM找到了路径,但是这个路径是个折线,这意味如果车速上去了,就容易超出去,(此处还没想明白,暂时不想了),因此要用聪明的方式跟踪这个折线,也就是找一个控制。可以用纯追踪算法
- 一个例子: