Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1.  
  2.  
  3. from rplidar import RPLidar
  4. import RPi.GPIO as GPIO
  5.  
  6. def CheckStatus(FrontArray, LeftArray, RightArray):
  7. FrontObstacle = 0
  8. LeftObstacle = 0
  9. RightObstacle = 0
  10. for x in FrontArray:
  11. if (x[0] >5) and (x[2] <400):
  12. FrontObstacle =1
  13. for y in LeftArray:
  14. if (y[0] >5) and (y[2] <400):
  15. LeftObstacle = 1
  16. for z in RightArray:
  17. if (z[0] >5) and (z[2] <400):
  18. RightObstacle = 1
  19. if (FrontObstacle == 0):
  20. GoForward()
  21. elif (LeftObstacle==0):
  22. GoLeft()
  23. elif (RightObstacle==0):
  24. GoRight()
  25. else:
  26. Stop()
  27.  
  28. def GoForward():
  29. print('Going Forward')
  30. pwm.ChangeDutyCycle(30)
  31. GPIO.output(Motor2E,GPIO.LOW)
  32.  
  33. def GoLeft():
  34. print('Going Left')
  35. pwm.ChangeDutyCycle(30)
  36. GPIO.output(Motor2A,GPIO.LOW)
  37. GPIO.output(Motor2B,GPIO.HIGH)
  38. GPIO.output(Motor2E,GPIO.HIGH)
  39.  
  40. def GoRight():
  41. print('Going Right')
  42. pwm.ChangeDutyCycle(30)
  43. GPIO.output(Motor2A,GPIO.HIGH)
  44. GPIO.output(Motor2B,GPIO.LOW)
  45. GPIO.output(Motor2E,GPIO.HIGH)
  46.  
  47. def Stop():
  48. print('Stopping')
  49. pwm.ChangeDutyCycle(0)
  50. GPIO.output(Motor2E,GPIO.LOW)
  51.  
  52. GPIO.setmode(GPIO.BOARD)
  53. Motor1A = 16
  54. Motor1B = 18
  55. Motor1E = 12
  56. Motor2A = 21
  57. Motor2B = 23
  58. Motor2E = 19
  59. GPIO.setup(Motor1A,GPIO.OUT)
  60. GPIO.setup(Motor1B,GPIO.OUT)
  61. GPIO.setup(Motor1E,GPIO.OUT)
  62. GPIO.setup(Motor2A,GPIO.OUT)
  63. GPIO.setup(Motor2B,GPIO.OUT)
  64. GPIO.setup(Motor2E,GPIO.OUT)
  65. pwm=GPIO.PWM(Motor1E, 100)
  66. pwm.start(30)
  67.  
  68. PORT_NAME = '/dev/ttyUSB0'
  69. lidar = RPLidar(PORT_NAME)
  70. i=0
  71. left=[];
  72. right=[];
  73. front=[];
  74. try:
  75. print('Recording measurments... Press Crl+C to stop.')
  76. for measurment in lidar.iter_measurments():
  77. #line = '\t'.join(str(v) for v in measurment)
  78. isNewMeasurment = measurment[0]
  79. signalHealth = measurment[1]
  80. degrees = int(round(measurment[2],0))
  81. distance = int(round(measurment[3],0))
  82. #print(str(isNewMeasurment) + str(signalHealth) + str(degrees) + str(distance) + '\n')
  83. if (degrees>325) or (degrees<35):
  84. front.append([signalHealth, degrees, distance])
  85. elif (degrees>270) and (degrees<325):
  86. left.append([signalHealth, degrees, distance])
  87. elif (degrees>35) and (degrees<90):
  88. right.append([signalHealth, degrees, distance])
  89. if (degrees==357) or (degrees==358) or (degrees==359):
  90. CheckStatus(front, left, right)
  91. left[:] = []
  92. right[:] = []
  93. front[:] = []
  94.  
  95. except KeyboardInterrupt:
  96. print('Stoping.')
  97.  
  98. lidar.stop()
  99. lidar.stop_motor()
  100. lidar.disconnect()
  101. GPIO.output(Motor1E,GPIO.LOW)
  102. GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement