サイトアイコン IoTNEWS AI+

ロボットOSの最新動向と技術課題 ―eSOL Technology Forum 2019レポート②

イーソル、ROSの最新動向と技術課題について講演 ―eSOL Technology Forum 2019レポート③

2019年9月27日、イーソルは「eSOL Technology Forum 2019」を開催した。イベント内ではイーソル・産業技術統括部長・ソリューションエンジニアリング事業部の佃明彦氏(トップ画像)が「ROSの最新動向と技術課題へのアプローチ」というタイトルの講演に登壇し、ROS(Robot Operating System)のソフトウェア紹介および技術課題解決のためのアプローチについて語った。

エッジコンピューティングとロボット

エッジコンピューティングとロボットの位置づけ

まずイーソル・佃氏はロボットの定義と、エッジコンピューティングとロボットの位置づけについて説明を行った。

佃氏はロボットとは「センサー、知能・制御系、駆動系を搭載した機械システム」と定義し、「IoTの世界でいえばエッジコンピューティングとIoTデバイスを統合したものがロボットと言える」と述べる。

つまりロボットが持つセンサー部分がIoTにおけるデバイスの領域に相当し、ロボット内に搭載された知能・制御系、駆動系がデバイスに寄った側でインテリジェントな処理を行うエッジコンピューティングに相当するため、ロボットは「エッジコンピューティングとIoTデバイスを統合した実装例」だと表現できるのというのだ。

ロボット開発の実例

上記のようなロボットの定義を説明した上で、イーソル・佃氏はロボット開発の実例を3点挙げた。

1番目の例はソニーのaibo。これは2017年に発売された、犬の姿をした家庭用エンタテインメントロボットだが、佃氏によれば「aiboの一番ユニークだった点は、クラウドと常時接続してクラウドでAIを進化させて、aibo自体が成長するという仕組みになっている」ことだそうだ。

aiboのソフトウェア構成について佃氏は「ハードウェアによるセンシングによってユーザー環境をセンシングし、その上のレイヤーにあるエッジコンピューティングモードで環境認識や行動計画を処理していく」と説明した。

佃氏は「aiboはクアルコムのスナップドラゴンというプロセッサを搭載して、エッジ側のコンピューティングモードもかなり進化している」と評した上で、「ロボットの行動に必要な環境認識や制御といったアルゴリズムを、基本的にはエッジ側でこなしているという例である」と言う。

2つ目の例はAWSの「RoboMaker」。これは2018年にアマゾンが発表したロボット用のソフトウェア開発キットであり、AWS上の環境でロボットのアプリケーションを作れるようになるという。

佃氏によれば「数回クリックするだけでAWS上のインスタンスが立ち上がり、ロボットのアプリケーションの開発が出来て、ビルドするとシミュレーションが出来る」とのこと。

ロボット側は「AWS IoT Greenglass」というソフトウェアを使っていて、クラウド上で作ったアプリケーションをそのままエッジ側にデプロイする事が出来るという。

佃氏は「「AWS IoT Greenglass」側はLINUXを搭載したラズベリーパイやインテルの後付けのプロセッサを想定しており、そちらでもかなり処理能力を持っているものの、音声認識や画像解析など通常クラウドで通常動くようなサービスはそのままクラウドへ動かすことができる」と述べ、「先ほど紹介したaiboがエッジ側で全てを処理するサービスだとすると、ロボメーカーはクラウドにより重きを置いたサービスとなる」と語った。

3つ目は「Autoware」。これは名古屋大学などが開発した自動運転システム用のオペレーティングシステムで、自動運転に必要な認知判断操作の機能をオープンソースで提供しているものだという。

「センシングとアクチュエーションの領域があって、真ん中にコンピューティングノードがある、という構図でなっており、IoTデバイスとエッジコンピューティングをひとつに統合した例だと思う。これらがクラウドとウェブ上のサービスとつながることで、配車管理や遠隔操縦、地図配信といったサービスを受けるような構造になっている」と佃氏は語った。

