Tello-Console2 メソッド一覧

Tello-Console2の概要、インストールは以下のサイトをご覧ください。

https://qiita.com/GAI-313/items/64bd912d4ee730132ff8

# メソッドとは
　メソッドとは、簡単にいうと **ある機能そのもの** を指します。TELLO-CONSOLE2 では、ドローンを制御したり、ドローンから状態を取得するなどさまざまな機能をメソッドとして提供します。
 
<a id="toc"></a>
# メソッド一覧
　Tello Console2 に含まれるメソッドは **[TELLO SDK 3.0](https://dl.djicdn.com/downloads/RoboMaster+TT/Tello_SDK_3.0_User_Guide_en.pdf)** と **[TELLO SDK 1.3](https://dl-cdn.ryzerobotics.com/downloads/tello/20180910/Tello%20SDK%20Documentation%20EN_1.3.pdf)** に準拠しています。

## メソッドを扱う前に
　TELLO-CONSOLE2 を使用するには以下のコードを必ず書く必要があります。
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()
```
　このとき、**TELLO-EDU** を使用する場合、以下のように `Console` クラスに `drone_type="TELLO-EDU"` を代入してください。
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化。TELLO-EDUを使用する場合はdrone_type引数に機種を入力する。
drone = Console(drone_type="TELLO-EDU")
```
　TELLOとTELLO-EDUで使用できるメソッドの種類とメソッドの扱い方が少し変わるので気をつけてください。

## 基本制御メソッド
- **[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#takeoff)**
- **[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#land)**
- **[up](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#up)**
- **[down](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#down)**
- **[forward](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#forward)**
- **[down](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#down)**
- **[right](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#right)**
- **[left](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#left)**
- **[cw](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#cw)**
- **[ccw](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#ccw)**
- **[go](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#go)**
- **[flip](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#flip)**
- **[emergency](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#emergency)**
## 取得メソッド
- **[get_status](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#get_status)**
## 高度制御メソッド
- **[rc](#rc)**
- **[height_tof](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#height_tof)**

トップへ戻る

https://qiita.com/GAI-313/items/64bd912d4ee730132ff8

<a id="takeoff"></a>
# takeoff
　ドローンを離陸させるメソッドです。$\text{takeoff}$ メソッドは以下の引数を含みます。
 ```python
 Console.takeoff(wait=10)
 ```
 - **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、**通信エラー** を出して Tello-Console2 を停止します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを離着陸させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのちすぐに着陸します。
　このサンプルコードに記述されている```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#land)** を参照してください。

:::note warn
**サンプルコードを実行する前に周囲の明るさを確保してください。**
　TELLO は仕様上ある程度の明るさがないと **正常にホバリングできず、飛行中不自然な方向に移動します。** 事故防止のため事前に飛行エリアが十分明るいことを確認してください。
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="land"></a>
# land
　ドローンを着陸させるメソッドです。$\text{land}$ メソッドは以下の引数を含みます。
 ```python
 Console.land(wait=10)
 ```
 - **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを離着陸させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのちすぐに着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#takeoff)** を参照してください。
 
:::note warn
**サンプルコードを実行する前に周囲の明るさを確保してください。**
　TELLO は仕様上ある程度の明るさがないと **正常にホバリングできず、飛行中不自然な方向に移動します。** 事故防止のため事前に飛行エリアが十分明るいことを確認してください。
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="up"></a>
# up
　ドローンを任意の高さ分上昇させるメソッドです。$\text{up}$ メソッドは以下の引数を含みます。
 ```python
 Console.up(distance, wait=10)
 ```
- **distance $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     20 < \text{distance} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを上昇させる高さを設定します。実行時、与えられた高さ分ドローンは上昇します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 50 cm 上昇させる
drone.up(50)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを50cm上昇させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 50cm 上昇し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**up メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.up(50)
```
の値を変えてみましょう。するとドローンが上昇する高さが変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="down"></a>
# down
　ドローンを任意の高さ分降下させるメソッドです。$\text{down}$ メソッドは以下の引数を含みます。
 ```python
 Console.down(distance, wait=10)
 ```
- **distance $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     20 < \text{distance} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを降下させる高さを設定します。実行時、与えられた高さ分ドローンは降下します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 20 cm 降下させる
drone.down(20)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを20cm降下させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 20cm 降下し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**down メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.down(20)
```
の値を変えてみましょう。するとドローンが降下する高さが変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="forward"></a>
# forward
　ドローンを任意の距離分前進させるメソッドです。$\text{forward}$ メソッドは以下の引数を含みます。
 ```python
 Console.forward(distance, wait=10)
 ```
- **distance $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     20 < \text{distance} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを前進させる高さを設定します。実行時、与えられた高さ分ドローンは前進します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 100 cm 前進させる
drone.forward(100)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを100cm前進させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 100cm前進し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**forward メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.forward(100)
```
の値を変えてみましょう。するとドローンが前進する距離が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="back"></a>
# back
　ドローンを任意の距離分後進させるメソッドです。$\text{back}$ メソッドは以下の引数を含みます。
 ```python
 Console.back(distance, wait=10)
 ```
- **distance $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     20 < \text{distance} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを後進させる高さを設定します。実行時、与えられた高さ分ドローンは後進します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 50 cm 後進させる
drone.back(50)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを50cm後進させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 50cm後進し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**back メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.back(50)
```
の値を変えてみましょう。するとドローンが後進する距離が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="right"></a>
# right
　ドローンを任意の距離分右移動させるメソッドです。$\text{right}$ メソッドは以下の引数を含みます。
 ```python
 Console.right(distance, wait=10)
 ```
- **distance $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     20 < \text{distance} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを右移動させる距離を設定します。実行時、与えられた距離分ドローンは右移動します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 100 cm 右移動させる
drone.right(100)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを100cm右移動させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 100cm右移動し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**right メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.right(100)
```
の値を変えてみましょう。するとドローンが右移動する距離が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="left"></a>
# left
　ドローンを任意の距離分左移動させるメソッドです。$\text{left}$ メソッドは以下の引数を含みます。
 ```python
 Console.left(distance, wait=10)
 ```
- **distance $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     20 < \text{distance} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを左移動させる距離を設定します。実行時、与えられた距離分ドローンは左移動します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 100 cm 左移動させる
drone.left(100)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを100cm左移動させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 100cm左移動し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**left メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.left(100)
```
の値を変えてみましょう。するとドローンが左移動する距離が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="cw"></a>
# cw
　このメソッドは $\text{Clock Wise}$ （時計回り）の略で、ドローンを任意の角度分時計回りに旋回させるメソッドです。$\text{cw}$ メソッドは以下の引数を含みます。
 ```python
 Console.cw(angle, wait=10)
 ```
- **angle $\text{(degree)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     1 < \text{angle} < 360
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを時計回りに旋回させる距離を設定します。実行時、与えられた角度分ドローンは時計回りに旋回します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 90 度 時計回りに旋回（右旋回）させる
drone.cw(90)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを90度右旋回させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 90度右旋回し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**cw メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.cw(90)
```
の値を変えてみましょう。するとドローンが右旋回する角度が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="ccw"></a>
# ccw
　このメソッドは $\text{Counter Clock Wise}$ （反時計回り）の略で、ドローンを任意の角度分反時計回りに旋回させるメソッドです。$\text{ccw}$ メソッドは以下の引数を含みます。
 ```python
 Console.ccw(angle, wait=10)
 ```
- **angle $\text{(degree)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     1 < \text{angle} < 360
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。
    　この引数はドローンを反時計回りに旋回させる距離を設定します。実行時、与えられた角度分ドローンは反時計回りに旋回します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを 90 度 反時計回りに旋回（左旋回）させる
drone.ccw(90)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを90度左旋回させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 90度右旋回し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**ccw メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.ccw(90)
```
の値を変えてみましょう。するとドローンが左旋回する角度が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="go"></a>
# go
　ドローンを任意の位置へ移動させるメソッドです。$\text{go}$ メソッドは以下の引数を含みます。
 ```python
 Console.go(x, y, z, speed, wait=10)
 ```
- **x $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -500 < \text{x} < -20; 20 < \text{x} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。加えて、上記の通り、$\text{-20 ~ 20}$ の範囲は指定できません。
    　この引数はドローンを x 座標の移動量（前後移動）を設定します。負の値を入れると後方へ移動し、正の値を入れるとドローンは前進します。
- **y $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -500 < \text{y} < -20; 20 < \text{y} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。加えて、上記の通り、$\text{-20 ~ 20}$ の範囲は指定できません。
    　この引数はドローンを y 座標の移動量（左右移動）を設定します。負の値を入れると左方向へ移動し、正の値を入れるとドローンは右方向へ移動します。
- **z $\text{(cm)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -500 < \text{z} < -20; 20 < \text{z} < 500
     $
     　この引数は **必須引数** です。値を代入しないとエラーになります。加えて、上記の通り、$\text{-20 ~ 20}$ の範囲は指定できません。
    　この引数はドローンを z 座標の移動量（上下移動）を設定します。負の値を入れると下降し、正の値を入れるとドローンは上昇します。
- **speed $\text{(cm/s)}$**
    引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     10 < \text{speed} < 100
     $
    この引数は 必須引数 です。値を代入しないとエラーになります。
    　この引数はドローンが移動する際の移動速度を設定します。
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを100cm前へ、100cm右へ、100cm上の位置へ 50cm/sで移動させる
drone.go(100,100,100,50)

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを任意の方向へ移動させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 前へ100cm、右へ100cm、上へ100cm の位置に向かって 50cm/s の速度で飛行し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**go メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.go(100,100,100,50)
```
の値を変えてみましょう。するとドローンが移動する位置が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="flip"></a>
# flip
　ドローンを任意の方向へ宙返り（フリップ）させるメソッドです。$\text{flip}$ メソッドは以下の引数を含みます。
 ```python
 Console.flip(direction, wait=10)
 ```
- **direction $\text{(direction)}$**
    　引数に対応する型は $\text{str}$ です。以下の文字列を文字列から選択してください。

     - ```"f"```:前方へフリップ
     - ```"b"```:後方へフリップ
     - ```"l"```:左方向へフリップ
     - ```"r"```:右方向へフリップ

     この引数は **必須引数** です。値を代入しないとエラーになります。
     
- **wait デフォルト値:= $10 \text{ (sec)}$**
     引数に対応する型は $\text{int}$、$\text{float}$ または $\text{None}$ です。
     　このメソッド実行後ドローンが応答するまで待機する時間を設定します。デフォルトでは10秒間ドローンからの応答を待機し、待機時間以上ドローンからの応答がない場合、エラーメッセージを出します。
      　この引数に $\text{None}$ を設定すると、ドローンからの応答を無視して次の処理へ移行します。

:::note warn
**flip メソッドはドローンのバッテリー残量が 50% 以下の環境では使用できません**
:::

:::note alert
**狭い空間、暗い環境下ではこのメソッドを実行しないでください。**
機体、その他物件の破損や怪我のリスクが高まります。
:::

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# ドローンを後方へ宙返りさせる
drone.flip("b")

# ドローンを着陸させる
drone.land()
```
　このサンプルコードはドローンを90度右旋回させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは離陸したのち 90度右旋回し、その後着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
**flip メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.flip("b")
```
の値を変えてみましょう。するとドローンが右旋回する角度が変化します！
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="emergency"></a>
# emergency
　飛行中のドローンのモータを停止させ、自己墜落させます。このメソッドは引数を持ちません。
 ```python
 Console.emergency()
 ```

:::note alert
**このメソッドを実行すると、ドローンは墜落します！**
このメソッドを実行することでドローン本体またはその他物品が破損する恐れがあります。緊急時にこのメソッドを使用するようにしてください。
:::

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

try:
    # 常にドローンが旋回するようにする
    while True:
        drone.cw(180)
    
    # ドローンを着陸させる
    drone.land()

# Ctrl + C が押された時ドローンが墜落するように設定
except KeyboardInterrupt:
    drone.emergency() 
```
　このサンプルコードはドローンが例外発生時に墜落させる最もシンプルなコードです。このサンプルコードを実行すると、ドローンは常に旋回し続けます。しかし *Control + C* によって**KeyboardInterrupt** がレイズされると墜落します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```cw```メソッドについては、**[cw](https://qiita.com/GAI-313/items/8cdb167368a620d809d#cw)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。
 
:::note info
以上が発生した時にドローンが直ちに停止する機構を作ることで安全性が向上します。このメソッドをうまく使って安全なコードを構築しましょう。
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

<a id="get_status"></a>
# get_status
　ドローンから任意のステータスを取得するメソッドです。このメソッドが以下の引数をとります。
 ```python
 Console.get_status(*keys)
 ```
 - **keys**
     　取得したいステータスを指定します。引数を指定しない場合全てのステータスをリストで返します。
      　指定可能なキーワードは以下の通りです。
       
|Key名|単位|概要|
|:---:|:---:|:---|
|$\text{mid}$|$\text{id}$|検出したミッションパッドの ID 名を取得します。ミッションパッドが検出できなかった場合、$-1$ を返します。<br>　<font color="red">TELLO EDU 以外のドローンでは使用できません。</font>|
|$\text{x}$|$\text{cm}$|ドローンから検出したミッションパッドまでの **前後距離* を取得します。<br>　<font color="red">TELLO EDU 以外のドローンでは使用できません。</font>|
|$\text{y}$|$\text{cm}$|ドローンから検出したミッションパッドまでの **左右距離* を取得します。<br>　<font color="red">TELLO EDU 以外のドローンでは使用できません。</font>|
|$\text{z}$|$\text{cm}$|ドローンから検出したミッションパッドまでの **上下距離* を取得します。<br>　<font color="red">TELLO EDU 以外のドローンでは使用できません。</font>|
|$\text{mpry}$|$\text{[pitch, roll, yaw]} degrees$|検出したミッションパッドの pitch、roll、Yaw軸を度数法で取得します。|
|$\text{pitch}$|$\text{degrees}$|ドローンの Pitch 角を取得します。|
|$\text{roll}$|$\text{degrees}$|ドローンの roll 角を取得します。|
|$\text{yaw}$|$\text{degrees}$|ドローンの yaw 角を取得します。|
|$\text{vgx}$|$\text{cm/s}$|ドローンの x軸方向の速度を取得します。|
|$\text{vgy}$|$\text{cm/s}$|ドローンの y軸方向の速度を取得します。|
|$\text{vgz}$|$\text{cm/s}$|ドローンの z軸方向の速度を取得します。|
|$\text{templ}$|$\text{℃}$|機体温度の最低温度を取得します。|
|$\text{temph}$|$\text{℃}$|機体温度の最高低温度を取得します。|
|$\text{tof}$|$\text{cm}$|機体の相対高度を取得します。|
|$\text{height}$|$\text{cm}$|機体の絶対高度を取得します。tof より解像度が低いです。|
|$\text{baro}$|$\text{hPa}$|機体気圧センサーからの気圧情報を取得します。|
|$\text{time}$|$\text{Sec}$|飛行時間を取得します。|
|$\text{agx}$|$\text{deg/s}$|x 軸方向の加速度を取得します。|
|$\text{agy}$|$\text{deg/s}$|y 軸方向の加速度を取得します。|
|$\text{agz}$|$\text{deg/s}$|z 軸方向の加速度を取得します。|

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸
drone.takeoff()

# ドローンの ToF 高度を取得
tof = drone.get_status("tof")

# ドローンを着陸
drone.land()

# 離陸時の対地高度を表示
print("離陸時の高度: %d"%tof)
```
　このサンプルコードではドローンが離陸した時の対地高度を取得します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。

## サンプルコード2
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンの現在の姿勢を取得
roll, pitch, yaw = drone.get_status("roll", "pitch" "yaw")

# 離陸時の対地高度を表示
print("ロール軸: %d, ピッチ軸: %d, ヨー軸: %d"%(roll, pitch yaw))
```
　サンプルコード2は、複数のステータスを取得する最も単純なコードです。
 ```python
 drone.get_status("roll", "pitch" "yaw")
 ```
 のように複数のキーを引数に入れることでそのキーに応じた値を返します。サンプルコードでは `roll`、`pitch`、`yaw` を要求しています。するとそれに応じてドローンの各軸の状態を返します。
 
:::note info
**get_status メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.get_status("roll", "pitch" "yaw")
```
の値を変えてみましょう。するとドローンから得られる方法を選択することができます。
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

 # rc
 　ドローンにコントローラー制御を渡します。$\text{rc}$ メソッドは以下の引数を含みます。
```python
Console.rc(roll, pitch, thorttle, yaw)
```
- **roll $\text{(%)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -100 < \text{roll} < 100
     $
    　この引数はドローンの左右の移動量を設定します。負の値を入れると右方へ移動し、正の値を入れると左へ移動します。

- **pitch $\text{(%)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -100 < \text{pitch} < 100
     $
    　この引数はドローンの前後の移動量を設定します。負の値を入れると後方へ移動し、正の値を入れると前進します。

- **throttle $\text{(%)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -100 < \text{throttle} < 100
     $
    　この引数はドローンの上下の移動量を設定します。負の値を入れると下降し、正の値を入れると上昇します。

- **yaw $\text{(%)}$**
    　引数に対応する型は $\text{int}$ です。設定可能な範囲は以下の通りです。
     $
     -100 < \text{yaw} < 100
     $
    　この引数はドローンの左右旋回の移動量を設定します。負の値を入れると右方へ旋回し、正の値を入れると左へ旋回します。

::: note warn
　このコードを実装するときは飛行エリアが十分の広さであることをお勧めします。
:::

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console
# time モジュールをインポート
import time

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

#常にドローンが左右に移動するようにする
while True:
    # Ctrl + C が押されるまで以下の動作を行う
    try:
        drone.rc(roll=50) # 50%　の出力で右方向へ移動
        time.sleep(5) # 5秒間待機
        drone.rc(roll=-50) # 50% の出力で左方向へ移動
    # Ctrl + C が押されたら while ループから抜け出す
    except KeyboardInterrupt:
        break

drone.rc(roll=0) # 移動を止める
drone.land()  #　着陸
```
　このサンプルコードは rc メソッドを使用して5秒刻みでドローンを左右に移動させるアクションを実装します。左右移動は Control + C によるプログラム終了ショートカットが実行されると終了し、その場でドローンを着陸させます。
 　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。

:::note info
**rc メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.rc(roll=-50)
```
の値を変えてみましょう。するとドローンの移動量や移動方向が変化します。
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)

# height_tof
　ドローンを指定した対地高度まで移動させるメソッドです。$\text{height_tof}$ メソッドは以下の引数を含みます。
```python
Console.height_tof(height, speed)
```
- **height $\text{(cm)}$**
　　目標の対地高度を cm で入力します。
    この引数は **必須引数** です。値を代入しないとエラーになります。
- **speed $\text{(cm/s)}$**
    　目標高度へ移動する際の最大飛行速度を設定します。デフォルト値は 100cm/s です。

## サンプルコード
```python
# tello console2 Console クラスをインポート
from tello_console2.console import Console

# Console クラスをインスタンス化
drone = Console()

# ドローンを離陸させる
drone.takeoff()

# 150cm の高度へ飛行する
drone.height_tof(150)

drone.land()  #　着陸
```
　このサンプルコードはドローンの飛行高度を変更する最もシンプルなアクションを実装します。このプログラムでは離陸後に 150 cm の高度へ移動し、着陸します。
　このサンプルコードに記述されている```takeoff```メソッドについては、**[takeoff](https://qiita.com/GAI-313/items/8cdb167368a620d809d#takeoff)** を、```land```メソッドについては、**[land](https://qiita.com/GAI-313/items/8cdb167368a620d809d#land)** を参照してください。

:::note info
**height_tof メソッドの値を変えてみよう**
　サンプルコードに記述されている
```python
drone.height_tof(150)
```
の値を変えてみましょう。するとドローンが移動する高度が変化します。
:::
[メソッド一覧に戻る](https://qiita.com/GAI-313/items/8cdb167368a620d809d8#基本制御メソッド)