###概要
こんにちは。
openFrameworksを使ってTelloの制御アプリを組み立てていたんですが、初期の方でつまづきました。
Telloをご存知でない方へ少し説明をすると、
・小型のドローン
・スマホで簡単に操作できる
・公式からSDKが出てたりなどプログラミングしやすい(Python)
・UDP通信でも動き、カメラなどの制御ができる
など、汎用性が高いドローンです。
###やりたいこと
UDP通信を使ってTelloの動きを制御したいです。
予想では、"t"を押すとTelloに"takeoffを送り離陸、"l"を押すとTelloに"land"を送り着陸するはずでした。
###やったこと
アドオンはofxNetworkを使用しました。
oF公式のサイトを見つつUDP通信ができるよう書いたつもりです。
TelloとPCを接続し実行したのですが、無反応でした。
###環境
macOS Mojave 10.14.4
openFrameworks 10.1
Xcode 10.2.1
###以下コード
ofApph
1pragma once 2 3#include "ofMain.h" 4#include "ofxNetwork.h" 5 6class ofApp : public ofBaseApp{ 7 8 public: 9 void setup(); 10 void update(); 11 void draw(); 12 13 void keyPressed(int key); 14 void keyReleased(int key); 15 void mouseMoved(int x, int y ); 16 void mouseDragged(int x, int y, int button); 17 void mousePressed(int x, int y, int button); 18 void mouseReleased(int x, int y, int button); 19 void mouseEntered(int x, int y); 20 void mouseExited(int x, int y); 21 void windowResized(int w, int h); 22 void dragEvent(ofDragInfo dragInfo); 23 void gotMessage(ofMessage msg); 24 25 ofxUDPManager udpConnection; 26 27 ofTrueTypeFont mono; 28 29}; 30
ofAppcpp
1#include "ofApp.h" 2#define RECONNECT_TIME 400 3 4//-------------------------------------------------------------- 5void ofApp::setup(){ 6 7 ofSetVerticalSync(true); 8 ofSetFrameRate(60); 9 ofEnableAntiAliasing(); 10 ofBackground(0, 0, 0); 11 12 udpConnection.Create(); 13 udpConnection.Connect("192.168.10.1",8889); 14 udpConnection.SetNonBlocking(true); 15 16} 17 18//-------------------------------------------------------------- 19void ofApp::update(){ 20 21} 22 23//-------------------------------------------------------------- 24void ofApp::draw(){ 25 26 string buf = "Tello UDP test\n"; 27 buf += "takeoff -> t, land -> l"; 28 ofDrawBitmapStringHighlight(buf, 15, 30); 29} 30 31//-------------------------------------------------------------- 32void ofApp::keyPressed(int key){ 33 34 if(key == 't'){ 35 string message = "takeoff"; 36 udpConnection.Send(message.c_str(), message.length()); 37 }else if(key == 'l'){ 38 string message = "land"; 39 udpConnection.Send(message.c_str(), message.length()); 40 } 41 42}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。