佃氏は紹介した3つの例について「これらはすべてROSで開発されていて、いずれの例もエッジ側のアプリケーション開発でROSというオペレーティングシステムを使っている。それぞれのロボットはそれぞれの知能制御系のシステムを持つが、それらのアプリケーションを統合するためのフレームワークとして、ROSが用いられている」と説明した。

次ページは、「ROSの概要と最新動向

ROSの概要と最新動向

ROSの概要

次にイーソル・佃氏が語ったのはROS(Robot Operating System)の概要についてだ。佃氏によれば「ROSはロボット開発でデファクトスタンダートといっていいオープンソースソフトウェアであり、四つの要素で語ることができる」という。

1つは分散処理に適したPub/Sub型の通信。「データをパブリッシュする側は、相手がどこにいて誰が受信しているかということは考えずに書き出して、受信する側はそのデータがどこからやってきたのかということを意識せずにつながる。つまり、データの受信側と送信側がゆるくつながっていることによって、分散処理を実現するためのプロトコルになる」と佃氏は説明した。

2つ目はロボット開発を効率化するツール。佃氏によれば「ロボットのセンサーや姿勢、シミュレーション環境といったものを可視化する便利なツールが揃っている」という。

3つ目は3000を超えるパッケージで「自分のロボットにオープンソースでいろいろなアルゴリズムを導入することができる」だと佃氏は語る。

そして4つ目には「世界中にユーザーがついていて、それらのユーザーが作ったエコシステムであること」を佃氏は挙げた。

2024年に出荷される商用ロボットの55%以上に、ROSのパッケージが使われる予測があることも佃氏は説明に付け加えた。

ROSの開発イメージ

続いてイーソル・佃氏はROSの開発イメージについて、下記のような図を用いて説明を始めた。

ROSの開発イメージ

ROSは小さな分散処理ノード(1つのプログラム単位)を集合させることで大きなシステムを実現させるそうだ。「ノード間のインターフェイスにはトピックと呼ばれるものがあり、このトピックを使ってノードを繋げるというのがROSのコンセプトになる」と佃氏は語る。

「例えば自立走行する車を作りたい時に、まず遠隔操作についてはキーボードでvelocityを送って車を動かす。その次に車両センサーや地図を与えてあげると、その情報をもとに事故位置を推定して経路計画を行う」といった具合に、ノードのインターフェイスを全てトピックと呼ばれるデータの名前と型に集約するそうだ。

「それぞれのプログラムの単位であるノードは広汎可能で、ネットワークのどこに位置しても構わない。この柔軟性がロボット開発の現場でROSが重宝される理由になる」と佃氏は開発イメージの説明を締めくくった。

ROS2の概要

ROSは研究開発に広く使われるようになったパッケージだが、いま次期バージョンのROS2開発が進んでいるという。佃氏によれば「ROS2のコンセプトは研究開発だけでなく、製品開発の適用を目指しているというところにある」そうだ。

以下は佃氏が挙げたROS2の特長である。

(1)研究室のようなハイエンドなネットワークだけでなく、実環境に近いWifiなどを使った環境でも複数ロボットに対応
(2)製品開発への適用
(3)組み込みマイコン対応
(4)リアルタイム制御
(5)クロスプラットフォーム

佃氏によれば、上記5つにおいて現時点で実現できるものは(1)と(5)だそうだ。

(1)については「ノード間の通信にOMG規格のDDSというものを使っている。従来のROSはTCPIPを使って独自の実装でPub/Sub通信を実現していたが、OMG規格になっているDDSを使うことで、QoSやセキュリティといった機能も搭載できるようになった。さらに規格化されたDDSを使うことで、商用化されたスタックを使うこともできるようになった」と佃氏は説明する。

(5)については「Linuxだけではなく、WindowsやMacにも既に標準対応している」とのこと。

佃氏は他の3点についても、現在の取り組みを紹介する。

