MacBook의 Terminal에 Tello의 조종 명령을 수동으로 입력해 원격 조작해 보았다

참고로 한 사이트


  • 縣佳男 (주식회사 일본 시스템 기술연구) 「Python으로부터 드론을 조작해 보는 이야기.」

  • 전체 구성





    (① Tello와 Macbook 간의 Wifi 소통 확인)


  • Wifi 친기(Host): Tello 본체 (※)
    ※ Tello 본체에는 Wifi 라우터가 표준 사양으로 내장되어 있습니다
  • Wifi 슬레이브(Client): MacBook
  • MacBook의 Wifi 접속처 일람으로부터, Tello의 액세스 포인트(AP ※)를 찾아, 선택.
    ※ Tello 내장 Wifi AP의 (local) IP 주소는 $192.168.10.1$.
  • 접속 후, Tello의 AP의 로컬 IP 주소($192.168.10.1$)에 대해서, MacBook으로부터 ping을 날려, Tello와 MacBook과의 소통을 확인.

  • Terminal
    electron@diynoMacBook-Pro Tello % ping 192.168.10.1
    PING 192.168.10.1 (192.168.10.1): 56 data bytes
    64 bytes from 192.168.10.1: icmp_seq=0 ttl=255 time=1.624 ms
    64 bytes from 192.168.10.1: icmp_seq=1 ttl=255 time=2.079 ms
    64 bytes from 192.168.10.1: icmp_seq=2 ttl=255 time=1.979 ms
    ^Z
    zsh: suspended  ping 192.168.10.1
    

    Python 스크립트 파일의 존재 확인



    (결과)
    현재 디렉토리에 있습니다.
    ( 현재 디렉토리 : Desktop 바로 아래의 Tello 디렉토리 )

    Terminal
    electron@diynoMacBook-Pro Tello % ls
    ello_python.py
    electron@diynoMacBook-Pro Tello %
    

    Python3을 사용할 수 있는지 확인


  • 이번에 실행하는 스크립트 파일은 Python3의 사용을 전제로 합니다.

  • Terminal
    electron@diynoMacBook-Pro Tello % python3 --version
    Python 3.9.6
    electron@diynoMacBook-Pro Tello % 
    electron@diynoMacBook-Pro Tello % python --version
    Python 2.7.16
    electron@diynoMacBook-Pro Tello % 
    

    Terminal 명령 입력 화면 (예)


  • 착륙 명령("command")의 실행 종료 후, Ctrl-Z로, 스크립트를 빠져 종료.
  • 이번은, 이하의 순서로, 명령을 송출했습니다.

  • 명령 전달 순서
    ① 離陸(takeoff) 
    ② 時計回り90度回頭(cw 90) 
    ③ 50(cm)前進(forward 50) 
    ④ 着陸(land) 
    

    Terminal
    electron@diynoMacBook-Pro Tello % python3 Tello_python.py
    Telloに送る指示コマンドを入力してください。:  takeoff
    Telloに送る指示コマンドを入力してください。:  cw 90
    Telloに送る指示コマンドを入力してください。:  forward 50
    Telloに送る指示コマンドを入力してください。:  land
    Telloに送る指示コマンドを入力してください。:  ^Z
    zsh: suspended  python3 Tello_python.py
    electron@diynoMacBook-Pro Tello % 
    

    실행한 스크립트



    縣씨의 코드를 일부 변경했습니다.
  • 縣佳男 (주식회사 일본 시스템 기술연구) 「Python으로부터 드론을 조작해 보는 이야기.」

  • Tello_python.py
    import threading 
    import socket
    import sys
    import time
    
    host = ''
    port = 9000
    locaddr = (host, port) 
    
    # Create a UDP socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    tello_address = ('192.168.10.1', 8889)
    
    sock.bind(locaddr)
    
    def recv():
        count = 0
        while True: 
            try:
                data, server = sock.recvfrom(1518)
            except Exception:
                print ('\nExit . . .\n')
                break
    
    #recvThread create
    recvThread = threading.Thread(target=recv)
    recvThread.start()
    
    while True: 
        # 最初に入力が必要な"command"命令は、ユーザが打ち込まなくて良いようにスクリプト側でTelloに送出する
        msg = str("command").encode(encoding="utf-8") 
        sent = sock.sendto(msg, tello_address)
        # "takeoff"以降の命令をユーザ入力から受け取る
        try:
            msg = input("Telloに送る指示コマンドを入力してください。:  ")
            if not msg:
                break  
    
            # Send data
            msg = msg.encode(encoding="utf-8") 
            sent = sock.sendto(msg, tello_address)
    
    
        except KeyboardInterrupt:
            sock.close()  
            break
    
    

    Tello 명령 목록



    Tello SDK 매뉴얼에 게재되어 있습니다.
    - htps // dlcd 응. ry 제로보치 cs. 이 m/두w응아 ds/꼭/0228/꼭+SDK+레아 d메. pdf

    또한, 커맨드 일람을, 일본어의 표 형식으로 정리한 것은, 이하의 웹 페이지에 게재되고 있습니다.
    - 합동회사 미도리아이티 'Python에 의한 드론 'Tello'의 제어'

    좋은 웹페이지 즐겨찾기