C# でドローンを飛ばしてみる

C#で制御するドローンは、トイドローンのTELLOを使用しました。

TELLOを選んだ理由は、SDKが公開されており、
SDKにコマンドを送信することで、
機体の制御が可能となっているためです。

今回は、SDKUDPを使用してコマンドを送信し、
TELLOを制御するプログラムを作成してみました。

プログラミングは、以下の環境で行いました。
 ・OS:Windows10
 ・ 統合開発環境(IDE):Visual Studio Community 2017
 ・プログラミング言語C#

以下に実際にTELLOを飛ばしたプログラムの一部及び、
画面イメージを添付します。

《画面イメージ》
f:id:b-kimagure:20180710213246p:plain

《各ボタンの処理》
①Connect TELLOボタンの処理

// UDPクライアントを生成する
udpClient = new UdpClient();

// TELLOへ送信するコマンドを生成する
string connectMessage = "command";
byte[] byteMessage = Encoding.UTF8.GetBytes(connectMessage);

// TELLOへコマンドを送信する
int rcv = udpClient.Send(byteMessage, byteMessage.Length, CONNECT_TELLO_IP, CONNECT_TELLO_PORT);

// TELLOからレスポンスを取得する
this.UdpReciever();

this.btnTakeOff.Enabled = true;


②離陸ボタンの処理

// TELLOへ送信するコマンドを生成する
string connectMessage = "takeoff";
byte[] byteMessage = Encoding.UTF8.GetBytes(connectMessage);

// TELLOへ離陸コマンドを送信する
int rcv = udpClient.Send(byteMessage, byteMessage.Length, CONNECT_TELLO_IP, CONNECT_TELLO_PORT);

// TELLOからレスポンスを取得する
this.UdpReciever();

this.btnTakeOff.Enabled = false;
this.btnLanding.Enabled = true;


③着陸ボタンの処理

// TELLOへ送信するコマンドを生成する
string connectMessage = "land";
byte[] byteMessage = Encoding.UTF8.GetBytes(connectMessage);

// TELLOへ着陸コマンドを送信する
udpClient.Send(byteMessage, byteMessage.Length, CONNECT_TELLO_IP, CONNECT_TELLO_PORT);

// TELLOからレスポンスを取得する
this.UdpReciever();

this.btnTakeOff.Enabled = true;
this.btnLanding.Enabled = false;

↓↓ちなみに、以下のドローンがTELLOです。↓↓