在这里和编程领域我都是新手。我在树莓派上使用多个超声波传感器时遇到问题。我正在制造自动驾驶汽车(种类:)。我在前部之前有一个传感器,我想再将两个传感器放在角落,我正在尝试使这两个传感器一起工作。
我在编码方面有问题(我不能说我对python非常了解,我是新手),有些是如何工作鳕鱼的,但是传感器无法正常工作,它们测量错误,并且其中之一在全部
from picamera.array import PiRGBArray
from picamera import PiCamera
import numpy as np
import time
import cv2
import RPi.GPIO as GPIO
from time import sleep
def main():
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
TRIG = 40
ECHO = 38
TRIG1 = 31
ECHO1 = 29
Motor1A = 16
Motor1B = 18
Motor1E = 22
Motor2A = 13
Motor2B = 11
Motor2E = 15
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(TRIG1, GPIO.OUT)
GPIO.setup(ECHO1, GPIO.IN)
GPIO.setup(Motor1A, GPIO.OUT)
GPIO.setup(Motor1B, GPIO.OUT)
GPIO.setup(Motor1E, GPIO.OUT)
GPIO.setup(Motor2A, GPIO.OUT)
GPIO.setup(Motor2B, GPIO.OUT)
GPIO.setup(Motor2E, GPIO.OUT)
camera = PiCamera()
camera.resolution =(640, 480)
camera.framerate =32
rawCapture=PiRGBArray(camera,size=(640,480))
time.sleep(0.1)
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
GPIO.output(TRIG, False)
time.sleep(0.05)
GPIO.output(TRIG1, False)
time.sleep(0.05)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG1, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
GPIO.output(TRIG1, False)
while GPIO.input(ECHO, ECHO1) == 1:
pulse_start = time.time()
while GPIO.input(ECHO, ECHO1) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance, 2)
print("Mesafe:", distance - 0.5, "cm")
if distance < 20:
print ("Mesafe:", distance - 0.5, "cm Engel algilandi")
GPIO.output(Motor1A, GPIO.LOW)
GPIO.output(Motor1B, GPIO.HIGH)
GPIO.output(Motor1E, GPIO.HIGH)
GPIO.output(Motor2A, GPIO.HIGH)
GPIO.output(Motor2B, GPIO.LOW)
GPIO.output(Motor2E, GPIO.HIGH)
else:
print("Mesafe:", distance - 0.5, "cm")
GPIO.output(Motor1A, GPIO.LOW)
GPIO.output(Motor1B, GPIO.HIGH)
GPIO.output(Motor1E, GPIO.HIGH)
GPIO.output(Motor2A, GPIO.LOW)
GPIO.output(Motor2B, GPIO.HIGH)
GPIO.output(Motor2E, GPIO.HIGH)
imgOriginal = frame.array
imgHSV = cv2.cvtColor(imgOriginal, cv2.COLOR_BGR2HSV)
imgThreshLow = cv2.inRange(imgHSV, np.array([0, 70, 50]), np.array([10, 255, 255]))
imgThreshHigh = cv2.inRange(imgHSV, np.array([170, 70, 50]), np.array([180, 255, 255]))
imgThresh = cv2.add(imgThreshLow, imgThreshHigh)
imgThresh = cv2.GaussianBlur(imgThresh, (3, 3), 2)
imgThresh = cv2.dilate(imgThresh, np.ones((5, 5), np.uint8))
imgThresh = cv2.erode(imgThresh, np.ones((5, 5), np.uint8))
intRows, intColums = imgThresh.shape
circles = cv2.HoughCircles(imgThresh,cv2.cv.CV_HOUGH_GRADIENT,5,intRows/4)
if circles is not None:
print("kirmizi tabela algilandi.Dikkat !")
for circle in circles[0]:
x, y, radius = circle
print("pozisyon x = " + str(x) + ", y = " + str(y) + ", radius = " + str(radius))
cv2.circle(imgOriginal, (x, y), 3, (0, 255, 0), -1)
cv2.circle(imgOriginal, (x, y), radius, (0, 0, 255), 3)
#end for
#end if
else:
print("yol serbest")
cv2.imshow("Frame", imgOriginal)
cv2.imshow("imgThresh",imgThresh)
key = cv2.waitKey(1) & 0xFF
rawCapture.truncate(0)
if key == ord("q"):
return
if __name__ == "__main__":
main()