[RazDrone] Raspberry Pi Multicopter

# 連載目次
- 概要 Raspberry Pi Multicopter (本稿)
- [ラズパイが空を飛ぶまで (0.準備編)](http://qiita.com/keiya/items/356497327bcb91d03464)
- センサー編
- 制御編
- 飛行編

# 概要
* HTTP(S) により指令を送り、マルチコプターが半自律制御で移動
    * 人間によるスロットル・姿勢制御はなし
* モバイルネットワーク経由によりプロポの出力は関係なし

# 姿勢制御
* A+ = Main (Priority)
    * オーバーライド不可、最優先
* A = Main
* B = Sub
* X = Balance
    * 機体の安定化

|  | Roll / Pitch | Yaw | 姿勢 | 高度 | 位置 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| ジャイロ |   |   | A+ |  |   |
| 加速度 (静) | A+ |  |  |   |   |
| 加速度 (動) | B |  |  |   |   |
| 磁気 | B | A+ |   |  |   |
| 気圧 |   |   |   | A |   |
| GPS |   |   |   | B | A+ |

|  | L | R |
|:-:|:-:|:-:|
| FWD | 1 | 2 |
| AFT | 4 | 3 |


|  | Roll← | Roll→ | ↑Pitch | ↓Pitch | Yaw← | Yaw→ | 高度- | 高度+ |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 12 |   |   | - | + |   |   |   |   | 
| 34 |   |   | + | - |   |   |   |   | 
| 14 | - | + |   |   |   |   |   |   | 
| 23 | + | - |   |   |   |   |   |   | 
| 13 |   |   |   |   | * | * |   |   | 
| 24 |   |   |   |   | * | * |   |   | 
| 1234 |   |   |   |   |   |   | - | + | 

* 加速度センサー
    * 運動を開始した加速時、落下時には姿勢検出として使えない
    * ターゲットのピッチ・ロール角度の維持
* ジャイロ
    * 角速度だけ検出可能。コントロールの安定化
    * 機体のピッチ・ロール動作、回転の停止
    * 大きな角速度変化を抑止
* 磁気
    * 磁場のノイズ干渉があり得るので磁場の仰角を利用した Roll/Pitch への介入はしたくない
    * Yaw への介入だけ
* 気圧
    * 高度の管理用、全モーターへの入力オフセットを変更
* GPS
    * Roll/Pitch に介入


# システム仕様
## 重量

| 部品 | 名称 | 重さ[g] |
|:-:|:-:|:-:|
| フレーム | Hobbyking SK450 | 300 |
| モーター | LDPOWER MT2213-920KV x4 | 221.2 |
| プロペラ | Aerostar Composite Propeller 12x4.5 | 60 |
| ESC | Turnigy Multistar 20A V2 LBEC | 120 |
| CPU | Raspberry Pi 3 w/ Heat Sink | >50 |
| FC | Navio2 | 23 |
| GPS | Navio2 | 31 |
| Cables |  | >20 |

Dry weight: 825 g

| Battery | 重さ[g] |
|:-:|:-:|
| 2S 2200 | 128 |
| 2S 5000 | 282 |
| 3S 2200 | 188 |
| 3S 5000 | 412 |

Wet weight (2S): 0.95kg-1.10kg approx.
Wet weight (3S): 1.00kg-1.24kg approx.

## 電気系
* モーター消費電力 ESC MAX 18A x4 = 72A
* Raspberry Pi 消費電力　2.5A * 5V = 12.5W
    * 3Sまで対応の5.35Vスイッチング電源に接続し、電圧測定した
    * LiPo 2Sの最低ラインである6Vだと正常稼働 (室温22degCでコア温度70degCくらい)
        * 2Sが適正である
    * 6.75V だと raspberry pi が1.2GHzまで稼働 (80degC超えるのでサーマルスロットリング作動)
    * ～15.23V


### 消費見積もり

| 系統 | A | V |
|:-:|:-:|:-:|
| ドライブ系 | 72A+10%  | 7.2-11.1  |
| プロセッサ系 | 2.5A+10% | 5 |

ドライブ系は80A
プロセッサ系は2.75A (13.8W approx.)をみておく。
容量としては85Aあれば良い

### 適切なCの選定

| Voltage | 30A | 85A |
|:-:|:-:|:-:|:-:|
| 2S 7.4V | 222W | 629W |
| 3S 11.1V | 333W | 943.5W |

* 最大の85Aを流すためには
    * 5000mAhなら 17C以上
    * 2200mAhなら 38C以上


### 推力
スロットルが50%の場合に重量と同じ程度の推力があればいいらしい。

データーシート http://www.goodluckbuy.com/ld-power-mt2213-920kv-brushless-motor-cw-ccw-2-pair-for-rc-multicopters.html から鑑みると

| V | プロペラ | 推力[g] | 電流[A] | 消費電力[W] | 効率[G/W] |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 7.4  | 1033 | 250 | 4.15 | 30.71 | 8.14 |
| 7.4  | 1137 | 260 | 4.65 | 34.41 | 7.56 |
| 7.4  | 1240 | 254 | 3.55 | 26.27 | 9.67 |
| 11.1 | 1033 | 352 | 4.75 | 52.73 | 6.68 |
| 11.1 | 1137 | 355 | 5.05 | 56.06 | 6.33 |
| 11.1 | 1240 | 359 | 4.15 | 46.07 | 7.79 |


別のデータでは http://www.hobbyking.com/hobbyking/store/__86647__LDPOWER_MT2213_920KV_Brushless_Multicopter_Motor_CCW_.html

| V | プロペラ | 推力[g] | 電流[A] | 消費電力[W] | 効率[G/W] |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 7.4  | 1033 | 165 | 2.5 | 18.5 | 8.92 |
| 7.4  | 1137 | 202 | 2.7 | 19.98 | 10.11 |
| 7.4  | 1240 | 226 | 3.1 | 22.94 | 9.85 |
| 11.1 | 1033 | 322 | 4.4 | 48.84 | 6.59 |
| 11.1 | 1137 | 385 | 4.8 | 53.28 | 7.22 |
| 11.1 | 1240 | 438 | 5.7 | 63.27 | 6.92 |

(50%スロットル)

重量の2倍の推力が必要なため、2-2.5kgの推力は欲しい。

* 7.4Vの10インチプロペラだと推力250*4 = 1kg なのでぎりぎりOK
    * あと一つのデータではなぜか 165*4=660 で足りなさすぎ
* 7.4V 12インチで1kg
    * あと一つのデータだと904gとなっていてこれもぎりぎり
* 11.1Vだと10インチでも 352*4 = 1.4kg で余力がある
    * あと一つのデータでも1.3kg

結論、7.4Vだとわりとキツキツ。(カメラやコントロール用モバイル回線が積めない)
11.1Vだと推力を半分として考えても170gほど余力ができる

#### プロペラ性能曲線
大きさと推力の比較
![image](https://qiita-image-store.s3.amazonaws.com/0/19148/b402d924-108b-b973-e476-b7faa56c6679.png)

### 推力 対 消費電力
![image](https://qiita-image-store.s3.amazonaws.com/0/19148/d9781c0f-4c10-5640-e309-ac4901b99510.png)

回帰分析
y = 推力, x = 消費電力

| プロペラ | 推力 |
|:-:|:-:|
| 1033 | y = 4.2233x + 90.679 |
| 1137 | y = 4.7818x + 110.28 |
| 1240 | y = 4.5003x + 126.43 |

回帰分析結果から、離陸重量に対する消費電力のグラフ

![image](https://qiita-image-store.s3.amazonaws.com/0/19148/3b365d78-b5ee-accb-6cda-e7b2b90254b5.png)



### 電圧 vs RPM
![image](https://qiita-image-store.s3.amazonaws.com/0/19148/9c7e3105-2afb-ada1-4784-585b2e0036eb.png)

### RPM vs 電流/消費電力
![image](https://qiita-image-store.s3.amazonaws.com/0/19148/4ac687d0-6dd4-b4de-a10a-4d7810f90407.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/19148/701fff7d-1c6c-7a27-f47d-f88ce0881d95.png)

* あまり回すのは無駄
* 4000-5000rpmくらいでホバリングできると悪くない (推力と重量が等しく釣り合う状態)
    * 12inchだと4000rpmで1.0kg、5000rpmで1.6kg程度の推力が出ると思われる。
        * 12inchの場合はこの値の範囲をMTOW（最大離陸重量）としたほうが効率良さそう。
    * 10, 11inchだと4000-5000rpmレンジは800g-900gだと思われる。
        * さすがに900gをMTOWにすると何も積めないのでこちらは効率を諦めて1.2kg程度MTOWにしたほうがいい
            * 5500-5700rpm程度

### 飛行時間計算
#### 7.4V
12inchプロペラだと100%にしなくてもそこそこ推力が出るので75%で換算。
MTOW = max take off weight（最大離陸重量）

| mAh | Prop | Throttle[%] | Amps[A] | Time[min] | MTOW[kg] |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 2200 | 12x40 | 75 |  8.9 | 3.7 | 1.4-1.9 |
| 5000 | 12x40 | 75 |  8.9 | 8.4 | 1.4-1.9 |
| 2200 | 11x37 | 100 | 4.7 | 7.0 | 1.3-1.7 |
| 5000 | 11x37 | 100 | 4.7 | 16.0 | 1.3-1.7 |

2S 7.4V (適正電圧6-8V) はDCDCを使ってRasp3を動かすのに最低必要な電圧。

#### 11.1V
| mAh | Prop | Throttle[%] | Amps[A] | Time[min] | MTOW[kg] |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 5000 | 12x40 | 50 | 5.7 | 13.2 | 1.7 |
| 5000 | 11x37 | 50 | 5.05 | 14.9 | 1.4-1.5 |
| 5000 | 10x33 | 50 | 4.75 | 15.8 | 1.3-1.4 |

5000mAh程度が一番コスパがよさそう

#### 14.8V
| mAh | Prop | Throttle[%] | Amps[A] | Time[min] | MTOW[kg] |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 8000 | 12x40 | 50 | 8.15 | 14.7 | 2.8 |
| 8000 | 11x37 | 100 | 9.65 | 12.4 | 2.9 |
| 8000 | 10x33 | 100 | 14.7 | 8.16 | 3.8 |
| 20000 | 12x40 | 100 | 18.1 | 16.5 | 4.8 |
| 10000 | 11x37 | 100 | 9.65 | 15.5 | 2.9 |
| 10000 | 10x33 | 100 | 14.7 | 10.2 | 3.8 |

8000mAh級になると重すぎて飛行時間は伸びない気がする

# パーツ
## フライトコントローラー
* Raspberry Pi 3 ModelB Element14 購入

![_DSC0257.JPG](https://qiita-image-store.s3.amazonaws.com/0/19148/4bede9fc-debd-4f54-54c3-fe70160f1732.jpeg)



## センサー類
* Navio2 購入
* 3軸加速度、3軸磁気、3軸ジャイロ
* GPS/GLONASS/Beidou
* 気圧計
* PWMジェネレータ
* UART, SPI, I2C コネクタ
* 電圧計

![_DSC0259.JPG](https://qiita-image-store.s3.amazonaws.com/0/19148/1951c450-1a4f-262b-053d-41f094213143.jpeg)

## フレーム
* 大きなプロペラをゆっくりまわして効率あげたいのでデカめのやつにした
* Hobbyking SK450 Glass Fiber Quadcopter Frame 450mm
* $17.99 USD 購入済み

![24291-main.jpg](https://qiita-image-store.s3.amazonaws.com/0/19148/ad45d187-b138-9d76-b2d8-1af40f5ff37c.jpeg)

## DC-DC (Rasp用)
* PWR103 https://emlid.com/shop/power-module/
* 6V～16V → 5.3V 2.25A
* 電圧センサー付き（Navio2経由でRaspで読める）

![Power-module_400x4001.png](https://qiita-image-store.s3.amazonaws.com/0/19148/cb2699b8-8653-7b3f-8d0d-2294b44aa44d.png)


## 920KVモーター/CW (数量2)
* LDPOWER MT2213-920KV Brushless Multicopter Motor (CW)
* $33.98 USD 購入済み

![86646_1_High.jpg](https://qiita-image-store.s3.amazonaws.com/0/19148/494211ff-c6ca-c677-b4ed-351b86a5af5b.jpeg)


## 920KVモーター/CCW (数量2)
* LDPOWER MT2213-920KV Brushless Multicopter Motor (CCW)
* $33.98 USD 購入済み

![86647_2_High.jpg](https://qiita-image-store.s3.amazonaws.com/0/19148/54d056dd-e9b8-1fab-3d7a-3f9c2400bf5f.jpeg)


## プロペラ 1245 (数量2)
* 12inch x pitch 4.5inch
* Aerostar Composite Propeller 12x4.5 Yellow (CW/CCW) (2pcs)
* $20.16 USD 購入済み

![31vtWvut9YL.jpg](https://qiita-image-store.s3.amazonaws.com/0/19148/85c19095-a5e4-dceb-ac8b-876752f81ee9.jpeg)


## ESC (数量4)
* Switching BEC
* Turnigy Multistar 20A V2 ESC With BLHeli and 4A LBEC 2-6S
* $41.88 USD 購入済み

![65153_2_High(1).jpg](https://qiita-image-store.s3.amazonaws.com/0/19148/50d44e0e-9109-8516-1975-a0ce5fa25d79.jpeg)


## ESC Programmer
* ESCのキャリブレーション＋設定用
* Turnigy Multistar USB BLHeli Programmer For V2 Multistar ESC
* $7.12 USD 購入済み

![65150.jpg](https://qiita-image-store.s3.amazonaws.com/0/19148/c119d77d-699e-0c7b-ba26-acda2519daed.jpeg)

## RC
- Navio2では以下のようなPPM (CPPM)対応のレシーバーが必要

```
For ACCST (most FrSky transmitters):
FrSky D4R-II 4ch 2.4Ghz ACCST Receiver
FrSKY V8R7-SP ACCST 7 Channel RX with composite PPM
FrSKY D8R-XP

For FASST (Futaba & some FrSky trasmitters):
FrSky TFR4 4ch 2.4Ghz Surface/Air Receiver FASST Compatible
```

4chでも特に問題はないが8chでもレシーバーの値段変わらないので8chで良さそう。

- https://hobbyking.com/en_us/frsky-d8r-xp-2-4ghz-receiver-w-telemetry-cppm.html
- https://hobbyking.com/en_us/frsky-d4r-ii-4ch-2-4ghz-accst-receiver-w-telemetry.html
- https://hobbyking.com/en_us/frsky-tfr4-4ch-2-4ghz-surface-air-receiver-fasst-compatible.html

FrSkyは、対応のコントローラはこれしかない。
テレメトリー特にいらないし安くならないものか…まあTaranisはOpenTxというのに対応していてUSBでPCに接続できるので応用は効きそう

- [FrSky taranis x9d plus](https://hobbyking.com/en_us/frsky-2-4ghz-accst-taranis-x9d-plus-digital-telemetry-radio-system-mode-2.html)
    - [充電器](https://hobbyking.com/en_us/frsky-ac-dc-charge-adapter-us-version.html)

## その他
分電など

* https://hobbyking.com/en_us/xt60-male-to-four-xt60-female-power-distribution-lead-for-multi-rotor.html
    * バッテリーからXT60を分配
* https://hobbyking.com/en_us/nylon-xt60-connectors-male-female-5-pairs-genuine.html
    * XT60変換コネクタ
* https://hobbyking.com/en_us/vibration-damping-ball-65g-bag-of-8.html
    * 防振