항공기는 차량과 약간 다르게 움직입니다. 차량은 2차원(X와 Y라고 부를 수 있음)에서 작동하기 때문에 앞뒤 또는 좌우로만 움직입니다. 그러나 항공기는 3차원 공간(X, Y, Z)에서 움직입니다. 즉, 지상 차량과 같은 방향으로 움직일 뿐만 아니라 위아래로 움직이며 회전할 수 있습니다. 이 때문에 아래에서 볼 수 있는 것처럼 항공기가 하늘을 통과하는 방법을 설명하는 다른 용어가 있습니다. ✈️
이동 명령
핵심 용어
매개변수(Parameter): 함수 안에서 사용할 값을 표시합니다. 이를 통해 사용자는 함수가 제대로 작동하는 데에 값이 필요하다는 것을 알 수 있습니다.
인수(Argument): 함수가 호출될 때 사용자가 함수에 넣는 실제 값입니다. 예를 들어, 코드 drone.set_roll(25)
에서 값 25는 이 함수의 인수입니다.
드론이 올바르게 작동하도록 하기 위해 지정할 드론의 각 움직임에는 세 가지 구성 요소가 있습니다.
- 드론이 만들고자 하는 움직임 (롤 Roll, 피치 Pitch, 요 Yaw, 스로틀 Throttle )
- 움직임에 적용할 출력 (움직임이 얼마나 빠르기를 원하는지)
- 이동을 실행하거나 지속할 시간⏱️
위 이미지에서 볼 수 있듯이 각 이동 명령은 동일한 형식을 따릅니다. 이동하려는 드론 객체를 지정하고, 수행할 이동 명령을 지정한 다음, 이동하기를 원하는 방향과 속도를 설정합니다. 속도와 방향을 설정할 때 명령에 -100에서 100 사이의 인수 값을 입력합니다. 값 0-100은 사용하려는 드론의 모터 출력 비율입니다. 0은 출력이 없는 상태이고 100은 최대 출력(100%)입니다. 인수 값이 양수 인지 음수인지에 따라 드론의 방향이 결정됩니다. 예를 들어 -50과 50은 같은 속도로 움직이지만 반대 방향으로 움직입니다.
❗주의 하세요! 드론의 출력을 100%로 설정하면 드론이 매우 빠르게 움직여 물체와 충돌하게 됩니다. 드론이 얼마나 빨리 움직이는지 확인하려면 더 낮은 출력 설정에서 시작해서 값을 높여가는 것이 좋습니다.
함수를 호출하면 1단계와 2단계는 처리되지만 3단계는 처리되지 않습니다. 이동 명령에는 이동 시간을 드론에게 알려주는 매개 변수가 없습니다. 이동 명령이 모두 설정(SET)하는 명령이기 때문입니다. 이것은 변수(이동)의 값을 새로운 값으로 변경하는 것을 의미합니다. setter 및 getter 명령의 차이점과 이후 단원에서 변수가 무엇인지 배울 것입니다. 이동 명령으로 드론의 속도와 방향만 설정하거나 변경하기 때문에 이동해야 하는 시간을 드론에 알려주는 move()
라는 별도의 함수가 있습니다.
move(int or decimal seconds) # int는 정수의 약자입니다.
drone.move(1) # 드론이 1초 동안 움직이게 합니다.
drone.move(2.5) # 드론이 2.5초 동안 움직이게 합니다.
이동 명령과 이동 명령을 결합하여 일정 시간 동안 특정 방향으로 드론을 움직이게 할 수 있습니다. 따라서 이동 명령 중 하나를 프로그래밍할 때마다 move()
명령과도 짝을 이루는 것을 잊지 마세요!