Example #1
0
    else:
        percent_makeup = 0

##########################################################################################

    obs_motor_speed = int(
        calcOBSPID(obs_sp, percent_makeup, old_err, ObsPIDgains, dt))

    if obs_motor_speed > MAX_SPEED:
        obs_motor_speed = MAX_SPEED

    print("% makeup: " + str(percent_makeup) + " PID Motor Speed: " +
          str(obs_motor_speed))

    if not np.isinf(cx) and not np.isnan(cx):
        line_motor_diff = int(
            calcLinePID(line_sp, cx, old_line_err, LinePIDgains, dt))
        print("cx:" + str(cx) + " PID:" + str(line_motor_diff) + "\n")
        leftMotor.setSpeed(obs_motor_speed - line_motor_diff)
        rightMotor.setSpeed(obs_motor_speed + line_motor_diff)
    else:
        leftMotor.setSpeed(0)
        rightMotor.setSpeed(0)

    old_err = old_err + (obs_sp - percent_makeup)
    old_line_err = old_line_err + (line_sp - cx)

    #	print(obs_motor_speed/3)

    time.sleep(dt)
Example #2
0
		leftMotor.run(Raspi_MotorHAT.BACKWARD)
		rightMotor.run(Raspi_MotorHAT.BACKWARD)
		obs_motor_speed = abs(obs_motor_speed)
	else:
		leftMotor.run(Raspi_MotorHAT.FORWARD)
		rightMotor.run(Raspi_MotorHAT.FORWARD)
 

	### Initialize the differential between motors ###
	line_motor_diff = 0

	### If the centroid is not NaN or Inf ###
	if not np.isinf(cx) and not np.isnan(cx):

		### Calculate the PID value for motor speed differential ###
		line_motor_diff = int(calcLinePID(line_sp, cx, old_line_err, LinePIDgains, dt))

		### Print values to the terminal ###
		print("cx:"+str(cx)+" PID:"+str(line_motor_diff)+"\n")

		### Set the left and right motor speed ###
		leftMotor.setSpeed(obs_motor_speed-line_motor_diff)
		rightMotor.setSpeed(obs_motor_speed+line_motor_diff)

	else:
		### Set the left and right motor speed ###
		leftMotor.setSpeed(0)
		rightMotor.setSpeed(0)

	### Calculate the running error ###
	old_err = old_err + (obs_sp - percent_makeup)
Example #3
0
    lines = cv2.HoughLinesP(edged, 1, np.pi / 180, 1, 10, 10)

    theta = 0
    if lines.any():
        for x in range(0, len(lines)):
            for x1, y1, x2, y2 in lines[x]:
                if x1 > xsize * .25 and x2 < xsize * .75:
                    # print(x1,y1,x2,y2)
                    cv2.line(edged, (x1, y1), (x2, y2), (0, 255, 0), 2)
                    theta = theta + math.atan2((y2 - y1), (x2 - x1))

    obs_motor_speed = calcOBSPID(obs_sp, percent_makeup, old_err, ObsPIDgains,
                                 dt)
    obs_motor_speed = int(obs_motor_speed / 3)
    old_err = old_err + (obs_sp - percent_makeup)

    if not np.isinf(theta) and not np.isnan(theta):
        line_motor_diff = int(
            calcLinePID(line_sp, theta, old_line_err, LinePIDgains, dt))
        #print(line_motor_diff)

    else:
        line_motor_diff = int(0)

#	print(obs_motor_speed/3)

    leftMotor.setSpeed(70 - line_motor_diff)
    rightMotor.setSpeed(70 + line_motor_diff)

    time.sleep(dt)
Example #4
0
    percent_makeup = avoidObs(frame, px, w, h)

    masked = l.color_filter(frame, ind)
    roi_img = l.roi(masked)
    canny_img = l.canny(roi_img)
    hough_img = l.linedetect(canny_img)

    #	print(l.differentialSlope)
    #	print("Percent of Screen Taken: "+str(percent_makeup))

    obs_motor_speed = calcOBSPID(obs_sp, percent_makeup, old_err, ObsPIDgains,
                                 dt)
    obs_motor_speed = int(obs_motor_speed / 3)
    old_err = old_err + (obs_sp - percent_makeup)

    if not np.isinf(l.differentialSlope) and not np.isnan(l.differentialSlope):
        line_motor_diff = int(
            calcLinePID(line_sp, l.differentialSlope, old_line_err,
                        LinePIDgains, dt))
        print(line_motor_diff)

    else:
        line_motor_diff = int(0)

#	print(obs_motor_speed/3)

    leftMotor.setSpeed(70 - line_motor_diff)
    rightMotor.setSpeed(70 + line_motor_diff)

    time.sleep(dt)