現在開発中のロボットで主流のOSは何?
まずロボコンに参加するレベルのロボットはH8やPICに直接プログラムを記述しているので、OSは搭載されていません。OSを搭載しているロボットとしては、現在大きく分けてLinuxベースのものとWindowsベースのものの2種類があります。
Linuxベースでは、東京工業大学の広瀬先生が開発しているヘビ型ロボット「蒼龍」をはじめ、千葉工業大学の小柳先生によるレスキューロボット「ケナフ」、筑波大学の油田先生と坪内先生による移動ロボット「山彦」などがあげられます。WindowsベースのものはOSとしてWindows XP Embeddedが使われ、消防研究所で開発している「FRIGO」シリーズが広く知られています。
大学で主にLinuxが使われている理由として「情報が公開されていること」と「フリーであること」そして「OSとして軽いこと」の3つがあげられます。Windowsベースでは内部情報が少なく、中で何が行われているか、いつブルースクリーンが出るのかわからない怖さがあります。これがLinuxであれば内部の情報が公開されており、ある程度対処できる点が好まれています。
このような状況ですが、私の研究室では本年度からWindows XP Embeddedを採用しました。理由は2つあります。まず1つにFRIGOシリーズで使われているIOボードを採用し、システムをそのまま移植する計画であること。もう1つは、学生が開発を行う場合にWindowsのほうが敷居が低い、ということです。
今現在のロボット研究開発には2つの流れがあります。1つはAI、ソフトウェアから入ってくる研究者の皆さん。もう1つは私のようにメカ、ハードウェアから入ってくる研究者です。今、研究開発がより実用レベルに近づいてきており、この両者がくっつこうとしているフェーズに差し掛かっています。
ハードウェアから入ったロボット開発では、自律といっても「壁にぶつからない」「超音波センサーが反応したら向きを変える」程度の機能があればよく、その代わりとしてキャタピラの構造などに主眼を置いています。そのレベルではPICやH8レベルで間に合います。しかし、知能化やセンサーの増加が行われていく中で処理しきれない状況が発生します。そこで、ロボットを制御するためのOSが必要になるのです。
そこでなぜWindows XP Embeddedを利用するかというと、実は最近の機械系の学生は「Linuxアレルギー」があるようなのです。特にCUIが苦手で、同じ操作でもマウスを使ったほうがやりやすいという趣旨の発言をされてしまいます。またドライバのインストールのウィザードが立ち上がるほうが安心するようです。これは技術云々ではなく、学生の間で「Windows文化」ができてしまっているのだと感じています。これはマイクロソフト恐るべしですね。
Linux、Windows XP Embedded以外にロボットで使われているOSとして、 米ウインドリバー・システムズ社のリアルタイムOS「VxWorks」があります。火星探査ロボット「マーズ・パスファインダー」で採用されるなど、組み込み系に強いOSです。さまざまなCPUへの対応やスケーラブル性などメリットは多いのですが、高額なライセンス料や必要な専門知識レベルと修行期間から考えると、開発主体が学生である大学の研究室にはマッチしないでしょう。
(画像をクリックすると別ウィンドウに拡大図を表示します)
実際LinuxとWindowsエンベディットでの開発は違うんですか?
LinuxとWindows XP Embeddedの大きな違いは、ハードウェアのドライバにあります。多くの場合、センサーやモーターのドライバソフトは大学が中心となって開発し、それを企業が譲り受けて商品化を行っています。このため、Linuxベースのドライバが先に開発される傾向にあります。
さらに、ドライバがバッティングしたときの問題もあげられます。OSが持っている標準ドライバと追加したドライバがコンフリクトを起こしてしまうと、大きく安全性を損ねてしまいます。今後ロボットが実用化されるにあたっては、確実にバッティングしないことを保証する必要があります。それができないようなシステムは怖くて使えません。
ATのような4メートルのロボットが、もしドライバのバッティングを理由に暴走した、フリーズしたとしたら、とんでもない事故が発生します。「事故が起こらないこと」を100%保証することは技術的には無理ですが、できる限り検証する必要があるでしょう。
そのとき、Windowsベースでは必要な情報がすべて公開されるでしょうか。しかもハードウェアには相性があります。当然ATにはいくつものセンサーやアクチュエーターが存在し、それぞれのドライバソフトはバージョンアップもしていくでしょう。そのすべての組み合わせとすべての入力が正しく動作し、かつバッティングしないかを検証し、データを公表してくれるでしょうか。
Linuxコミュニティなら、そのフェーズに入ってしまえば、多くの技術者が寄ってたかって検証するプロジェクトが立ち上がるでしょう。しかしWindowsでは、その部分をマイクロソフト主体で検証していく必要があります。そして、認証マークのついたモータとモータドライバの組み合わせでしか保証されない状況ができるでしょう。結果的にWindowsベースではマイクロソフトが認証するまでは、2〜3世代前の技術しか保証されないといった可能性もあります。
一方でLinux側でも検証を行うだけではなく「保証する」ための手順を考える必要があります。実は、すでにそういう流れがはじまっており、機能安全といわれる国際規格IEC 61508にLinux自体を準拠させようというプロジェクトがスタートしています。
次のページ