C++ と CMake 入門 その1

注意

  • メモ感覚の記述(言い切り、タメ口)
  • 雑な解釈(本人も完全に理解していない素人)

C++、CMake 入門

 C++ と CMake について勉強しようと思ったので、ここに記録を書く。C++ とは、C言語オブジェクト指向を足したプログラミング言語である。 早速書いてみようと思う。作業環境は以下の通り。

 OS が2つもある理由はお互い併用しているからである。また仕様が大体同じというのもある。
 まずは作業スペースを作ろう。名前はなんでもいいが、わかりやすくしたいので作業スペース(ディレクトリ名)を cpp_ws とする

mkdir ~/cpp_ws
cd ~/cpp_ws

 これで作業スペースの作成は完了である。

hello.cpp を作ろう

nano の使い方

 VimVScode、gedit など、テキストエディタの種類はたくさんあるが、今回は厳選して nano を使おうと思う。 単純に僕が nano が好きだからである。これをみてあなたも nano 信者になってくれると嬉しい。
 さて、本題に入る前に nano の使用方法について説明するわけだが、デフォルトの nano を使うのは正直いけすかない。 というのも、デフォルトの nano は絶望的に使い勝手が悪い。しかし、nano は自分自身で自由にカスタマイズができる。 カスタマイズの仕方は至って簡単である。以下の手順に沿って作業を進めてもらいたい。

1. nanorc をホームディレクトリに作成する

 nanorc とは nano の設定を行うコンフィグファイル の一種である。nanorc は nano の コンフィグディレクト にすでに用意されているが、 ホームディレクトリに自作の nanorc を追加で作成することで、自作 nanorc に記述した設定も反映させることができる。自作 nanorc の作成は以下の通りに行う。
 touch コマンドで先にファイルを作成してもいいのだが、紹介が面倒なので nano コマンドで直接 nanorc を生成することにする。 nanorc ファイルは 必ず隠しファイルとして設定しなければならない 。そうじゃないと反映されない。

nano ~/.nanorc

 すると、下のような nano エディタがターミナル内に表示される。

 これが何も設定されていない素の nano である。

2. nanorc に設定を記述する

 ここに以下のテキストをコピペして貼り付けよう。

# 行番号を表示するように設定
set linenumbers
# タブ(インデントサイズ)を半角 4 マス分に設定
set tabsize 4
# インデントが全てスペースとして認識するよう設定
set tabstospaces
# インデントの状態を自動で補助してくれるように設定
set auttoindent
# nanon エディタ終了時に自動でファイルを保存してくれるように設定
set tempfile
# マウスカーソルでの操作を有効にする
set mouse
# スクロールをスムーズにするように設定
set smooth
# nano に用意されているシンタックスハイライトを全て反映させる(Ubuntu の方はこれをかく。macOS の方は書かないで。)
include "/usr/share/nano/*"
# nano に用意されているシンタックスハイライトを全て反映させる(macOS の方はこれをかく。Ubuntu の方は書かないで)
include "/usr/local/opt/nano/share/nano/*"

 これを nanorc にコピペしたら、Control + X を押したのちに、Yキー を押す。すると元のターミナルに戻る。

3. 確認

 試しにもう一度以下のコマンドを実行して、nanorc を nano でみてみよう

nano ~/.nanorc

 すると、設定を記述した内容の通り、行番号が設定され、マウスで任意の行をクリックすると、 カーソルが指定の場所に移動してくれるようになっているのがわかるだろう。このように、nano は他の CUI エディタと比べて直感的に操作できるのがいい。 画像は少し内容が異なるが、これは自分が他にもいろいろカスタマイズしているからである。

本題に戻る

 本題に戻っで、hello.cpp を作ってみよう。cpp_ws に移動して、hello.cpp を作成しよう。

cd ~/cpp_ws
nano hello.cpp

 hello.cpp では、文字列を標準出力するプログラムを記述する。記述量はそこまで多くはない。早速完成形を見せると、こんな感じである。

//hello.cpp
#include <iostream>
using namespace std;

int main()
{
    cout << "hello" << endl;
}

 一つ一つ説明しよう。

//hello.cpp

 これは コメント文 である。ただ「このプログラムは hello.cpp だよ」とコメントを打っているだけなのでプログラムには一切関係ない。 C++ でコメントを記述するときは、必ず // が必要である。

