第1章
開ループと閉ループ
ドローンに使う推力をそのまま指示するだけではダメ?
ドローンとご対面
ジューン: ドローンを借りてきたよ! 仕事は、小さな荷物を運んで、誰かが受け取れるようにちょうど2メートルでホバリングすること。
ミカ: シャワーと同じだよね?欲しい数値が1つ(2 m)、変えられるものが1つ(プロペラがどれだけ強く押すか)。
事実はこう。ドローンの重さは0.5 kgなので、重力はニュートンで下向きに引っ張る。プロペラは私たちが選ぶ推力 で上向きに押す。ドローンが動くと、空気が少し押し返す。速度1メートル毎秒あたり約1ニュートンだ。
の上の点はまだ気にしなくていい。それらは速度と加速度を表していて、第3章で両方とも組み立てる。ドローンが静止しているとき、4.9 Nが重力とつり合う。推力がそれより大きければ上昇し始め、小さければ落下する。動いているときは空気抵抗も動きに逆らって押すので、4.9 Nでは静止に向かって減速する。
やることをそのまま伝えるだけ
テオ: 物理は正確にわかっている。だから何かを見る必要はない。計画を計算できる。少しの間強く押して上昇し、その後ちょうど4.9 Nで押してホバリングする。
そういうやり方は開ループって言うんだ。計画で推力(推力)を決めて、実際に何が起きてるかは誰も確認しない。試してみよう。上昇用の推力を選んで、どれくらいの時間上昇するか決めて、それから打ち上げてみて。
テオ: 計算してみたよ。上昇中、ドローンはすぐに(余分な推力 ÷ 抗力)の一定速度に落ち着くんだ。最終的な高さはちょうど(余分な推力 ÷ 抗力)× 上昇時間になる。6 Nだと m/sだから、秒上昇すればいい。
テオの計算にはちょっとした落とし穴があるんだ。4.9 Nに切り替えたとき、ドローンはまだ上昇している。抗力がだんだん止めていくんだ。最終高度の式には、切り替えた後のその余分な距離も含まれているよ。
テオの計画を押してみて。2.00 mに着地するよ。完璧だね。
ミカ: テオ、すごい!これで終わりだ!この章はおしまい!
ジューン: 外で何が起きるかちょっと見てみよう…今日は少し風があるね。
テオの計画をもう一度実行して、ホバリングしている間に突風を押してみて(1秒間、下向きに1 Nの押し)。
テオ: 1メートルくらい落ちた…そしてそのままそこに留まってる。僕の計算は合ってたのに!
ジューン: 君の計算は完璧だったよ。ただ、風が君の計画に入っていなかっただけさ。それにドローンは自分が間違った場所にいることなんて全然分かってないんだ。
それが僕たちの間違いだったんだ。僕たちは「数字さえ合っていれば、フィードバックはいらない」と信じていた。無風での成功は本物だったけど、世の中が予想外のことをした瞬間に、その計画は役立たずになったんだ。突風の後、推力はちょうど4.9 Nに戻るから、ドローンは突風が置いていった場所にそのまま留まるだけなんだよ。
荷物のテスト
さあ本番だ。下では、ドローンが2 mでホバリングしていて、4.9 Nの推力でちょうど重さと釣り合っている。そこに誰かが0.2 kgの荷物をぶら下げるんだ。
まず予想しよう! 荷物のせいでドローンは重くなるけど、推力は4.9 Nのまま。どうなると思う?
墜落。 開ループの計画では、ドローンが落ちていることに気づく方法が何もない。さあ、モードをフィードバック:高さを見るに切り替えて、リセットして、荷物と突風をもう一度試してみて。
フィードバックモードでは、ドローンはシンプルなルールを使う:ホバリング推力で押し、低すぎる分1メートルにつき追加で8 Nを加える。
ミカ: うわ。突風で20 cmも下がらないで、すぐに戻ってくる。荷物で少し沈むけど、墜落はしない!
テオ: 何が起きたかを知る必要はない。ただ低すぎると見て、もっと強く押す。それがコツなんだ。
ジューン: でも見て:荷物があると約1.75 mで落ち着く、2 mじゃない。なぜ完全には戻らないんだ?
図に描く
エンジニアはこうしたシステムをブロック線図と呼ばれる箱と矢印で描く。各箱は何かをし、各矢印は信号を運ぶ。私たちはホワイトボードに一つずつ描いた。
決定的な違いは、出力から始点へと戻る一本の矢印だ。だからフィードバック制御は閉ループと呼ばれる:情報が一周する。荷物テストまでスクロールして戻って:ドローンの下の図は、今忙しい部分が光る。
新しい言葉
- 目標値
- 望むもの:高さ2 m、水温38 °C。
- 出力
- 実際に起きること:実際の高さ。
- 偏差
- どれだけずれているか。正なら低すぎる。
- コントローラー
- 偏差を行動に変えるルール。今のところ:「低すぎる1メートルにつき追加8 N」。
- 操作量
- コントローラーが実際に行うこと:推力。
- 制御対象
- 制御されるもの:ドローンそのもの、物理も含めて。(古い工場の「プラント」から来た変な言葉。)
- センサー
- 出力を測定するものなら何でも:ドローンの高度センサー、シャワーを浴びているときのあなたの肌。
- 外乱
- 世界が引き起こす、こちらが予期していなかったあらゆること:突風、荷物、誰かがトイレを流すこと。
- 開ループ / 閉ループ
- 見ずに計画通りに動く / 測定したものに基づいて動く。
同じ絵、違う機械
これが同じ図を車のクルーズコントロールに当てはめたもの。目標値は速度、制御対象は車、外乱は坂道。コントローラーは、車が本来より遅いときにアクセルを強く踏む。
ジューン: サーモスタット、クルーズコントロール、シャワー、そして私たちのドローン…毎回同じループで、ラベルが違うだけ!
ここまでにわかったこと
わかったこと
- 開ループとは、見ずに計画に従うこと。穏やかな条件では完璧に機能するけれど、予期しないことが起きた瞬間に役に立たなくなる。
- 閉ループ(フィードバック)とは、出力を測定し、目標値と比較して(偏差)、それに基づいて動くこと。
- フィードバックは、聞いたこともない外乱に対処できる:突風、荷物、何でも。
- ブロック線図はループを表す:目標値 → 偏差 → コントローラー → 制御対象 → 出力 → センサー → また戻る。
- 私たちのシンプルなフィードバック則は墜落を防いだけれど、荷物があると約25cm低いところで落ち着いた。なぜ?
このループには謎の数字が入っている:1メートルあたり8ニュートン。なぜ8なのか?なぜ2や50ではないのか?そしてなぜドローンは低すぎる位置で落ち着くのか?