(2)の製品開発への適用については「オープンソースを製品開発に適用するためには、コードの質の向上が必要になる。ROSのプロジェクトでは従来からCIによるコード品質の検査が行われていて、静的解析・動的解析、いろんな観点でCIによってオープンソースコードの品質を保とうとする」とした上で、「このほかにもソフトウェアの品質特性を向上させるためのワーキンググループ活動があり、ソフトウェアの質を上げることに注力している」と語った。

(3)の組み込みマイコン対応ついては、EUでOFERAというプロジェクトが立ち上がっており、そちらでmicro-ROSというマイコン向けのROSアーキテクチャが提案されているという

佃氏は「プロジェクトのメンバーが中心となってEmbedded WGというワーキンググループが開催されている。ワーキンググループでは組み込み環境でのROS2適用を目指して、組込環境でのメモリサイズ調査やパフォーマンス改善、micro-ROSを使ったデモなどを行っていく」と語った。

(4)のリアルタイム制御については「今年からリアルタイムワーキンググループというのが立ち上がり、ROS2のノード内処理、ROS2の内部実装のリアルタイム化が検討されている。各種ツールを導入し、ROS2の内部実装をメモリの使い方やスレッドのレスポン氏ビリティやリアルタイム性の検査も行う予定」とのこと。

次ページは、「技術課題へのアプローチ

技術課題へのアプローチ

最後にイーソル・佃氏はロボット開発において商用リアルタイムOSベンダーが取り組むべき課題と、そのアプローチについて説明を行った。

3つの技術課題

まず佃氏は課題として以下の3点を挙げる。

3つの技術課題

1つはデバイスの多様性に応えるスケーラビリティ。「ロボットは多様化していて、LinuxのハイパフォーマンスPCとEmbeddedのマイコンの一対一の関係だけで全てが解決できるものではない。多様化するロボットのデバイスに対応するスケーラビリティが必要だと考えている」と佃氏は言う。

2つ目はPCから組み込み環境へのスムーズな移行。これについて佃氏は「エッジコンピューティングとIoTデバイスというのは境界が曖昧になりつつある。つまりPCで開発したソフトウェアをいかに組み込みの環境に持っていくか、ということが課題になりつつある」と説明した。
3つ目は効率性と信頼性の両立であり、佃氏は「ROS2というのはDDSのプロトコルを導入することによってIPネットワーク上の効率性とか信頼性の両立を図っているが、よりデバイスの構成に即したコミュニケーション手段が必要だと考えている」と述べた。

課題に対するアプローチ

3つの技術課題を述べた後、佃氏は各課題に対するイーソルのアプローチについて説明した。

まずスケーラビリティの課題については、「開発中のOS「eMCOS POSIX」を適用する」とのこと。

「eMCOSは分散型のマイクロカーネルを利用することにより、シングルコアからマルチ・メニーコアプロセッサ、マルチチップまでいろんな構成に対応することができる。ロボットのノードは多岐に渡り、多様なプロセッサにそれぞれ得意なノードを割り当てていくプロセスが必要になるので、eMCOSというのは非常にフィットするのではないかと」というのが佃氏の見解だ。

組み込みへの移行については、「eMCOS GCC Toolchain」を適用するという。「「eMCOS GCC Toolchain」を使うことで標準的なROSの開発環境を使いながら、MCOS用のバイナリをクロスビルドすることができる。オペレーティングシステムやデバイスドライバは従来の開発環境を使って開発をすることが出来て、アプリケーション部分はROSのツールを使って検証することが出来る。こうすることで組み込み環境へのスムーズな移行を実現する。」と佃氏は説明した。

最後の効率性と信頼性の両立については、「eMCOS Service Oriented Communication」を用いると佃氏は述べる。

eMCOSがハードウェアの特性に合わせて柔軟な分散処理コミュニケーションを実現する、ネイティブの分散メッセージパッシングというものを提供しているという。

「ロボットは様々なノードで構成されているので、ノードによって必要とされる信頼のレベルや効率性は変わってくる。それらをチップ間に分散しつつ、チップ間の通信はハードウェアのアーキテクチャに最適化した効率的な分散処理を実現する」と佃氏は語った。

モバイルバージョンを終了