#include <iostream>

 python をやっている人からすると、これこそコメント文に見えるかもしれないが、これは 標準出力するのに必要なブツを持ってこい という命令文(コード)である。クセで # をつけ忘れないようにしよう。

using namespace std;

 これは std を省略するぞ。というコードである。今は意味を知らなくていい。以下の

#include <iostream>
using namespace std;

 は今後ほぼ毎回入力する羽目になるので、とりあえず C++ ではこの2行は冒頭必ず書く と覚えてほしい。

int main()

 これは メイン関数 を定義するぞ。というコードである。C++ はこのメイン関数内に記述されたコードをはじめに読み取る。 そのためこれも必ず書かなければならない。ちなみに下の行にある

{
    処理部分
}

 もメイン関数の一部である。要は括弧内にプログラムを書くよってことである。改行している理由は見やすくするため。これから長いコードを書く際に 便利である。

    cout << "hello" << endl;

 次はメイン関数内に記述されたこの処理について解説する。cout とは、画面のことである。"Hello" は文字列である。endl は改行を意味する。 つまり、このコードを意味は、

    画面に "Hello" という文字列を、改行して出力しろ

という意味となる。末尾の ; は必ずかこう。これは C 言語の類の共通ルールらしい。よく書き忘れるので注意しよう。
 以上の説明をもとに、この hello.cpp のワークフローを説明すると以下のようになる。

// hello.cpp
標準出力に関する情報を持ってくる
stdライブラリをデフォルトで使用するよ

メイン関数を定義する () 
{
    画面に "Hello" を改行して出力する
}

 描き終わったら Control + X で保存 & nano を終了しよう。

コンパイルする

 プログラミング言語というのは様々な種類があり、 機械が認識する言語(マシン語)を人間でも理解できるように記述できる言語 である。そんな数多くある言語のうちが、今回みている C++ である。さて、パソコンはこの C++ のファイルを直接みても理解することはできない。 マシン語というのは 0 と 1 しか表現するものがないのだ。
 コンパイルとは 人間が理解できるプログラミング言語マシン語に翻訳する作業 である。C++ ファイルをコンパイルする方法はいろいろあるが、 あえて CMake を使ったコンパイル方法を説明する。

CMakeLists.txt を作る

 CMake とは、C++ などのプログラミング言語コンパイルする コンパイラ の一種である。ROS などでよく活用されている。CMake を使ってコンパイルするには、 どんなファイルをどのような方法でコンパイルするか というメニュー表を作ってあげなければならない。そんなメニュー表が CMakeLists.txt である。txt ファイルだが専用の特殊ファイルとして認識される。 nano で CMakeLists.txt を作成しよう。気をつけてほしいのが、C, M, L は大文字なので、ファイル名を間違えないようにしよう。

nano CMakeLists.txt

 nano を開いておいてなんだが、もう一つターミナつを開いて、以下のコマンドを実行して cmake のバージョンを確認しよう。

cmake --version

 すると、こんな感じにバージョンが返される。

cmake version 3.24.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

 バージョンは使用しているパソコンによって異なるので、このバージョン番号を覚えてほしい。
 CMakeList の nano 編集画面に戻って、以下のコードを最初にコピペしよう。

cmake_minimum_required(VERSION )

 この VERSION の横に先ほど確認した cmake のバージョンを記述してほしい。もし cmake のバージョンが 3.24.2 だったら、このように記述する

cmake_minimum_required(VERSION 3.24.2)

 そしたら、project と使用言語を指定する。project とは、ようはこの作業ディレクトリ、cpp_ws のことを言う。そして使用言語は、今回使用している C++ である。 しかし、CMakeList では C++ のことを CXX と表すので、以下のコードを続けて書こう

project(cpp_ws CXX)

 次に、実行ファイルとコンパイルするファイルを設定する。コンパイルされたプログラムは CPU によって処理される前に一旦データとして命令データが保存される。 この保存データを実行ファイルとして保存するのだ。実行ファイルは好きな名前でいい。今回は例として run_hello とする。
 あ、そうそうその実行ファイルとコンパイルするファイルを指定するコードの書き方は以下の通りである。

