Telloとパソコンの通信の部分を少しわかりやすくしてみました
Telloとパソコンの通信の部分を少しわかりやすくしてみました

Telloとパソコンの通信の部分を少しわかりやすくしてみました

PCからドローンを操作するsocket通信プログラムを少しだけ解説してみました。

udp code

import threading

import とは インポートとはプログラムの起動方法の一種といえます。基本的には 他のファイルをロードし、そのファイルの内容にアクセスする権限を得る操作。インポートという操作を行うことで、他のファイル中のコードができる。thread とは 筋道・脈絡 の意。スレッドによる並行処理を管理する。スレッドを使用するとプログラムは1つのプロセス空間で複数の処理を並行に実行できます。

持っていて損はない!!楽しい!!
長時間遊ぶなら これ!!
使うと世界が変わる~


import socket

socket とは ソケット(ソケットインターフェース)データーの出入り口。インターフェースとは2つ以上の機器をつなぐ場合に必要な技術。ソケットはネットワークプロトコルに対して最も一般的に使用される低レベルのインターフェースです。

   
import sys

sysモジュールは Python環境のさまざまな部分を操作するために使用される関数と変数を提供します。


import time

   timeモジュールは 時間を扱うことができるモジュール

#UDPソケット作成(通信の設定)
プロトコルとは、アルタイム性が重視される音声通話や動画配信などで利用されています。
プロトコルとは、コンピュータでデータをやりとりするために定められた手順や規約、信号の電気的規則、通信における送受信の手順などを定めた規格を意味します。通信をおこなうコンピュータ同士の間で定められた「通信規格」のことです。コンピュータ同士が通信をおこなうためには、さまざまなプロトコルが必要になります。
「UDP(User Datagram Protocol)」は、インターネット上で標準的に利用されている通信プロトコルの一種です。

  データを送信する側のコンピューターが、相手のコンピューターの状態にかかわらず一方的にデータを送り始めます。受信する側のコンピューターが正しくデータを受け取れたか確認する機能もないため、UDPは「コネクションレス型」のプロトコルと呼ばれています 

UDPはデータが宛先に届いたかどうかは関知しない。複数の相手に同時にデータを送信できる TCPよりリアルタイム性が高い。

host = ‘ ‘

   host = ‘ ‘ は ’0.0.0.0’と同じ意味 すなわち全てのネットワークインタフェースを使う。


port = 9000
locaddr = (host,port)   

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) :アドレスファミリとソケットタイプの組み合わせで 通信方法を決定する。

socket.AF_INET

IPv4専用インターネットファミリ 2つのホスト間の接続

IPv4とは:IPインターネットプロトコルでインターネットに接続されたコンピュータ同士がデーターをやり取りするためにデーター通信の方法を定めた規約のことで、インターネットに接続されたコンピューターを識別するためのIPアドレスが割り当てられIPv4はこのIPアドレスを32ビットのデーターとして表現するものです。

socket.SOCK_DGRAM

データーグラム指向 送受信ソケットは一定の塊(データーグラム)単位で扱うためデーターの区切りを直接観測できるソケットタイプの性質をあらわしたもの。


IP アドレス & ポート番号の確認は以下の Tello SDK マニュアルで確認します

tello_address = (‘192.168.10.1’, 8889)

ocerviwe

Tello SDKのマニュアルをダウンロードします。

https://www.ryzerobotics.com/jp/tello/downloads

tello dwn

sock.bind(locaddr) について

サーバー側はバインド(関連付け)は必要 ソケット作成時には名前がありません。アドレスがソケットに関連付けられるまで参照できない。

つまり通信プロセスはアドレスを介して接続される。

def recv():

データーの取得


count = 0
while True:

コネクションするまで永久ループ


try:
data, server = sock.recvfrom(1518)

受信は最大1518バイトまで ネットワークのバッファサイズ。受信結果はdata変数に入る。


print(data.decode(encoding=”utf-8″))
except Exception:
print (‘\nExit . . .\n’)
break

ドローンは楽しい!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です