黙って飛べ [pyspa advent 2016 #5]

> この記事は [pyspa Advent Calendar 2016](http://www.adventar.org/calendars/1435) の[第5日目の記事](http://www.adventar.org/calendars/1435#list-2016-12-05)です。


# ドローン初めてちょうど一年くらいやり続けてどうか？

<img width="537" alt="スクリーンショット 2016-12-05 17.43.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/4036/09e2ef72-1bfb-2f0b-6f04-23be14f51905.png">

そろそろ老害認定 レベル６の a2cです。どんどん周りを否定して、昔の話ばかりしてこうと思います。
去年の１０月頃に、ドローンレースに興味を持ち始め、１２月くらいに初めてのレーサー１機目を制作していた頃だったと思う。それから早一年、IT業界は進化が速いと言うがDrone界隈の進化の速度は、同じかそれ以上に速いと感じた一年だった。

Drone界隈でこの１年進化したシグナル系のトレンドのまとめと、おすすめのPIDの理解と設定方法
今から始めたいひと向けの、おすすめセットを紹介を今年のネタとする。

<img width="712" alt="スクリーンショット 2016-12-05 17.43.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/4036/749f95ad-ed7d-244d-2b23-d637152e0b92.png">
↑ 最初に作ったＵ１９9機体 とても勉強させてもらった。最期は海にダイブしたｗｗ

# シグナルのトレンド
今年になってほぼシグナルの種類が淘汰されて使用するプロトコルが安定してきた。
今のおすすめ定番シグナルを各種類別で列挙する。

### プロポ電波： fasst-multi
![icon_02.jpg](https://qiita-image-store.s3.amazonaws.com/0/4036/95080b9f-c14b-5483-26e7-fdc53425a822.jpeg)
fasstの中にも複数の種類があるが、fasst-multiというのがおすすめ
fasstは、FUTABA的には嬉しくないかもしれないが各種互換受信機が豊富で、特に純正品と比較してもかなりコンパクトな受信機が各種販売されている。また、fasstの中でもmultiモードが一番レイテンシが少なくより機敏に動かすことが可能となる。




### 受信機プロトコル： SBUS
<img width="285" alt="スクリーンショット 2016-12-05 18.18.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/4036/114bc8d1-2b5e-4df7-9246-25c4784b8977.png">

上記電波と密接な関係があるが、現在選択するなら、FCに入力するデータはほぼSBUS一択と言っても過言ではない。去年は、PWM、PPM、SBUSの違いすらわからなかった。PWMは信号線を大量に接続する必要があるためメンテナンス性も含め選択するメリットはない。1ワイヤー（とは言え+,-,Signalの3本）接続のシリアル接続がPPMとSBUSで行うことが出来る。この際にどちらがBetterかはレイテンシの量で選択するとSBUS一択となる。

ざっくりいうと、遅延量は以下の通り

- PPM： 約150ms
- SUBS：約20ms

コレだけ違うとなると、よほどの先行入力大好きっ子じゃないとPPMを選択するメリットはない。

### ESC シグナル： multishot
<img width="551" alt="スクリーンショット 2016-12-05 18.20.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/4036/f569ba7d-b8ed-6b67-b61d-ea0edf07ef59.png">

2016年もっともホットな分野が、ESCのプロトコルのアップデートと言っても過言ではないだろう。Pilotからしてみれば特に設定もなく、ただ新しいプロトコルを選択するだけで明らかに機体の動きが機敏になりストレス無くフライト制御できるようになる夢のアップデートだった。
1年前はOneShot125が一般的でそれ以外はPWM制御だった。それが今年は、OneShot42が出たと思えば、MultiShotが出て、今やDShotがテストされている。OneShot42は、KissFCの専売特許なので、OneShot１２５とMultiShotの比較をすると

- OneShot125:   4Khz
- MultiShot:    32Khz

MultiShotのほうが数倍モーターへの制御を多く行うことが出来る。PIDのループタイムの短縮によりより細かく制御が行えるようになったため、ESCへのプロトコルも併せて短縮化されている。
よって、現状選択するならMultiShotが使用可能なESCをおすすめする。BLHeli-Sと記載のあるESCであればMultiShotを利用することが出来る。（ 無印BLHeliでもMultiShot対応FWを書き込むことで利用可能であるが、あえてその製品を選択するメリットもない）

# PID設定のおすすめ方法

どんなに高級なパーツをそろえ、丹精込めてはんだ付けを行っても、自分のスキルに見合った設定を行わないと、気持ちよく飛ばせないし、面白くない。また、設定とは自分の好みやスキルに応じてセットアップする為万人が満足する設定というものはない。

ココではどのように自分の好みの設定を見つけ出すかしかも、なるべく早く設定を出す方法を説明する。

## PIDの場合
### 設定値オーダーは、FCとFW次第
PIDおよびRATEの設定が機体の操縦安定性において重要設定項目になる。しかし、全世界のPilotの頭を悩ます問題がファームウェア（CleanFlight:CF, BetaFlight:BF, RaceFlight:RF)や、使用するバージョンにより各設定のオーダーが異なることである。

　オーダーが異なるというのは、あるパラメータの設定範囲が ０〜１００の間なのか、０〜１の間なのか、40degみたいな絶対値なのかがソフトウェア毎に入力値が違う。
オーダーも分からないまま、設定を出すのは困難な作業と言わざるをえない。
昔の自分は、デフォルト値からちょっとずつ上げたり下げたりしたが思い通りの設定が、中々できなかった。 0~2000の設定範囲の項目で0.1ずつ変更したり、0~10の設定項目で10ずつ設定変更していたためだ。そこで、初めて使うFWや、バージョンアップした際には、以下の手順をおすすめする。

### STEP1)設定可能範囲を大まかに洗い出す
今から設定したいパラメーターの入力フォームに極端に大きな値と、極端に小さな値を入力してみる。大抵の場合「MaxValue is XXXX」ミタイナ感じで警告が出るので、そのValidation情報を参考に、最大・最小値を求める。

Validationが働かない場合にはどうするのか？ 実際にでかい値を入れて飛ばしてみるしか無い。その際に注意スべきポイントは、１箇所のパラメータしかいじらないこと。特にRATEは、複数のパラメータ間が独立せずに、係数となっている相互に掛け合わさっているため、複数弄るとほぼ何が行われているのか把握することは不可能になる。

### Step2) 半分で割っていく 最小＞中間・・・
最大が分かったら（最低は大抵の場合０）、最大と最小の中間の値で飛ばしてみる。
例えば、Pの値が０〜１２８であった場合には、

|     | P | I | D |
|:--  |:--|:--|:--|
|Roll | 64  | 0  | 0  |
|Pitch| 64  |  0 | 0  |
|Yaw  | 64 |  0 | 0  |

これでやってみて、ちょいと動かしてみる。物足りなければ増やす方向、プルプルするなら減らす方向に動かす、出来れば１個ずつ変える。

|     | P | I | D |
|:--  |:--|:--|:--|
|Roll | 32  | 0  | 0  |
|Pitch| 64  |  0 | 0  |
|Yaw  | 64 |  0 | 0  |

RollのPだけ半分にした。ほんとにわからなくなったらこのやり方が結局一番早く正解にたどり着くやり方。最近は、初期値の値がかなり汎用性が高く、初期値から大きくずらさなくてもそれなりに飛ぶが、初期設定を全部捨てて、0から作り上げた設定の機体の飛びはまた格別である。

PID設定は、満足できる範囲がかなり大きいので、ある程度満足できる挙動になったら、設定作業はソコで終了させその状態で暫く飛ばしてみよう。そのうちに、設定とスキルの乖離が起きさらなる設定の煮詰め作業ができるようになる。

### PIDの意味づけ

理論的に正しくはないが、私のPIDの覚え方は、以下の通り
P: パワー
I:　イヤイヤ
D: ダラダラ

#### P：propotional パワー値

プロポを操作して、いかに速く力強くDroneの姿勢に反映させるかを調整する。
P値が低いと、プロポをいつも動かしても安定しない、思ったように止まらない、フラフラしてしまう。個人的には、Pはできるだけ強めにかけるのが好みである。
強すぎる時は、Droneがフライト時にブルブルと細かい振動するようになる。普通に飛ばしているうちはプルプルしなくても、急旋回や、急降下から上昇に転じた際に、瞬間的にブルブルするのもP値が高い時がある。

#### I：Integral　イヤイヤ値

Drone初めてしばくIの値が何をしているのかわからなかったが、”イヤイヤ”と思ったらすっと理解できた。 イヤイヤとは何かというと、操作が行われない時にどれだけ現状を維持したいかということ。パワー（P値）でパイロットの思いは伝わるけど、それ以外の影響（風のせいだったり、直前の操作の慣性だったり）に対してパワーは全く効かない。超うまくなってくると風とか機体の特性に応じて自分で余分な動きを制御するけどめちゃ忙しいし、そもそも人間業ではない。

そこでI値を高めると、プロポを操作していない時になるべく、機体はその角度を維持しようと頑張るようになる。

例えば、前進しようとピッチを倒しこんでスロットルを開けた時に姿勢が上むいちゃう場合や、ロールいれて真横に動きたいのに、勝手に姿勢が水平にゆっくり戻る場合などは、イヤイヤ値をガツンと入れてみると、思ったところでバシッと止まる。

入れすぎると、高P値ほどじゃないがプル〜プル〜と機体が震えだすのでソコまで行ったら入れすぎ。

イヤイヤ値をある程度入れると、飛ばしてるときの操作量が格段に減って階的度合いが増す。

#### D: Differential  ダラダラ値
D値ほど地味な存在は居ない。この値が設定できないFCもあるくらいだ。
しかし、パワー値を積めていくとダラダラ値のお世話にならざるを得なくなってくる。Droneをガッツリ制御したいと、パワー値を上げたくなる、しかし、プルッチャッてどうしようもなくなり泣く泣くパワー値を下げたりする。こんな状況になったら、プルプルするパワー値のまま、ダラダラ値を増やしてみよう。名前の通り、プルプルする挙動をマイルドにしダラダラとした特性にしてくれる。DはダンパーのDでも説明としてはスッキリ来る。

パワー値は、全速度領域で万能ではなく、煮詰めていくと特定の範囲では気持ちいいが、そうではない範囲ではプルプルしてしまったり物足りなかったりする。そこを補うのがダラダラ値で、過度なプルプルはダラダラで多少抑えることが可能になる。

D値を上げすぎていくと、Droneが重くなったような鈍い挙動になっていく、自分が操作していて鈍いと感じる直前が程よいダラダラである。パワー値の設定次第でプルプルしないのであれば、０ではない程度に最小の値をダラダラ値に入力するのも有りかと思う。


### まとめ

パワー(P)値は、出来るだけ上げろ
イヤイヤ（I）値は、違和感感じない程度に上げておけ
ダラダラ（D）値は、重さを感じない程度に入れても良い、入れなくても良い（パワー値低ければ）

＊正しくは、各自しらべてください。（[Wikipediaの説明はこちら](https://ja.wikipedia.org/wiki/PID%E5%88%B6%E5%BE%A1)）


# 今始めるならおすすめセット

タイトルに戻る、なんか色々言ってしまったが興味があるのに飛ばせてない人が多い趣味な気がする。なので、まずは後先考えずに黙って飛ばしてみようぜ！ということです。

とは言えDrone無いと始まらないので
なるべく安く、今後スキルが上がっても書い直さずに長く遊べる。
組み立て工作がほぼいらない。（ネジしめるくらいはある、ハンダゴテは要らない）
初心者にも上級者にも満足の行くそんなプロダクトをチョイスしました。

|   |商品名       |メーカー   |参考価格|
|:--------|:----------|:--------|:---------|
|機体   | Vendetta    | TBS     |  ￥50k    |
|プロポ  |１４SG         | Futaba  |  ￥30k強  |
|受信機  |FM800 PRO    |         |  ￥2k    |
|ゴーグル |Dominator SE|Fatshark |  ￥30k    |
|バッテリ |４S １３００mｈA   |Bignuts |  ￥３k ｘ４本 |
|充電器 |X２ AC        |Hitec    |   ￥10k   |
|      |             | 合計      |  ￥14万弱|

普通のデスクトップPC１式揃えたくらいの金額で、普段の生活では全く味わえない、ほんの数年前では到底不可能であったであろう、数百グラムの物体ににつかわしくない運動性能を手に入れ、自由自在に飛び回る経験を、あなたの人生の1ページに添えてみてはいかがでしょうか？

始めたいけどよくわからん！人は連絡下しあ。

# TBS Vendetta(上記構成の機体) フライト動画
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/66eFe9NO50g/0.jpg)](http://www.youtube.com/watch?v=66eFe9NO50g)

# フルスクラッチした機体のフライト動画
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/np6IoSwFINE/0.jpg)](http://www.youtube.com/watch?v=np6IoSwFINE)


２年連続でDroneねたになってしまった。
最近は、GKEと仲良くなろうとDockerに再入門しつつ
Anovaで肉温めながら生きてます。