事故や渋滞が無くなる!運送業が効率化する!時間が節約できる!...という明るい話から、事故の責任は誰が負うの?車がハッキングされたら?AIとかロボットに運転任せるの怖い...という心配になる話まで、色々な議論がされている自動運転技術。言った自動運転が来る来ないという議論を盛んにしている一方、自動運転がどのようにして動いているのかなどと言った中身の深いところまで詳しい方は少ないのではないでしょうか。私はというと、数年前にこの技術を知って以来すぐに進路を変え自動運転研究室に入ったり、研究室入る前から有料オンライン講座(計約30万円...汗)で学んだりと、この業界のキャッチアップに勤しんできました。そこでこの記事を通して自動運転技術の中身を噛み砕いて紹介することで、より一層深い議論ができたり、この産業に張るか張らないかを考えて頂けたらなと思います。技術についてもう少し掘り下げて行こうと思います。アクセル、ブレーキ、ハンドル制御を行うので、人間に例えると”手足”の役割ですね。今ココ”制御”とはそもそも制御とは何かと言うと、「目標の値までいかに効率良く到達するか」を突き詰める学問で、制御工学という名の分野が一つ確立されるほど大きなテーマです。エアコンに例えると、リモコンで25°Cと設定されてからいかに効率良く実際の部屋の温度を25°Cにまで持っていけるか?というのをエアコン内の機械があの手この手で頑張っているのです。評価軸は上記のように速度優先かもしれませんし、省エネ優先の場合もあり得ます。自動運転の文脈で言うと、大体の場合において目標値は"車線の真ん中"となりますね。「設定した目標値をちょっとでも越えちゃいけない」なんて追加条件が加わる時もあります。上回っちゃっても)後々最終的に25°Cに落ち着いてくれれば問題ありませんが、例えば工場のロボットアーム等は手先がちょっとでも目標地点を越えちゃうと商品またはベルトコンベアーを傷付けてしまうため大問題です。目標値にいち早く到達したいがばかりに、上図のように一旦目標値を越えてから「おっとっと」と言って目標値に戻ってくるようでは手遅れと言う状況があります。自動運転で言えば"対向車線や歩道の方まで突っ込んじゃう事"に当たりますね。それを防ぐためには目標値に向かって早く、かつ滑らかに沿うように制御するのが理想です。ブレーキ)と角度(ハンドル)です。角度を曲げる......という流れをコンピューター制御で人間じゃできないくらい事細かに操作します。アクセルを踏んでから加速するまで時間がかかるように、ブレーキを踏んでから停止するまで時間がかかるように、制御というものはどうしても操作してから→効果が出るまで時間差があります。カメラやLIDARによる周辺感知センサーが障害物を発見してそれを避ける経路を一瞬で算出できても、実際のハンドル捌きが間に合わなかったら意味ありません。そこで、迅速かつ正確に目標値を達成できると有名な制御則を一つ紹介します。PID制御PID制御とは、Proportional(比例というか一次関数)制御とIntegral(積分)制御とDerivative(微分)制御の3種類の制御方法を足し合わせたもので、最初の起源はとても古く17世紀までに遡ります。んー、急に数学チックになりましたね汗。わかりやすく解説していきます。P制御(比例というか一次関数)これは簡単に言うと、目標値から遠ければ遠いほど大きくアクセルを踏み、目標値に近ければ近いほどアクセルを緩めると言うルールの制御方法です。比例制御と言うと、現在値から目標値までの差に比例した量のアクセルを踏むからです。差が遠ければ遠いほど大きく、近ければ近いほど小さく操作すると言う仕組みです。これは最も基本的な制御則で、簡単に実装できてかつまあまあ良い精度を出せるというメリットがありますが、目標値のめちゃくちゃ近くまではいけるけどぴったし一緒にはなれない(残差)、目標値を越えてしまう(オーバーシュート)等といったデメリットもあります。I制御(積分)上のP制御だけではどうしても残ってしまう目標値との差(残差)を埋めるのに有効なのがこの2つ目のI制御です。積分と言うとなんだか難しそうに聞こえますが、これまでの総量の総和です。ただの足し算の繰り返しです。I制御では、残差を積み重ねた量のアクセルを踏み込むと言うルールです。することによって最後の一押しで残差を消すことができ、残差がゼロになった暁にはこれ以上残差の総和は増えていかないので(なぜなら現段階の残差がゼロでありゼロはいくら足しても何も変わらない)、そのまま残差がゼロつまり目標値ぴったしの状態をずっとキープできるのです。D制御(微分)最後のD制御は、P制御のデメリットであるオーバーシュート(目標値を越えてしまうこと)や急な変動を抑えてくれると言う効果があります。微分と言うとこれまた難しく聞こえそうですが、前回から今回への変化が急かどうかです。この3つ目のD制御では前回の残差量と今回の残差量を見比べて、急激な変化だったら多くのアクセルをふかし、緩やかな変化だったら少しのアクセルしか入れないと言うルールです。することで例えば・急に上り坂になったら今までと同じアクセル量だと加速具合が落ちるので(上り坂前と上り坂後の変化が激しいので)、もっとアクセル量を増やして同一速度を保つことができる・突風で車線の真ん中からずれたら(突風前と突風後の変化が激しいので)、いち早くハンドルを切って元の位置に戻ると言った外部要因への素早い処置が可能となります。これらのPとIとDの3つ中でどれの効果をどれくらい適応させるか優先順位をつけながら、一番効率良く目標値に辿り着く絶妙のPとIとDのバランスを見つけていきます。このPとIとDの最適なバランスの見つけ方一つとっても非常に多くの幅広い研究がなされている事からも分かる通り、それほどこのPID制御はとても優れた制御則なのです。今回は自動運転の"手足"の役割である、車体制御について深掘りしました。今回も数学的なことが多かったですかね。それでは次回は【未来編】を書こうと思います。(Twitter/note)プロフィール:Deep4Drive開発メンバー。Native)→大学院で自動運転の研究(C++)。ダウンロード#AI#エンジニア#車#開発#自動運転#運転#技術解説#車体制御この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。私たちはモビリティ分野でのオープンイノベーションを通じ、技術者を育成するコミュニティです。ビジネスの枠を超えた自由な発想こそがモビリティの新しい付加価値を創造するのでは。「モビリティの未来を、オープンイノベーションで」を理念に、50名以上のエンジニアと共に、複数プロジェクトを実行しています。クリエイターへのお問合せnoteカイゼン目安箱クリエイターの。