드론이 정사각형 하나를 그리면서 비행하는 데 얼마나 걸리는지, 또는 앞으로 2초 동안 이동할때 실제로 2초가 걸리는지, 프로그램의 한 부분이 얼마나 걸리는지 확인하고 싶다면 어떨까요? 확인 가능한 방법이 있습니다. 프로그램에서 이동 중에 타이머를 사용하면 됩니다.
이번에는 예제를 위해 우리는 영화 촬영을 위한 드론을 프로그래밍한다고 가정합니다. 감독은 웅장한 마지막 장면을 위해 두 배우 주변을 360도 연속 촬영하기를 원합니다. 영화에서 사용하려면 최소 30초의 영상이 필요합니다. 이 프로그램에서는 time 라이브러리를 사용하여 30초 동안 지속되는 반복문을 만들고 배우를 중심으로 원을 그리며 비행하도록 합니다.
codrone_edu, time 라이브러리를 가져와서 드론 개체를 만들고 페어링한 후 드론을 이륙하세요.
다음으로 반복문에 대한 변수를 만들어야 합니다. 반복문 직전의 시간을 캡처할 start_time
을 만듭니다. 또한 end_time
을 만들고 필요한 비행 시간에 대해 start_time
변수 값 + 30초를 할당합니다.
from codrone_edu.drone import *
import time
drone = Drone()
drone.pair()
drone.takeoff
start_time = time.time()
end_time= start_time + 30
이제 반복문을 생성해야 합니다. 이를 위해 start_time
을 end_time
과 비교하고 종료 시간보다 작으면 계속해서 원을 그립니다. 우리는 drone.circle()
함수를 사용하고 있습니다. 원한다면 직접 원을 그리도록 프로그래밍을 할 수 있지만, 그렇지 않은 경우 다음 코드와 같이 실행합니다.
while start_time < end_time:
drone.circle()
start_time = time.time() #동작이 완료되면 시간을 업데이트합니다.
각 동작 후에 start_time
을 업데이트해야 합니다. 그렇지 않으면 무한 반복문이 만들어 집니다. 이유는 무엇일까요?
이제 드론을 착륙시키세요. 비행 시간이 충분한지 확인하려면 시작 시간과 종료 시간의 차이를 출력하는 행을 추가하세요. 드론은 충분히 비행 했나요? 정확히 30초였나요? 시간이 정확하지 않다면 왜 그럴까요?