python路径规划算法可视化_[大创]一步一步写路径规划并绘图可视化 I new

重新写了之前的I,这是中期答辩我写的桥段,没用上就放到博客里来了。有意向了解的朋友们可以去看看另外几篇详述的。密码是123456

一个简易的室内路径规划基础模型

1.1 选择编程工具

编程语言选择Python,语法简单易上手。选择Python的turtle库来实现绘制地图以及展示机器人“动态规划路径”的过程。

1.2 构建地图信息并绘制地图

采用矩形来描述室内障碍物,在室内平面图添加平面坐标系,用点的方式来定位障碍物和机器人。

下面是自己添加的一些障碍物的点坐标

'''author:https://www.cnblogs.com/dragonbean/

'''

class_allpoints = [[(80, 380), (80, 270), (0, 270), (0, 380)],

[(270, 200), (270, -70), (180, -70), (180, 200)],

[(-100, -100), (-100, -350), (-350, -350), (-350, -100)],

[(-20,50),(100,50),(100,-200),(-20,-200)],

[(-150,300),(-10,300),(-10,150),(-150,150)],

[(140,-90),(200,-90),(200,-160),(140,-160)],

[(-200,0),(-90,0),(-90,60),(-200,60)]

]

下面是用turtle库对上述障碍物点进行绘制的Python代码,都进行了一般化处理,后期修改或是使用都会很方便。

'''author:https://www.cnblogs.com/dragonbean/

'''

import turtle

__turtle = turtle.Turtle()

__turtle.hideturtle()

__turtle.speed(0)

#pointsList: [[point,point,point,...],[point,point,..],...]

def drawPolygons(pointsList,color='black',width=2):

if isinstance(pointsList,list) and isinstance(pointsList[0],list):

__turtle.width(width)

__turtle.color(color)

for each in pointsList:

__draw(each,style="polygon")

else:

print("date error!")

#pointsList: [point,point,point,...]

def drawRoad(pointsList,color="blue",width=1,speed=1):

__turtle.width(width)

__turtle.color(color)

__turtle.speed(speed)

__draw(pointsList,style=None)

#pointsList: [point,point,point,...]

def __draw(pointsList,style):

__turtle.penup()

__turtle.goto(pointsList[-1] if style=="polygon" else pointsList[0])

__turtle.pendown()

for point in pointsList:

__turtle.goto(point)

__turtle.penup()

运行结果【室内障碍物】

1.3 设计算法

1.3.1递归

1.3.1.1 原型

以一种现有的通过深层迭代求解最短路径的路径搜索算法为原型进行改进:

'''author:https://www.cnblogs.com/dragonbean/

'''

def searchPath(graph, start, end):

results = []

__generatePath(graph, [start], end, results)

results.sort(key=lambda x:len(x))

return results

def __generatePath(graph, path, end, results):

current = path[-1]

if current == end:

results.append(path)

else:

for n in graph[current]:

if n not in path:

__generatePath(graph, path+[n], end, results)

def showPath(results):

print('The path from ', results[0][0], 'to' , results[0][-1], 'is :')

for path in results:

print(path)

if __name__=='__main__':

graph = {'a':['b','c','d'],

'b'

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值