


令和最初の投稿です(^o^
平成最後に下記の記事を書きました。
この時、初めてScratchを使ってみたのですが面白いですね。
さて、Tello SDKドキュメントを読むとTelloのストリーミングについての記載があります。
Receive Tello Video Stream
Tello IP: 192.168.10.1 ->> PC/Mac/Mobile UDP Server: 0.0.0.0 UDP PORT:11111
コマンドも”streamon”,”streamoff”が用意されています。
これを使ってTelloのカメラ映像をWindows PCに表示できないか探しました。
Tello Video Web Streaming
https://tellopilots.com/threads/tello-video-web-streaming.455/#post-14235
しかしここのフォーラムは楽しいです。ずっと読んでても飽きないです。もちろんGoogle翻訳ですが(^^;
例えばプロペラガードが無い場合は飛行時間が1.5分長くなるとか、サードパーティーのプロペラは何がいいか…
さて上記サイトを読むとffmpegでポート11111で待ち受けておけば映像受信できそうです。
早々に試してみました。
- Windows版FFmpegのダウンロード
- 解凍
- Tello.s2eの修正
- Scratchを起動
- ffplayの実行
- Scratchプログラムの実行
FFmpeg
https://ffmpeg.org/
Windows版はコンパイル済みのバイナリがあります。
https://ffmpeg.zeranoe.com/builds/
Version, Architecture, Linkingを選択して必要なプログラムを選択、Download buildをクリックするとダウンロードが始まります。
今回はVersion 4.1.3, Architecture 64bit, Linking Staticを選択するとffmpeg-4.1.3-win64-static.zipがダウンロードできました。
ffmpeg-4.1.3-win64-static.zipを解凍すると下記のファイルが作成されます。
インストールは必要なく解凍したbinフォルダにあるffplay.exeを使用します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | C:\>dir C:\ffmpeg-4.1.3-win64-static 2019/05/01  10:45    <DIR>          bin 2019/05/01  10:45    <DIR>          doc 2019/04/26  12:09            35,823 LICENSE.txt 2019/05/01  10:45    <DIR>          presets 2019/04/26  12:09             4,305 README.txt C:\>dir C:\ffmpeg-4.1.3-win64-static\bin 2019/04/26  12:09        62,956,032 ffmpeg.exe 2019/04/26  12:09        62,843,392 ffplay.exe 2019/04/26  12:09        62,866,432 ffprobe.exe | 
Scratchに読み込むTello.s2eにストリーミング関係のコマンドを追加します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | {   "extensionName": "Tello",     "extensionPort": 8001,     "blockSpecs": [ // SDK VERSION >= 1.0.0.0         [" ", "takeoff", "takeoff"],         [" ", "land", "land"],         [" ", "fly up %n cm", "up", 50],         [" ", "fly down %n cm", "down", 50],         [" ", "fly left %n cm", "left", 50],         [" ", "fly right %n cm", "right", 50],         [" ", "fly forward %n cm", "forward", 50],         [" ", "fly backward %n cm", "back", 50],         [" ", "rotate %n degree clockwise", "cw", 90],         [" ", "rotate %n degree counter clockwise", "ccw", 90],         [" ", "flip %m.flip", "flip", "f"],         [" ", "set speed to %n cm/s", "speed", 50],         [" ", "fly to x %n cm y %n cm z %n cm with speed %n cm/s", "go", 50, 50, 0, 50], // SDK VERSION >= 1.3.0.0         [" ", "fly a curve via x1 %n cm y1 %n cm z1 %n cm to x2 %n cm y2 %n cm z2 %n cm speed %n cm/s", "curve", 20, 20, 0, 60, 40, 0, 60],         [" ", "Stream ON", "streamon"],         [" ", "stream OFF", "streamoff"],         [" ", "emergency stop", "emergency"],         ["r", "height(cm)", "h"],         ["r", "barometer(cm)", "baro"],         ["r", "tof distance(cm)", "tof"],         ["r", "min temperature(°C)", "templ"],         ["r", "max temperature(°C)", "temph"],         ["r", "attitude pitch(°)", "pitch"],         ["r", "attitude roll(°)", "roll"],         ["r", "attitude yaw(°)", "yaw"],         ["r", "acceleration x(0.001g)", "agx"],         ["r", "acceleration y(0.001g)", "agy"],         ["r", "acceleration z(0.001g)", "agz"],         ["r", "speed x(cm/s)", "vgx"],         ["r", "speed y(cm/s)", "vgy"],         ["r", "speed z(cm/s)", "vgz"],         ["r", "battery(%)", "bat"],     ],     "menus": {         "flip": ["f", "b", "l", "r"], 		"mid": ["m-1", "m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8"],     }, } | 
Scratchを起動してStream関係のコマンドを追加したTello.s2eを読み込んでプログラミングします。
画像は日本語化されていますが、気にしないで(^^;

後は、Telloの電源ON, PCとTelloを無線接続, Tello.jsの起動と前回の手順を実行します。
ffplayを実行します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | C:\ffmpeg-4.1.3-win64-static\bin>ffplay -probesize 32 -i udp://0.0.0.0:11111 -framerate 30 ffplay version 4.1.3 Copyright (c) 2003-2019 the FFmpeg developers   built with gcc 8.3.1 (GCC) 20190414   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth   libavutil      56. 22.100 / 56. 22.100   libavcodec     58. 35.100 / 58. 35.100   libavformat    58. 20.100 / 58. 20.100   libavdevice    58.  5.100 / 58.  5.100   libavfilter     7. 40.101 /  7. 40.101   libswscale      5.  3.100 /  5.  3.100   libswresample   3.  3.100 /  3.  3.100   libpostproc    55.  3.100 / 55.  3.100 [h264 @ 000001408f16fa00] non-existing PPS 0 referenced  0B f=0/0 | 
4月26日に購入したTelloはトイドローンですがすごく飛行が安定しているのと、こうしてプログラミングできるのがいいですね。
Tello EDUを追加購入しようかな。2台で編隊飛行とか。
本当はかっこよくビデオを撮って貼り付けたいのですが、室内だといろいろ変な物が写り込んでしまうので貼り付けられません(笑
