Ejemplo n.º 1
0
def avoid(direction):
    '''장애물 회피 comment 입력 필요'''
    #dummy code
    stop()
    sleep(1)
    #return 0
    #sample code, 아마 도착시 대각선으로 닿아 있는 편이 좋을 듯
    stop()
    sleep(0.1)

    #회전
    car.engine(True, False, 30, 30)

    while ultraModule.getDistance() < 25:
        pass
    stop()
    sleep(0.1)

    car.engine(True, True, 30, 30)
    sleep(0.6)
    stop()
    sleep(0.1)

    #전진
    car.engine(True, True, 20, 40)
    #sleep(1)
    while not trackingModule.bit2():
        pass
    stop()
    sleep(0.3)

    car.engine(True, True, 30, 30)
Ejemplo n.º 2
0
def avoid(direction):
    '''장애물 회피 comment 입력 필요'''
    #dummy code
    stop()
    sleep(1)
    #return 0
    #sample code, 아마 도착시 대각선으로 닿아 있는 편이 좋을 듯
    if direction == 'l':
        stop()
        sleep(0.1)

        #회전
        car.engine(True, False, 0, 30)
        sleep(1)
        car.engine(False, False, 10, 50)  #휘어서 후진? 그냥 후진?
        while not trackingModule.bitCount() >= 3:
            pass
        stop()
        sleep(1)
        car.engine(False, False, 0, 30)
        while ultraModule.getDistance() < 30:
            pass
        sleep(0.5)  #쪼끔만 더 돌자
        stop()
        sleep(0.1)

        #전진
        car.engine(True, True, 20, 60)
        #sleep(1)
        while not trackingModule.bit16():
            pass
        stop()
        sleep(1)
Ejemplo n.º 3
0
def go_forward_any(speed):
    leftmotor(forward0)
    GPIO.output(MotorLeft_PWM, GPIO.HIGH)
    rightmotor(forward1)
    GPIO.output(MotorRight_PWM, GPIO.HIGH)
    # to avoid collision between go_forward_any method and turn method, insert a infinite loop
    while 1:
        distance = getDistance()
        if distance < dis:
            break
        LeftPwm.ChangeDutyCycle(speed)
        RightPwm.ChangeDutyCycle(speed)
Ejemplo n.º 4
0
def avoid(direction):
	'''장애물 회피 comment 입력 필요'''
	#dummy code
	stop()
	sleep(1)
	#return 0
	#sample code, 아마 도착시 대각선으로 닿아 있는 편이 좋을 듯
	stop()
	sleep(0.1)

	#회전
	car.engine(True, False, 30, 30)

	while ultraModule.getDistance()<25:
		pass
	stop()
	sleep(0.1)

	car.engine(True, True, 30, 30)
	sleep(0.6)
	stop()
	sleep(0.1)
		
	#전진
	car.engine(True, True, 20, 40) 
	#sleep(1)
	while not trackingModule.bit8():
		pass
	stop()
	sleep(0.3)

	count=0
	car.engine(True, True, 25, 0)
	while not trackingModule.bit2():
		count+=1
		print(count)
		if count%1500==0:
			car.engine(True, True, 25, 0)
		elif count>60000:
			car.engine(True, True, 30, 30)	
		pass
	stop()
	sleep(0.3)

	car.engine(True, True, 30, 30)
Ejemplo n.º 5
0
if __name__ == "__main__":
    try:
        Tmode = input("choose 'l or 'r'")
        dis = 13  ###수정해도 됨
        #차 시동을 건다.
        car.startUp()
        endline = True
        if Tmode == 'l':
            car.engine(True, True, 30, 35)
        else:
            car.engine(True, True, 35, 30)
        sleep(0.1)

        while endline:
            distance = ultraModule.getDistance()  ###초음파센서
            if distance < dis:
                print(distance)
                avoid(Tmode)
            else:
                endline = lineTracking(Tmode)

        #차 시동을 끈다.
        car.turnOff()
    #ctrl + c 키로 종료한 경우
    except KeyboardInterrupt:
        print("강제종료 하셨습니다.")
    #오류로 인한 종료 시 시동끄기 함수 호출. 없다면 오류로 프로그램이 종료된 이후에도 바퀴가 돌 수 있다.
    finally:
        car.turnOff()
Ejemplo n.º 6
0
	PPicar.engine(False, True, speed, speed)

def right_point_turn(speed):#left moter true, right motor false
	PPicar.engine(True, False, speed, speed)

#need infinitive turn

#need print current status

if __name__ == "__main__":
	dis=20
	obs=1
	PPicar.startUp()
	
	while obs<3:
		distance = ultraModule.getDistance()
		if distance > dis
			go_forward(25)
		else:
			PPicar.stop()
			left_swing_turn()
			obs+=1
			PPicar.stop()
			sleep(1)	
	PPicar.stop()
	print('clear')




Ejemplo n.º 7
0
#  define your variables and find out each value of variables
#  to perform the project3 with ultra sensor
#  and swing turn
# =======================================================================
dis = 20  # ??
obstacle = 1

# when obstacle=1, the power and
# running time of the first turn
SwingPr = 90  # student assignment (8)
SwingTr = 0.9  # student assignment (9)

try:
    while True:
        # ultra sensor replies the distance back
        distance = getDistance()
        print('distance= ', distance)

        # when the distance is above the dis, moving object forwards
        if (distance > dis):
            go_forward_any(30)
            print("now i'am going")
            print('obstacle=', obstacle)

        # when the distance is below the dis, moving object stops
        else:
            stop()
            rightSwingTurn(53, 1)  #go reverse 'r'shape
            print("turn around")
            # stop and wait 1 second
            stop()