add_executable(実行ファイル コンパイルするプログラムの名前)

 今回は hello.cpp と言うプログラムファイルを run_hello としてコンパイルしたいので、以下のように書く。 カンマ( , )で区切るとエラーになるので気をつけよう

add_executable(run_hello hello.cpp)

 これで CMakeList の記述は完了である。全体を見るとこのようになる。

cmake_minimum_required(VERSION <cmake のバージョン>)
project(cpp_ws CXX)
add_executable(run_hello hello.cpp)

 これらの意味をまとめると、

cmake(コンパイルするときに使うツールの)バージョンは <cmake --version で確認したバージョン>を指定するよ
コンパイル対象のディレクトリは cppp_ws で C++ のプログラムファイルをコンパイルするよ
そのコンパイルするファイルは hello.cpp で、run_hello と言う名前の実行ファイルを生成するよ。

 となる。かけたら Control + X で保存 & nano を終了しよう。

build ディレクトリを作る

 CMakeList を作成したら、build ディレクトリを作ろう。これは普通に以下のコマンドで build ディレクトリを作るだけ。

mkdir build

 作ったら build ディレクトリに移動しよう。

cd build

コンパイル作業の開始

 build ディレクトリに移動したら、以下のコマンドを実行して、cmake を行う。

cmake ..

 これは 今いるディレクトリより前の階層のディレクトリを cmake する と言う意味である。cmake は CMakeLists.txt を認識すると、その中に書かれている 注文に沿ったコンパイル作業を行う。
 cmake を実行したと言うことは、料理で言うところの注文(CMakeLists.txt)に沿って料理をした(コンパイルした)だけであり、注文したお客さん(あなた) に料理(実行ファイル)がまだ来ていない。と言うわけで、make コマンドを使って料理を持ってこさせよう。この実行ファイルを呼び出すことを ビルド と言う。
 ビルドをする際は、build ディレクトリで以下のコマンドを実行する

make

 すると以下のように実行ファイルが CMakeList.txt を参考に組み立てられる。

[ 50%] Building CXX object CMakeFiles/run_hello.dir/hello_world.cpp.o
[100%] Linking CXX executable run_hello
[100%] Built target run_hello

 終わるとコンパイルとビルドは成功である。

実行

 build ディレクトリを ls コマンドで見てみよう。するとこんなファイルとディレクトリがあるのがわかる。

$ ls
CMakeCache.txt       CMakeFiles/          Makefile             cmake_install.cmake  run_hello*

 この中に、先ほど実行ファイル名として指定した run_hello がある。これをターミナルで指定して実行すると、C++ で記述した hello.cpp が実行される。

./run_hello

 上記のようにカレントディレクトリを指定しないと、認識されないので気をつけよう。
 実行すると、以下のように hello が出力される

$ ./run_hello
hello

 これであなたは C++ で文字列を標準出力する方法と cmake を使ってプログラムをコンパイル、ビルドする方法を学んだ。

Python でドローンプログラミング Tello-Console チュートリアルその1(導入について)

Tello-Console チュートリアル(その1)

 こんにちは。こちらは Tello-Consoleチュートリアル記事(その1)となります。これから初めて Tello-Console を利用する方、Python を初めて扱う方はぜひお読みください。
 このチュートリアルは、Tello-Console のダウンロード方法 と、Tello-Console をダウンロードするにあたり必要な環境構築の方法 をまとめています。

Tello-Console とは?

 Tello-Console とは、DJI 製教育用ドローン Tello シリーズを Python でプログラムできるようにするパッケージ です。このパッケージは 筆者が独自で開発したもので公式によって開発されたものではありません。 そのため一部課題点はありますが、始めてドローンをプログラムする人に向けて最適化された、シンプルなコーディングを提供するパッケージとなっております。
 Tello-Console は LinuxmacOS での動作を前提に開発されましたが、Windows での動作も対応しております。

Tello とは?

 Tello とは、大手ドローンメーカ DJI と大手半導体メーカーの Intelインテル)が共同開発したコンシューマー向け、教育機関向けの小型ドローンです。
 Tello にはいくつか種類があり、現在日本で発売されている Tello は2種類あります。

