ロボット開発プラットフォーム「ROS」はどのように進化してきたのか:ROSを使ってロスなくロボット開発(前編)(4/4 ページ)
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、ROSがオープンソースソフトウェアとしてどのように進化してきたのについて紹介する。
ROSを使ってロボットを開発するメリット
ROSを使ってロボットを開発するメリットについて解説する。
最も大きなROSのメリットはNavigation StackやMoveItなどのアプリケーションがオープンソースで提供されている点にあるだろう。一定のカスタマイズが必要ではあるが、基本的な部分が提供されていることはアプリケーション開発の生産性を考慮する上で重要なポイントとなる。
次に、各種センサーがROSに対応していることだ。具体的には、「Intel RealSense」や「Microsoft Azure Kinect」などの3次元カメラ系各種や、話題のLiDAR(Light Detection and Ranging、ライダー)など、製品のリリース時点でROS用のドライバーが提供されることが多い。購入してすぐにROSに組み込み使用できるのは新しい製品の開発効率を考慮する上で重要なポイントとなる。
そして、ROSの各種パッケージがオープンソースソフトウェアとして数千個も公開されていることだ。新たなアプリケーションを自前で開発するより公開されているオープンソースを探す方が明らかに効率的である。
ROSのメリットを享受したいが、既にROS以外を用いてロボットの開発が進んでいる場合や、ROSに対応していないロボットの場合はどうすればいいのだろうか。例えば、幾つかのメーカーやベンダーは、ROSドライバーとしてROSと通信できるモジュールをロボットのコントローラーに組み込んで、ROSベースのシステムを外部から制御できるような仕組みに対応しており、ROS側とのインタフェースを確立してROSのメリットを享受できるようにしている。ロボットメーカー各社も、今後のROS開発の動向には注目しているのではないだろうか。
以下に、大手ロボットメーカーがGitHubで公開しているROSドライバーを挙げておこう。
- DENSORobot / denso_robot_ros:
- Universal Robots / Universal Robots ROS Driver:
- TechmanRobotInc / tmr_ros1:
ROS1とROS2のどちらを選ぶべきか
ここまでROSのメリットを解説したが、現時点では検討しなければならない課題がある。それは、新規開発する時にROS1とROS2のどちらを選択するべきかという課題である。筆者の個人的な見解だが、現時点ではROS2を選択するべきだと考える。その理由は2つある。
1つは、Pythonの対応バージョンの問題だ。Python2系のサポートは2020年3月で既に終了しているが、ROS1はPython2系で開発されたアプリケーションなどが多い。(ROS1 NoeticでROS1自体はPython3系に対応している)。なお、ROS2で提供されていなかったり、まだβ版だったりするROS1のアプリケーションも存在するが、その場合も「ROS bridge」を使えばROS2で利用することができる。筆者が所属する富士ソフトでも、ROS bridgeを使ってROS2のシステムでROS1のアプリケーションを使用した事例がある。
もう1つは、前述したようにROS2は商用利用を目的として開発されており、商用利用に耐えられる品質が高いソフトウェアを利用できるという点である。
ただし、これらは新規で開発する場合についてであり、既にROS1で開発されているものをわざわざROS2に移行すべきだとは思っていないので注意していただきたい。
広がるROSの活用範囲
ここまでROSについていろいろと解説してきたが、ROSはそのポテンシャルから活用範囲を縦横に広げつつある。
例えば、自動運転向けの「Autoware」、IoT(モノのインターネット)向けの「micro-ROS」、ドローン向けの「Dronecode」の基盤ソフトウェアとしてもROSが利用されている。また、変わったところでは、ソニーのペットロボット「aibo」やYOODSの3Dカメラ「YCAM3D」などでもROSが使われている。
さらに、大手のITベンダーやツールベンダーがROSを活用したロボット開発を促進する開発環境を提供するようになっている。クラウドサービスのAWS上で利用可能なロボットアプリケーション開発環境「AWS RoboMaker」やMathworksのモデルベース開発環境「MATLAB/Simulink」、そして次回の中編で紹介するNVIDIAのロボット開発シミュレーター「NVIDIA Omniverse Isaac Sim」などだ。
今回は、ロボット開発プラットフォームとしてROSがどのように進化してきたかを紹介した。次回の中編では、ROSの活用シーンとしてのシミュレーターとの連携について解説する。
筆者プロフィール
富士ソフト AI・ロボット開発 R&Dチーム
富士ソフトでAI・ロボット開発の調査研究を主務として、最新技術の調査・社内外へのセミナー等に対応し、AI・ロボット開発の最新技術の習得および普及のため活動している。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「ROSを使ってロスなくロボット開発」バックナンバー
- ロボット開発で注目される「ROS」(Robot Operating System)とは何か
ロボットの話題を聞くことが増えたが、判断と制御、駆動を備えたロボットを作るのはかなり骨が折れる。その負担を軽減するフレームワークが「ROS」(Robot Operating System)だ。 - ロボットに使われる分散処理、なぜ「ROS」が好まれるのか
ロボットの制御には集中管理よりも分散処理の方が都合が良く、さまざまなものが登場しているが、その中で一番有名なのが「ROS(Robot Operating System)」である。ではなぜROSが有名なのか。 - ROSを使う手順、パッケージとシミュレータの活用
ロボット開発に有用とされるROSだが、習得には対応ロボットを入手した方が手っ取り早い。利用開始までの手順と、併用したいツールやデバッガも紹介する。 - Willow Garage出身デザイナーに学ぶ、サービスロボットのインタラクションデザイン(前編)
サービスロボットの機能による差別化が難しくなれば、次に浮上するのが人とロボットがどんな「関係性」を持てるかというインタラクションデザインだ。前編では、人とロボットの関係性「Human-Robot Interaction(HRI)」の重要性と、これまでの研究を振り返る。 - Willow Garage出身デザイナーに学ぶ、サービスロボットのインタラクションデザイン(後編)
ロボットが一般化するために「人間とどんな関係を築くか」は避けて通れない問題だ。正解はまだ見えないが、Willow Garage出身者が手掛けるロボットを通じて「今後のサービスロボットデザイン」を探ってみたい。