91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-12
  • 語言: Python
  • 標簽: python;RRT??

資源簡介

基于快速擴展隨機樹(RRT / rapidly exploring random tree)的路徑規劃算法,通過對狀態空間中的采樣點進行碰撞檢測,避免了對空間的建模,能夠有效地解決高維空間和復雜約束的路徑規劃問題。

資源截圖

代碼片段和文件信息

#!/usr/bin/python
#?_*_?coding:?UTF-8?_*_
import?matplotlib.pyplot?as?plt
import?random
import?math
import?copy
from?scipy?import?optimize
show_animation?=?True
import?numpy?as?np

class?Node(object):
????“““
????RRT?Node
????“““

????def?__init__(self?x?y):
????????self.x?=?x
????????self.y?=?y
????????self.parent?=?None


class?RRT(object):
????“““
????Class?for?RRT?Planning
????“““

????def?__init__(self?start?near_points?far_points?obstacle_list?rand_area):
????????“““
????????Setting?Parameter

????????start:Start?Position?[xy]
????????goal:Goal?Position?[xy]
????????obstacleList:obstacle?Positions?[[xysize]...]
????????randArea:random?sampling?Area?[minmax]

????????“““
????????self.start_Ta?=?Node(start[0]?start[1])
????????self.end?=?Node(near_points[0]?near_points[1])

????????self.start_Tb?=?Node(far_points[0]?far_points[1])


????????self.min_rand_x?=?rand_area[0]
????????self.max_rand_x?=?rand_area[1]
????????self.min_rand_y?=?rand_area[2]
????????self.max_rand_y?=?rand_area[3]????????
????????self.expandDis?=?1.0
????????self.goalSampleRate?=?0.05??#?選擇終點的概率是0.05
????????self.maxIter?=?500
????????self.obstacleList?=?obstacle_list
????????self.nodeList?=?[]


????def?random_node(self?mean?cov):
????????“““
????????產生隨機節點
????????start?point----->?near?points
????????Far?point?------>?near?points
????????:return:
????????“““

????????node_x?node_y??=?np.random.multivariate_normal(mean?cov?1).T
????????node?=?[node_x?node_y]

????????return?node

????@staticmethod
????def?get_nearest_list_index(node_list?rnd):
????????“““
????????:param?node_list:
????????:param?rnd:
????????:return:
????????“““

????????d_list?=?[math.sqrt((node.x?-?rnd[0])?**?2?+?(node.y?-?rnd[1])?**?2)?for?node?in?node_list]
????????‘‘‘
????????theta_list?=?[abs(math.atan((node.y?-?rnd[1])/(node.x?-?rnd[0])))?for?node?in?node_list]
????????

????????w_dis?=?0.5
????????w_theta?=?0.5

????????theta_list_normlize?=?[w_theta*(math.pi-theta)/math.pi?for?theta?in?theta_list]
????????d_list_normlize?=?[w_dis*(20-distance)/20?for?distance?in?d_list]

????????metric_list?=?np.array(d_list_normlize)?+?np.array(theta_list_normlize)
????????metric_list?=?metric_list.tolist()
????????‘‘‘
????????
????????min_index?=?d_list.index(min(d_list))
????????return?min_index

????@staticmethod
????def?collision_check(new_node?obstacle_list):
????????a?=?1
????????for?(ox?oy?size)?in?obstacle_list:
????????????dx?=?ox?-?new_node.x
????????????dy?=?oy?-?new_node.y
????????????d?=?math.sqrt(dx?*?dx?+?dy?*?dy)
????????????if?d?<=?size:
????????????????a?=?0??#?collision

????????return?a??#?safe


????def?planning(self?flag):
????????“““
????????Path?planning

????????animation:?flag?for?animation?on?or?off
????????“““
????????if?flag?==?0:
????????????start?=?self.start_Ta
????????????mean?=?[510]
????????????cov?=?[[10][01]]

????????else:
????????????#far_dictribution
????????????start?=?self.start_Tb
????????????mean?=?[205]
????????????cov?=?[[200][01

評論

共有 條評論

相關資源