ロボティクスシミュレーターを旧世代Core i7とGTX 675MXで動かす話

(更新

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.

A humorous illustration of an elderly man sitting at his desk, looking even more distressed while struggling with an old, vintage PC. His expression shows deep frustration and confusion, as if completely lost trying to run modern tools on the outdated machine. Beside him, a small, adorable modern robot watches him with sympathy and a hint of amusement. The setting is a minimalist workspace with a calm, focused atmosphere. The art style is flat and simple, with soft, muted colors. The wide aspect ratio enhances the serene yet humorous contrast between the old technology and the modern robot. Illustrated by ChatGPT and DALL-E.

相模原市で 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 を使う場合に比べてテクスチャが劣るのでしょうが。)

以下にスクリーンキャプチャを示します。これは静止画ですが、実際にはアニメーションで動きます。けっこう感激します。

</a


いかがでしょうか。皆様も、「私の PC は古いからなあ」と諦めずに、ぜひお試しください。

これで私も、リニアアクチュエータのシミュレーションに、少し期待が持てました。

お問い合わせはお気軽に!

お問い合わせを頂いた後、継続して営業活動をしたり、ニュースレター等をお送りしたりすることはございません。
御返答は 24時間以内(営業時間中)とさせて頂いております。必ず返信致しますが、時々アドレス誤りと思われる返信エラーがございます。返答が届かない場合、大変お手数ではございますが別のメールアドレスで督促頂けますと幸いです。

コメントを残す