本パッケージ(Tello-Console)が最も快適に動作するドローンは Tello EDU です。また Tello EDU はプログラム開発に最も特化している機体なので、ドローンプログラミングを始める方は Tello EDU の購入を強くお勧めします。

Python とは?

 Python とは プログラム言語の一種 です。他のプログラム言語より構文が見やすく、誰でも簡単に始めることができるシンプルなプログラム言語です。この言語では人工知能の開発に特化しており、近年はロボット、ドローンの開発言語としても採用されています。Tello-Console は、この Python をベースに機能します。

Python をインストールする

 早速 Python をインストールしてみましょう。その前に お使いのパソコンのOS を知る必要があります。OS とは、WindowsmacOS などのことを指します。OS によって Python を導入する手順が異なりますので、お使いの OS に該当するセクションを読んで作業を進めてください。

WindowsPython をインストールする

注意! Windows 環境では現在ドローンからのカメラビューに遅延が発生する問題を抱えています。そのため LinuxmacOS での使用を推奨しております。問題が解決次第更新いたします。

 Windows には、標準で Python がインストールされていません。 そのため、以下の手順に沿って Python をインストールします。

python

次にエンターキーを押してエンターします。もし、お使いのパソコンに Python がインストールされていなければ、勝手に microsoft store が立ち上がります。

"入手" をクリックして Python をインストールします。

  • Python を実行してみる インストールが完了したら、コマンドプロンンプトに戻りましょう。ここで知っているかもしれませんが、便利なショートカットを教えます。それは ALT + Tab です。キーボードの ALT キーを押した後に Tab キーを押すと、現在開いているウィンドウを行き来することができます。

  • コマンドプロンプトに以下のコマンドを入力してください。

python

するとコマンドプロンプトの表示がこのようになります。(パソコンによって若干表示内容が異なりますが、一番下の2行が以下のように表示されていたら成功です。)

Python 3.9.12 (main, Apr  5 2022, 01:53:17) 
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

このように、末尾に ">>>" が表示されている状態が、Python を記述、実行できる環境に移行したことを表しています。

macOSPython をインストールする

macOS には、標準で Python がインストールされています。 そのため Python のインストールは基本的に不要です。Python を実行するためには、ターミナルを開きます。

  • Command キー + Space キーで Spotlight 検索を開きます。
  • 検索欄に "ターミナル" と入力します。
  • 候補に "ターミナル app" 表示されるので、これをクリックしてターミナルを起動します。
  • 白黒のウィンドウ(ダークモード、ライトモードで表示内容が異なる)が表示されたら、ターミナルの使用の準備が整いました。
  • ターミナルには、以下のような文が一番下に記述されています。
user_name@pc_name:~$ 

これは使用している環境によって表示内容が異なりますが、以下の意味を持っています。

ユーザーネーム@パソコンの名前:ファイルパス$

ファイルパスはデフォルトで " ~ " です。これの意味については後ほど学びます。
- " $ " マークの右側空欄に " python " と入力してエンターキーを押してください。すると、以下のような表示に変わります。(パソコンによって若干表示内容が異なりますが、一番下の2行が以下のように表示されていたら成功です。)

Python 3.9.12 (main, Apr  5 2022, 01:53:17) 
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

このように、末尾に ">>>" が表示されている状態が、Python を記述、実行できる環境に移行したことを表しています。

LinuxPython をインストールする

Linux には、標準で Python がインストールされています。 そのため Python のインストールは基本的に不要です。Python を実行するためには、ターミナルを開きます。

  • Control キー + Alt キー + T キーで " 端末(ターミナル) " 検索を開きます。
  • ターミナルには、以下のような文が一番下に記述されています。
user_name@pc_name:~$ 

これは使用している環境によって表示内容が異なりますが、以下の意味を持っています。

ユーザーネーム@パソコンの名前:ファイルパス$

ファイルパスはデフォルトで " ~ " です。これの意味については後ほど学びます。
- " $ " マークの右側空欄に " python " と入力してエンターキーを押してください。すると、以下のような表示に変わります。(パソコンによって若干表示内容が異なりますが、一番下の2行が以下のように表示されていたら成功です。)

Python 3.9.12 (main, Apr  5 2022, 01:53:17) 
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

