dynamic_rrt3D.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. """
  2. This is dynamic rrt code for 3D
  3. @author: yue qi
  4. """
  5. import numpy as np
  6. from numpy.matlib import repmat
  7. from collections import defaultdict
  8. import time
  9. import matplotlib.pyplot as plt
  10. import os
  11. import sys
  12. sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../Sampling-based Planning/")
  13. from rrt_3D.env3D import env
  14. from rrt_3D.utils3D import getDist, sampleFree, nearest, steer, isCollide, near, visualization, cost, path, edgeset
  15. class dynamic_rrt_3D:
  16. def __init__(self):
  17. self.env = env()
  18. self.Parent = {}
  19. self.E = edgeset() # edgeset
  20. self.V = [] # nodeset
  21. self.i = 0
  22. self.maxiter = 2000 # at least 2000 in this env
  23. self.stepsize = 0.5
  24. self.gamma = 500
  25. self.eta = 2*self.stepsize
  26. self.Path = []
  27. self.done = False
  28. def RegrowRRT(self):
  29. self.TrimRRT()
  30. self.GrowRRT()
  31. def TrimRRT(self):
  32. S = set()
  33. i = 1
  34. for qi in self.V:
  35. qp = self.Parent(qi)
  36. if qp.flag == 'Invalid':
  37. qi.flag = 'Invalid'
  38. if qi.flag != 'Invalid':
  39. S.add(qi)
  40. i += 1
  41. self.V, self.E = self.CreateTreeFromNodes(S)
  42. def InvalidateNodes(self, obstacle):
  43. E = self.FindAffectedEdges(obstacle)
  44. for e in E:
  45. qe = self.ChildEndpointNode(e)
  46. qe.flag = 'Invalid'
  47. def GrowRRT(self):
  48. # TODO
  49. pass
  50. def CreateTreeFromNodes(self, S):
  51. #TODO
  52. pass
  53. def FindAffectedEdges(self, obstacle):
  54. #TODO
  55. pass
  56. def ChildEndpointNode(self):
  57. #TODO
  58. pass