Don’t give up on old PCs! Robot simulation is possible on VMware. After struggling with Isaac Sim, I retried with open-source Webots, exploring reinforcement learning for actuator control.
相模原市で IoT 設計を受託しているファームロジックスです。
メールで頻繁にやってくるニューズレターは、私は大抵読まないのですが、例外として DigiKey 社と Seeed Studio 社のニューズレターには比較的まじめに目を通しています。先日 Seeed Studio 社から、とあるニューズレターが来ました。内容は、同社は最近 SO-ARM100 という低コストロボットアームの販売に力を入れているのですが、その商品と関連技術に加えて、最近同社が主催(?)した hackathon の概要を 1時間で報告する YouTube プレゼンテーションの紹介でした。
- Making Next Gadget: LeRobot, Open-Source End-to-End Learning for AI Robots – YouTube
私は何気なくこのプレゼンを見てみたのですが、なかなか感心しました。hackathon で、若い技術者が流暢な英語で自己紹介していたり、Seeed Studio の技術者が自社製品を、最新の技術やツールの紹介を絡めて説明したりして、興味深いものでした。
ロボットシミュレーター
その中で、プレゼンターがしきりに Isaac Sim という用語を使うので、気になって調べてみました。これは Nvidia 社が提供しているソフトウェアで、PC 上でロボットのシミュレーションをするもののようです。ロボットアームの動きを、重力など物理特性を踏まえて 3D でシミュレーションできたりして面白そうです。イメージ的には、Blender のような GUI のツールで、外部から Python などで実装したアルゴリズムを使って、シミュレータ上のロボットアームなどを制御できるようです。
最近は AI、とりわけ強化学習(reinforcement learning)が流行っていますが、その訓練には多くのデータが必要です。このようなシミュレータを利用できれば、訓練の多くをシミュレータ上で実行できて、効率的な設計ができるのでしょう。
私は最初、なるほどそんなツールもあるんだなあ、くらいに考えていたのですが、数日後にアイデアを思いつきました。以前に、あるお客様からの御依頼で直動アクチュエータ(linear actuator)を制御するソフトウェアを設計させて頂いたことがあります。私は制御理論はあまり詳しくないのですが、以前から囓り知っている PID 制御で実装しました。しかし、複数のアクチュエータを同期して制御するのは、けっこう面倒なものです。また、速度の制御と位置の制御の組み合わせを実装するのは、(制御屋さんには当たり前の話だと思いますが)なかなか大変でした。
私はふと考えました。
PID 制御の代わりに強化学習を使ってみたらどうだろう?
PID 制御ならともかく、実際のアクチュエータを作業机に並べて機械学習を訓練するのは大変そうです。しかし、シミュレーションが使えるのならば助かります。そして、ロボットアームをシミュレーションできるツールならば、直動アクチュエータのシミュレーションだってできるでしょう。
私はさっそく Isaac Sim のサイトを覗いてみました。このような最新で強力なツールが、果たして私の古い設計環境で利用できるかどうか、興味があったのです。その結果が、これです。
Ubuntu 20.04/22.04 は良いとして、CPU の要求は Intel Core i7 (7th Generation) あるいは AMD Ryzen 5、とありました。私の開発 PC の CPU は、(なんと古い)Intel Core i7 第3世代 Ivy Bridge です。その時点で無理だと分かりました。GPU も、最低で GeForce RTX 3070(VRAM 8GB)とあり、私の GTX 675MX(1GB)では、これも無理です。一瞬、私もそろそろ新しい PC を買わないといけないかな、と考えた(魔が差した?)のですが、まずはどんな古いバージョンのツールであっても、ロボットシミュレーションというのを動かしてみたいと思いました。
上記サイトをよく読んでみると、Isaac Sim Compatibility Checker なるものがあって、自分の PC 上で Isaac Sim が動作するかどうか確認できるのだそうです。それは助かります。ダメ元で、さっそくリンクを開いてみたのですが、Checker をすぐにダウンロードできるかと思いきや、最近の企業サイトにありがちなマーケティングに満ちあふれたページに飛ばされてしまい、なかなか一筋縄では試せない印象でした。それに加えて、このようなツールを利用するには、企業のエコシステムに取り込まれてしまいそうな印象で、私の好みではありませんでした。
もっとオープンなシミュレータを探してみる
Reddit を覗いてみました。
いくつかのシミュレータが紹介されています。
最初は PyBullet というツールのサイトを覗いてみたのですが、ページがアニメだらけでしんどくなり、さらに、Quickstart Guide は Google Docs で書かれていて読みづらく、その Hello PyBullet World というセクションのコードにはもっとうんざりして、それ以上調べるのをやめました。
Webots を動かしてみよう
Reddit では他に、Gazebo と Webots というものが紹介されていました。後者 Webots のウェブサイトはシンプルで私の好みです。システム要求を見ても控えめで、私は「これならもしかして、VMware 上の Ubuntu でも動くのではないか?」と考えました。さらに Webots は、GitHub にて Apache-2.0 ライセンスでソースコードも公開されており、好感が持てます。
さっそく試してみます。これまた古い macOS Catalina(10.15)上の VMware Fusion 12 上で Ubuntu 22.04 を起動します。ドキュメントに従って、glxinfo | grep OpenGL
してみたところ次のようになりましたが諦めません。
OpenGL vendor string: VMware, Inc. (略) OpenGL ES profile version string: OpenGL ES 3.0 Mesa 23.2.1-1ubuntu3.1~22.04.2
インストール手順に従ってインストールし、コマンドラインから webots
として起動します。次のような画面が現れました。
これはもしかすると動くかも知れません! テーマ Night を選んで Start します。すると次のようなダイアログが現れました。
読んでみると、私の GPU は最小要求を満たしていませんが、以下の制限を除いて、なんとか動作しそうな雰囲気です。
- シャドウは出ない
- アンチエイリアシングはできない
- その他いくつか
「あなたの PC は古いからダメ」ではなく、「最新の機能は使えないけど動かしてみるからね」という感じで、極めて好印象です。
OK をクリックしましょう。すると、次のようなダイアログが現れました。
これは素晴らしいです。多くの example を使ってデモツアーをしてくれるのだそうです。自分の PC のスペックでは「動かないかもしれない」ツールをインストールした後、時間をかけて面倒なドキュメントを読み、いくつもの複雑な手順を踏んだ後、「やっぱり私の PC では動かなかった」となると、本当にがっかりしますよね。
さっそく動作させてみたところ、多くのデモがちゃんと動作しました。(実際には、ちゃんとした GPU を使う場合に比べてテクスチャが劣るのでしょうが。)
以下にスクリーンキャプチャを示します。これは静止画ですが、実際にはアニメーションで動きます。けっこう感激します。
いかがでしょうか。皆様も、「私の PC は古いからなあ」と諦めずに、ぜひお試しください。
これで私も、リニアアクチュエータのシミュレーションに、少し期待が持てました。