二重振り子を逆さに立たせ続ける装置、シミュレーションで学んだAIが制御

2本の棒を関節でつないだ「二重振り子」を、真上に逆立ちさせたまま保つ装置がYouTubeで公開された。レールの上を走る台車に振り子を載せ、台車を細かく動かして倒れないように支える。制御しているのは、仮想空間のシミュレーションで学習させたAIだ。製作者のRodrigo Gonzalez氏が過程を動画で紹介し、学習に使った環境をMITライセンスでGitHubに公開している。

振り子が1本なら、振る舞いは単純な式で表せる。ところが2本をつなぐと、わずかな違いで動きがまったく変わるカオス的な振る舞いになる。1本の振り子なら、傾いた角度とその変化の速さに応じて台車を動かす古典的な制御で立たせられ、作者もまずそれで実機の動作を確かめた。しかし2本になると、この方法では手に負えない。

装置は、アルミの角材をレールにし、3Dプリントした台車を車輪で走らせる。台車はベルトとブラシレスモーターで動かし、モーターは専用の制御基板ODriveで駆動する。振り子の角度は、軸の端の磁石の向きを読むセンサーで測り、回転部にはスリップリングを通して配線がからまないようにした。全体の処理はESP32が担う。

AIの学習には、NVIDIAのロボット向けシミュレーター「Isaac Sim」と学習環境「Isaac Lab」を使った。最も手間がかかったのは、シミュレーションを実機に似せる作業だ。振り子の重さは同じでも、重心の位置で揺れ方が変わる。作者はナイフの刃に振り子を載せて重心を探し、振り子が1往復する時間から回転のしにくさを計算した。台車と関節の摩擦は、一定の力で止めようとする摩擦と速さに比例する摩擦の2種類に分けて合わせ込み、振り子が揺れながらエネルギーを失っていく様子を実機とシミュレーションで比べた。センサーの細かな読み取りの揺らぎも、シミュレーションに加えた。揺らぎは角度から速さを計算するときに大きく増えるためで、これを入れないと学習したAIが実機で働かないという。

学習では、多数の仮想の装置を並べて同時に試させ、振り子が倒れたり台車がレールの端に着いたりしたら大きく減点してやり直させた。こうして立たせ続けることを覚えたAIは、実機でもそのまま振り子を支えた。

作者はさらに、垂れ下がった状態から振り上げて立たせるところまで学ばせた。すでに立たせ方を覚えたAIを出発点に約5時間学習させたが、成功するのはおよそ3回に1回だという。1月に始めて約9カ月かかったとし、今回はここで区切ると話している。

関連情報

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!

最新記事

YouTube / PodCast

【PR】読んで役立つ注目記事

目次