このように、末尾に ">>>" が表示されている状態が、Python を記述、実行できる環境に移行したことを表しています。
これで Python の環境は整いました。

Python を使ってみよう

試しに、Pythonスクリプトを記述、実行してみましょう。まずは基本的な四則演算です。四則演算とは、足し算、引き算、掛け算、割り算のことです。">>>" の横に以下のように記述してみてください。

1+1

そしてエンターを押しましょう。すると、以下のように入力した計算の下に計算結果が表示されます。

>>> 1+1
2
>>> 

続けて、引き算もやってみましょう。

1-1

上記を入力したらエンターキーを押してみましょう。すると先ほどと同じように計算結果が出力されます。

>>> 1-1
0
>>> 

続けて掛け算、割り算を行なってみましょう。Pythom では、掛け算の演算子" * (アスタリスク)" を使用します。

2*5

割り算の場合、Python では、" / (スラッシュ)" を使用します。

4/2

次に print 関数 を使用してみましょう。print関数とはprint関数内に記述した数字や文字をターミナル又はコマンドプロンプト上に出力してくれる関数です。以下のプログラムを書いてみましょう。

print("Hallo World")

入力したらエンターキーを押してみましょう。すると下に print関数内に記述した文章が表示されます。

>>> print("Hallo World")
Hallo World
>>> 

Python 入力モードを止めるには、以下のプログラムを入力してください。

quit()

すると、表示がそれぞれ元のプロンプト表記になります。
- Windows の場合

>>> quit()
C:¥User>
>>> quit()
user_name@pc_name:~$

OpenCV をインストールする

 Python のインストールが完了したら、次は OpenCV をインストールします。OpenCV は、Python で画像処理をするために使用するライブラリのです。Tello-Console では、OpenCV を使用してドローンからのカメラビューを取得しますので、このライブラリがインストールされていないと Tello-Console を使用することはできません。
 OpenCV のインストール方法は、OS によって異なります。

WindowsOpenCV をインストール

 OpenCV などの Python に追加のライブラリをインストールするには、pip というコマンド を使用します。先ほど WindowsPython をインストールしたときに pip も一緒にインストールされているため、pip 事態のインストールを行う必要はありません。

pip3 install opencv-python

これでインストールは完了です。

macOSOpenCV をインストール

 OpenCV などの Python に追加のライブラリをインストールするには、pip というコマンドを使用します。

  • ターミナルを開いてください。
  • macOS には pip は標準でインストールされていないため、以下のコマンドを使用して pip をインストールします。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

上記のコマンドを実行すると、" get-pip.py " という Python 実行ファイルがダウンロードされます。 - get-pip.py を実行します。

python3 get-pip.py
  • 実行が完了したら、以下のコマンドで OpenCV をインストールします。
pip3 install opencv-python

これでインストールは完了です。

LinuxOpenCV をインストール

 OpenCV などの Python に追加のライブラリをインストールするには、pip というコマンドを使用します。 - ターミナルを開いてください。 - Linux には標準で pip はインストールされていないため、以下のコマンドで pip をインストールします。 入力が面倒な場合、以下のコマンドをコピーペーストしてください。ですが、気を付けていただきたいのが、ターミナル上でコピペのショートカットキー(Ctrl + C と Ctrl + V)は使用できません。 コマンドプロンプト上でテキストをコピーするときは Ctrl + Shift + C、 コマンドプロンプト上でテキストをペーストするときは Ctrl + Shift + V を使用します。

sudo apt install -y python3-pip
  • 上記のコマンドをエンターキーで実行すると、パスワード入力を求められるため、ログイン時のパスワードを入力してエンターキーを押してください。ターミナル上には入力テキストは表示されませんが、正常に認識しています。
  • 次に OpenCV をインストールします。以下のコマンドで OpenCV をインストールします。
pip3 install opencv-python

これでインストールは完了です。

確認

 OpenCV の無事にインストールできたがどうかを確認するには、前述の Python 入力モードにすると同じように WindowsmacOSLinux 共有で、各プロンプト上に以下のコマンドを入力してください。

python

 次に、以下のプログラムを入力してください。このプログラムは、OpenCV を持ってくるよ。という意味です。

import cv2

この時何も表示されずに次の入力欄が表示されたら OpenCV のインストールは成功です。

