안녕하세요, 지난번에 새로운 프로젝트를 만들어서 djitello 라이브러리 가져오기를 했고 개발자 깃허브에 들어가서 간단한 소개까지 했습니다. 오늘은 디지텔로 라이브러리에 존재하는 다양한 기능들을 소개하고 직접 드론을 노트북과 연결하여 파이썬으로 조작해보도록 하겠습니다.그럼 같이 봐요!시작에 앞서 지난 포스팅 복습우선 지난 시간에 개발자 GitHub 사이트에 들어가서 어떤 것이 가능한지 확인해 본 것 기억나시나요? 이전 게시물의 일부를 발췌하여 다시 보여드리면 아래와 같습니다. – connect:드론 연결-takeoff:이륙-move_left:왼쪽으로 이동-rotate_counter_clockwise:반시계방향으로 회전-move_forward:앞으로 이동-land:착륙하는 오늘은 직접 파이썬 파일을 만들어 드론을 연결하고 직접 코드를 작성하여 간단한 기능을 구현하도록 하겠습니다. 그럼 시작합시다!1. 드론을 노트북과 연결하는1) 라이브러리 임포트하다먼저 dji 라이브러리를 사용하기 위해서는 코드 맨 위의 행으로 가져오는 프로세스가 필요합니다. 한마디로 이 라이브러리를 작업하고 있는 파일에서 사용한다는 것입니다.from djitelopy import tello 라고 작성해서 지난번 포스팅에서 설치한 라이브러리를 읽고 from time import sleep 으로 작성하고 시간에 관련된 라이브러리도 가져왔습니다.2) 드론을 노트북에 접속하다그러면 기본 기능을 소개해 드리도록 하겠습니다. 먼저 파이썬으로 드론 객체를 만들어야 합니다.나는 내 드론 객체의 이름을 drone이라고 말해주고 tello.Tello()를 사용하여 드론 객체를 작성해 주었습니다.드론 객체를 연결하는 connect() 메서드를 만들어 드론과 노트북이 통신하고 연결할 수 있도록 지시했습니다. (-connect: 드론 연결) 여기서 드론이 연결되어 있는지 확인하기 위해서 현재 드론 배터리를 출력해 보겠습니다. 드론의 배터리를 출력하는 메서드는 .get_battery()입니다.지금 실제로 드론을 켜고 노트북과 연결하는 과정이 필요합니다. 드론을 작동시키면 아래와 같이 와이파이가 연결되어 노트북과 연결할 수 있습니다. 와이파이로 연결하면 드론과 노트북이 통신할 수 있게 되고 파이썬 코드로 드론을 프로그래밍할 수 있습니다.드론이 연결되면 작성한 코드에서 우클릭하여 Run을 시켜보도록 하겠습니다. 동작시키면 통신을 하면서 여러 출력이 이루어지고 마지막으로 우리가 작성한 코드인 드론의 현재 배터리량 61을 출력합니다. 현재 61%라는 뜻이겠죠. 이렇게 드론과의 연결에 성공했습니다.2. 기본기능 구현1) 드론 이착륙시키다드론을 움직이려면 우선순위를 연결하고 이륙시켜야 합니다. 드론이 연결되어 있는지 확인한 후에는 takeoff 메서드를 사용하여 드론을 이륙시키십시오. 반대로 드론을 착륙시키기 위해서는 land()라는 방법을 이용하여 착륙할 수 있습니다.2) 드론 이동다음에는 연결된 드론을 이동시켜 보겠습니다. 드론을 움직일 때는 단순히 비행기처럼 앞으로 나아가는 물체라고 생각해서는 안 되고 헬리콥터라고 생각해야 합니다. 상하, 좌우, 전후, 시계/반시계로 회전할 수 있는 비행체로요.그렇게 동작시키기 위해 우리는 send_rc_control()이라는 메서드를 사용하여 동작시켜 보려고 합니다. 이 메서드는 여러 수치를 입력할 수 있습니다. 간단하게 생각하면 벡터를 생각하면 됩니다. 기체가 0이라는 원점에 있다고 생각하고 움직이는 것입니다.존재하지 않는 이미지입니다.순서대로 알려드리면 아래와 같습니다.-left_right_velocity: (-50)은 왼쪽으로 50, (50)은 오른쪽으로 50-forward_backward_velocity: (50)은 앞으로 50, (-50)은 뒤로 50-up_down_velocity: (50)은 위로 50-yaw_velocity: 시계/반시계방향으로 기체회전간단하게 짧은 코드를 작성해 보았습니다. 여기서 send_rc_control(0,50,0,0)이 의미하는 것은 무엇일까요? 이륙한 후 상하좌우로 움직이지 않고 앞만 50 이동한 후 대기하고 착륙한다는 의미입니다. 슬립(2)은 2분만 잠시 대기한다는 코드입니다. 한 번 실행시켜 보십시오, 실제로 이륙하고 앞으로 움직이다 멈춰 착륙하는 것을 볼 수 있습니다.여기서 다른 방향으로 움직이는 코드를 추가하면 어떨까요?앞으로 움직이는 send_rc_control(0,50,0,0) 이후에 send_rc_control(-30,0,0)을 추가로 생성해 주었습니다. 이것은 왼쪽으로 30분 이동하라는 코드입니다. 한번 실행시켜볼까요?전후좌우로 움직이는 코드를 작성해 보았으니 앞으로는 회전시켜 보겠습니다. yaw_velocity를 30으로 하면 어떻게 되나요? 실행시켜 보세요. 시계 방향으로 30 정도 움직이는 것을 알 수 있습니다. 이것으로 기본적인 기능 구현이 완료되었습니다. 드론을 상하, 좌우, 전후, 시계/반시계로 원하는 만큼 움직이도록 프로그래밍할 수 있게 되었습니다. 신기하지 않아요? 더 신기한 기능을 다음 시간에 보도록 하겠습니다.3) 마무리만약 여러분이 이 메서드가 어떻게 작동하는지 궁금하시면 메서드()의 ctrl+마우스 왼쪽 클릭을 클릭하시면 아래와 같이 실제로 작성된 메서드를 보실 수 있습니다. 이 라이브러리뿐만 아니라 모든 라이브러리에서도 가능하니 한번 궁금하시면 사용해보세요.:) 다음 시간에는 카메라와 키보드를 활용하여 드론 프로그래밍을 진행하고자 합니다.