クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

センサーと比例制御

このレッスンのあとで: 比例制御を1ステップずつ計算し、ゲインによる動きの違いとオーバーシュートを説明できる。

60分のレッスンコマンド2件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

測って、ずれを直す制御

フィードバック制御は、センサーで今の値を測り、目標とのずれを見て、動かし方を直す仕組みです。比例制御は、ずれの大きさに比例した量だけ動かす、いちばん簡単な方法です。

このレッスンでは、1つの関節を目標の角度へ近づける動きを、シミュレーションで調べます。

このレッスンのゴール

メモ

比例制御を1ステップずつ計算し、ゲインによる動きの違いとオーバーシュートを説明できる。

キーワード

ことばいみ
センサー今の角度などを測る部品
誤差目標から今の値を引いた、ずれ
比例制御誤差に比例した量だけ動かす制御
ゲイン誤差にかける数。大きいほど強く動く
オーバーシュート目標をこえて行きすぎること

学生が入力するセルは、このプレビューでは空白です。

センサーの読み値には細かさの限りがある

関節の角度を測るセンサーは、決まった細かさ(きざみ)でしか読めません。きざみが 0.5 度なら、読み値は 37.0、37.5、38.0 のどれかです。

本当の角度に、いちばん近いきざみの値が読み値になります。きざみより細かいずれは、見えません。

37.3度をきざみ0.5度で読む

コマンド
docker exec jupyter python3 -c "print(round(37.3 / 0.5) * 0.5)"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

誤差に比例して、1ステップずつ動かす

1ステップごとに、まず誤差を「目標 − 今の位置」と求めます。次に、位置を「ゲイン × 誤差」だけ動かします。

これをくり返すと、位置は目標へ近づきます。ゲインが 0.5 なら、1回ごとに残りの半分だけ進みます。

例: 目標 10、ゲイン 0.5、最初は 0

ステップ誤差動く量位置
11055
252.57.5
32.51.258.75
41.250.6259.375

学生が入力するセルは、このプレビューでは空白です。

比例制御を Python で

コード: python
# 角度 0 の関節を、目標 10 へ近づけます。ゲインは 0.3 です。
position = 0.0
target = 10
gain = 0.3
for step in range(1, 6):
    error = target - position
    position = position + gain * error
    print(step, round(position, 3))
# gain を 1.5 に変えて、もう一度実行します。
# 位置は目標の 10 をこえますか。

ゲインが大きすぎると行きすぎる

ゲインが 1 なら、1回で目標に着きます。1 より大きいと、目標をこえて行きすぎます。これがオーバーシュートです。

ゲインが 2 になると、行ったり来たりのふれ幅が小さくならず、2 より大きいと、ふれ幅が大きくなっていきます。

例: 目標 10、最初は 0 の5ステップ

ゲイン5ステップの位置様子
0.55、7.5、8.75、9.375、9.6875なめらかに近づく
110、10、10、10、101回で着く
1.515、7.5、11.25、9.375、10.3125行きすぎて、落ち着く
220、0、20、0、20ずっと行ったり来たり

学生が入力するセルは、このプレビューでは空白です。

ゲイン 1.6 の5ステップ

コマンド
docker exec jupyter python3 -c "import numpy as np; print(np.round(10 * (1 - (1 - 1.6) ** np.arange(1, 6)), 2))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

ゲインは大きいほど速く目標に着くと考えがちです。実際は、1 をこえると行きすぎ、2 をこえると不安定になります。速さと落ち着きの、ちょうどよいところを探します。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。