>>> import cv2
>>>

もし、以下のような表記(エラー)が表示されたら、正常に OpenCV がインストールされていないことを表しています。もう一度 OpenCV をインストールするセクションを参考に実行してください。

>>> import cv2
ModuleNotFoundError: No module named 'cv2'

GitHub から Tello-Console をダウンロードする

GitHub とは?

 GitHub とは、簡単に言えばプログラムを共有できる場所です。個人が リポジトリ と呼ばれる作業スペースに自身が作ったプログラムを共有し、皆がそれをダウンロード、アクセスできる場所のことです。Tello-Console も、この GitHub にてソースコードを公開しています。GitHub からソースコードをダウンロードするには、使用しているパソコンに Git をインストールする必要があります。

Git をインストールする

Windows に Git をインストールする

 Windows には、標準で Git はインストールされていません。そのため以下の手順で Git のインストールを行う必要があります。

  • 以下のリンクをクリックして、Git for Windows をダウンロードしてください。 https://gitforwindows.org
  • ダウンロードが完了したら、ダウンロードファイルを実行してください。
  • いろいろ書かれt内容のウィンドウが表示されますが、全て "Next" をクリックしてください。
  • 最後のインストール完了画面で、"Finish" をクリックしてください。
  • 検索バーで "git" と入力してください
  • 候補として出てきた "Git Bash" をクリックして、Git Bashを起動します。
  • 以下のようなウィンドウが表示されたらインストール完了です。以降の説明ではこの Git Bashを使用します。このウィンドウは、Widnows で Git 関連の作業ができるものです。また、使用するコマンドが LinuxmacOS と共通となります。
  • 以下のコマンドを実行してホームディレクトリの確認を行います。ディレクトリとは、フォルダのことです。ホームディレクトリとは、Git Bashを開いた時のデフォルトの作業フォルダのことを言います。簡単に言えばスマホのホーム画面のフォルダバージョンと思ってもらえればいいです。
echo ~ 

そしたら、以下のような文字列が表示されます。

echo ~
/c/Users/<ログインしているユーザー名>
  • 上記のコマンドで、ユーザーネームが表示されていたら無事インストール作業は完了です。

macOS で Git を使用する

 macOS には標準で Git がインストールされています。しかし、個人の環境によっては Git をインストールする必要があります。

  • ターミナルをひらいて、以下のコマンドを実行してください。
$ git --version

入力が完了したらエンターキーを押してください。この時、下のような git のバージョンが表示されたら、あなたの環境にはすでに Git がインストールされているため、以降の作業を行う必要はありません。

$ git --version
qit version 2.30.1 (Apple Git-130)
  • もし、上記のコマンドで git のバージョンが表示されなかった場合、以下のようなウィンドウが表示されます。そしたらインストールをクリックして、使用許諾契約に承認してください。
  • インストールが完了したら、1, の手順をもう一度行ってください。バージョンが表示されればインストールは完了です。

    Linux で Git をインストールする

     Linux には標準で git はインストールされていません。そのため、以下の手順で git をインストールする必要があります。

  • ターミナルを開き、以下のコマンドを実行してください。
$ sudo apt install -y git
  • インストールが完了したら、以下のコマンドを入力して実行し、 git のバージョンが表示されたらインストールは完了です。
$ dpkg -l git

Tello-Console をダウンロードする

 Tello-Console のインストールが可能な状態になりました。以下のコマンドを実行して、Tello-Console をダウンロードします。ダウンロード先はホームディレクトリとします。ディレクトリとは、フォルダのことです。ホームディレクトリとは、Git Bashを開いた時のデフォルトの作業フォルダのことを言います。簡単に言えばスマホのホーム画面のフォルダバージョンと思ってもらえればいいです。
 以下のコマンドでホームディレクトリへ移動します。

cd 

 以下のコマンドで Tello-Console をダウンロードします。

git clone https://github.com/GAI-313/Tello-Console.git

これでダウンロードが完了しました。以下のコマンドで tello-Console ディレクトリへ移動してみましょう。

cd Tello-Console

コマンド入力欄の左側がこの状態

user_name@pc_name:~$ 

が、以下のような状態

user_name@pc_name:~/Tello-Console$ 

