PCやスマホ以外に目を向けると、OS(Operating System)の豊富さに驚かされる。ROS(Robot Operating System)もそうしたOSの1つだ。新世代の「ROS 2.0」も登場したROSについて、その概要を解説する。
これまでOS(Operating System)として「RTOS」や「組み込みLinux」などを紹介してきたが、こうした枠に収まらないOSは他にもある。今回紹介する「ROS(Robot Operating System)」もその1つだ。
「ロボット」とあるが人型ロボットの制御だけに使われるのではなく、一般には多関節システムや自律制御システム、多数のパラメータを同時に処理するシステムなどに用いられるOS(フレームワーク)である。人型ロボットは利用例の代表格であるが、産業用ロボットなどに使われることもある。
大きいロボットと言えば、2017年10月18日(日本時間)には「水道橋重工のクラタス 対 MegaBotsのEagle Prime」という巨大ロボットバトルが配信された(YouTube:Megabots)。クラタスは「V-Sido OS」というロボット制御OSを、Eagle Prime自身は明確にされていないが、前モデルのMegaBot Mark IIにはROSが使われている。
「ロボット開発」に関するさらに詳しい情報をお求めの方は、MONOistに掲載された記事を再編集した無料電子ブックレット『あのロボットが私のハードウェア予算を食っている!』をぜひご覧ください。「未知の地形を滑らかに歩かせる」を例に、エンベデッドシステム化するロボットについて考えます。 ⇒ダウンロードはこちら
なぜロボットや多関節システムに独特なOSが必要か。端的に言えば、OSとして一般的な集中管理モデルではロボットを上手に制御できないからだ。
人間であれば「モノをつかもう」と考えたとき、いちいち親指のこの筋肉を縮めて……なんてことは考えない。大脳が「モノをつかめ」と指示すれば、小脳が微妙な筋肉の調整を始めとした、“上手に物を握る”という一連の動作を指示してくれる。もっと難しい歩行のような動作では、転ばないようバランスをとる必要があるから、目を始めとしたセンサーからの情報を基に、細かな調整が行われる。
人間の場合はセンサーが頭部に集中していることもあって、小脳もまた頭部に置かれている。センサーからのフィードバックは迅速に受ける必要があるから、これは非常に合理的だ。ロボットの場合はセンサーがあちこちに分散されていることが多いので、そのセンサーからの情報で制御を行うコントローラーも、迅速さの確保のため、分散して配置されることが多い。そのほうが合理的だからだ。
もう1つ、ロボット制御で気を付けなければならないのは、実時間制御(realtime control)が必須なことだ。ロボットの全ての関節やアクチュエータは実時間(「定められた時間」が本来の意味。この場合は極めて短時間と言い換えてもいい)での制御ができなければならない。二足歩行を例にすれば、バランスが崩れ始めてから足を出しても転ぶので、バランスを崩す前、非常に短い時間で関節やアクチュエータを制御して、足を出さないといけない。
ロボットを制御する際、1つのプロセッサで全ての関節やアクチュエータの処理を行おうとすると、タスク切り替えだったりOSのオーバーヘッドなどで処理に遅れが発生する可能性が生じる。その遅れは作業が歩行であれば転倒を招くことになる。従って、端的に言えば関節なりアクチュエータなり毎にプロセッサを用意し、それに制御を委ねた方が確実に制御できる。これは特に多関節ロボットなどの場合で顕著である。
Copyright © ITmedia, Inc. All Rights Reserved.
豊富なホワイトペーパーの中から、製品・サービス導入の検討に役立つ技術情報や導入事例などを簡単に入手できます。