비행 전 점검이 완료되었으므로 비행 동작을 추가해 보겠습니다! 전방 거리 센서를 사용하여 드론이 장애물에 접근하는지 감지할 수 있습니다. 드론이 장애물을 발견할 때까지 앞으로 날아갈 수 있도록, 물체가 감지되지 않는 else 경우에 대한 몇 가지 코드를 추가해 보겠습니다. 우리의 드론이 장애물을 찾는데 얼마나 걸릴지 모르기 때문에, 우리는 무한으로 while 반복문을 사용할 것이고 우리가 무언가를 발견하면 break
를 사용할 것입니다. 또한 벽을 더 자주 확인할 수 있도록 짧은 시간동안 move
명령을 사용할 것입니다!
먼저 장애물을 찾는 데 시간이 얼마나 걸릴지 모르기 때문에 무한 while 반복문을 만듭니다.
while True:
다음으로 우리는 비행 움직임과 장애물 감지를 위한 조건문을 추가할 것입니다. 이 while 반복문은 계속 실행되기 때문에 이동 명령을 짧은 시간 동안 실행하면 장애물에 대한 조건문이 더 자주 실행됩니다. 예를 들어, 드론이 이동 명령을 내리는 시간 동안은 드론이 눈을 감고 있다고 생각할 수 있습니다. 드론이 눈을 감고 있는 시간이 짧을수록 장애물을 확인하기 위해 더 자주 눈을 뜨게 됩니다.👀
drone.set_pitch(30)
drone.move(0.2)
if drone.detect_wall(distance):
print("장애물 감지됨")
break
또한 장애물이 감지되면 조건문 끝에 break
를 추가하여 반복하는 동안 while 반복문이 종료되도록 합니다!
마지막으로 장애물이 발견되었다는 메시지를 출력하고 드론에게 착륙 명령을 보내는 일만 남았습니다.
다음은 이 레슨의 완성된 코드입니다.
from codrone_edu.drone import *
drone = Drone()
drone.pair()
distance = 500 # 500 mm (50 cm)
if drone.detect_wall(distance):
print("이륙 구역이 명확하지 않습니다. 종료합니다.")
else:
drone.takeoff()
while True:
drone.set_pitch(30)
drone.move(0.2)
if drone.detect_wall(distance):
print("장애물 감지됨")
break
print("장애물 감지됨... 착륙합니다!")
drone.land()