になり、Tello-Console ディレクトリへの移動が完了していればダウンロードは完了です。

VScode をインストールする

 VSCode とは、Microsoftが提供するプログラムを編集できるテキストエディタです。。こちらではこのソフトを推奨しています。以下のリンクからお使いのパソコンの環境に該当するソフトデータをダウンロードして実行してください。

VScode の環境を設定する

 VScode をインストールしたら、日本語設定と Python拡張機能をインストールします。

  • VScode を開きます
  • 左にあるタブの、上から5番目の 四角いアイコン をクリックします。
  • 検索バーに "Japanese" と入力し、候補として出てきた 地球儀アイコンの Japanese Langage Pack for Visual Studio 拡張機能をインストールします。
  • 上記の拡張機能がインストール出来たら、続けて python と入力し、 python 拡張機能 をインストールします。 これで拡張機能のインストールは完了です。ほかにも拡張機能には様々なツールがあるので、自分で探して VScode を最適化してみるとよいでしょう。

Tllo-Console を実行してみる

 早速 Tello-Console を実行してみましょう。Tello ドローンを用意する必要はありません!

cd %HOMEPATH%
cd Tello-Console
cd ~/Tello-Cnsole
  • 以下のコマンドで sample_boot.py を実行します。
python sample_boot.py

正常に実行できた場合、以下のようなテキストが表示されます。

WELCOME CONSOLE ! TELLO-CONSOLE VX.X.X                                                                                タイムアウト!                                                                                                           send cmd >>> command recv >>> None response                                                                             エラー!ドローンとの通信に失敗しました!                                                                                Tips:ドローンとPCとのWi-Fi接続を確認してください! 

これが実行されれば正常に Tello-Console がインストールでき、Tello を使ったプログラミング学習が可能になります!

Windows を使っている方へ。出力されたテキストの左右に謎の文字列が表示されている場合の対処法

 このセクションは Windows ユーザーに向けての対処法となります。Tello-Console では、本プログラム内で発生したエラーを色で強調表示して画面に出力します。例としてはこんな感じです。

これは ANSI エスケープシーケンス という方法でテキストカラーを表示させています。しかし、WindowsコマンドプロンプトはデフォルトでこのANSI エスケープシーケンスに対応していません。実際ANSI エスケープシーケンスが対応していない環境下では、先ほどのテキストは以下の様に表示されているはずです。

上のテキストのほうが 何が警告で何がヒントなのか、どんなステータスを送っているのか が一目でわかりますよね。Tello-Console ではこのような問題に対応しています。以下を順番に行ってください。

cd Tello-Console\modules
  • code コマンドで現在いるフォルダを指定して VScode を立ち上げます。
code .
  • VScode が立ち上がったら、信頼 をクリックします。
  • VScode 左側にファイル一覧が表示されます。その中の tello.py をクックして、エディタに表示させます。
  • すると tello.py の中身が表示されます。このプログラムが Tello-Console の中心であり本体です。このファイル内の13行目から26行目までの以下のようなファイルを編集します。
# Windows ユーザーの方は以下のプログラム上下にある """ を削除してください
"""
import ctypes

ENABLE_PROCESSED_OUTPUT = 0x0001
ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
MODE = ENABLE_PROCESSED_OUTPUT + ENABLE_WRAP_AT_EOL_OUTPUT + ENABLE_VIRTUAL_TERMINAL_PROCESSING

kernel32 = ctypes.windll.kernel32
handle = kernel32.GetStdHandle(-11)
kernel32.SetConsoleMode(handle, MODE)
"""
# Windows ユーザーの方はこのテキストの上のプログラム上下にある """ を削除してください

7- #から書かれているテキストはコメント文です。コメント文に書かれている内容の通り、14行目と25行目の """ を削除してください。 すると """ でくくられていたプログラムの色が変化します。そしたら Ctrl + S でファイルを保存してください。 - コマンドプロンプトに戻り、以下のコマンドを入力してひとつ前の階層フォルダに移動します。

cd ..
  • 続いて sample_boot.py を実行するプログラムを入力して実行してください。このとき出力されたテキストに色がついたら成功です。
python sample_boot.py



これで Tello-Console のセットアップは完了です。次の記事では、Tello-Console でドローンを離陸させる方法 について記述します。