Robot operating system

Blog

 

この記事では、ロボット開発において重要な役割を果たす「ROS(Robot Operating System)」について解説します。

 

前半ではまず、ROSの構成要素や特長、ユースケースの変遷を踏まえたROS2の機能などを解説します。記事後半では、ROSを活用したロボット開発の事例や、ROSで動作するロボットの例をご紹介します。

 

ROSを活用したロボット開発にお悩みの方は、ぜひマクロセンドまでお問い合わせください。

 

ROSとは

まずはROSの概要について解説します。

オープンソースのロボット開発プラットフォーム

ROS(Robot Operating System)は、ロボット開発において重要な役割を果たすオープンソースのロボット制御ソフトウェア、およびそれを包括するロボット開発プラットフォーム全体を指します。

 

ロボットソフトウェアの共同開発を世界規模で推進することを目的として、ロボット工学分野の研究開発におけるコードの再利用を支援する、というコンセプトをもとに開発されました。

 

分散処理フレームワークであることに加え、ロボティクス向けの豊富なライブラリ群を利用可能であること、シミュレーションツールやデバッグツールといった高機能な開発ツールを使えることなどがROSの主な特長として挙げられます。

 

さらに、RosConなどのイベント開催を中心に、コミュニティ活性化に注力している点も大きな特長のひとつです。そうした活動の影響もあり、ROSの利用者は年々拡大しています。

 

「ROS Metrics」や、ROS Metricsのデータをまとめた「Community Metrics Report」によれば、ROS ver 1.0がリリースされた翌年の2011年には4,517件だったダウンロード数が、2020年には3,855万4,145件まで増加していることが分かります。

 

そして2015年には、それまでのROSのコンセプトを引き継いだ「ROS 2」の開発がスタートしています。サポートOSの拡大や信頼性の高い通信プロトコルの採択などにより、ROS2はオープンソースながら実製品への利用にも耐えうるフレームワークとなりました。ROS2の詳細については後述します。

 

参考:

ROS Distro|ROS Metrics

ROS Community Metric [August 2011 (reporting on July 2011)]|Brian Gerkey, Ken Conley, Tully Foote(PDF)

Community Metrics Report[Reporting on August 2020]|Tully Foote & Katherine Scott(PDF)

ROSを構成する要素

続いて、ROSを構成する要素について解説します。

 

ROSはRobot Operating Systemの略ですが、WindowsやiOSのようなコンピュータの基本ソフトウェアとしてのOSではなく、既存のOS上で動作するミドルウェアやソフトウェアフレームワークの一種です。ROSの情報がまとめられた「ROS Wiki」では、ROSのことをメタオペレーティングシステムと呼んでいます。

 

また、「ROSとは正確には何ですか?(What is ROS exactly?)」という質問に対して、ROSプロジェクトに参画するBrian Gerkeyは、次のように回答しています。

 

ROS=Plumbing(通信)+Tools(ツール群)+Capabilities(機能群)+Ecosystem(エコシステム)

 

plumbing(通信)

 

ROSは、迅速で容易に分散コンピューティングシステムを構築できるよう設計された、配信-購読型のメッセージ通信基盤を提供する。

 

tools(ツール群)

 

ROSは、分散コンピューティングシステムの設定・起動・監視・デバッグ・可視化・ログ取得・テスト・停止を行う広範囲にわたるツールを提供する。

 

capabilities(機能群)

 

ROSは、移動・マニピュレーション・知覚といった機能をロボットに実装する多様なライブラリ群を提供する。

 

ecosystem(エコシステム)

 

ROSは、統合とドキュメンテーションに重点をおき、大規模なコミュニティにより支えられ進歩している。ROSのコミュニティサイトであるros.orgは、世界中の開発者から提供された大量のROSパッケージを取得し学習できるワンストップサービスである。

What is ROS exactly? Middleware, Framework, Operating System? (2011/12/6 Brian Gerkey)

Brian Gerkeyの回答内で言及されているROSパッケージとは、ROSコミュニティサイトで共有されるROSのアプリケーションプログラムのことです。

 

ROSのパッケージは公式のものだけでも2,000以上あり、ロボット本体の制御、センサの制御、モータ制御といった、さまざまな動作やデバイスに対応したパッケージが公開されています。

 

ROSパッケージにより、世界中の開発者のコードをWebでダウンロードしてすぐに利用できるため、短期間で機能の大枠を組み上げることができる点が、ROSを活用する大きなメリットです。

ROSの代表的なツール・ライブラリ

ROSが提供するツールやライブラリのうち、代表的なものをいくつか紹介します。

 

・rviz

rvizは、ロボットの姿勢やセンサから得られたデータ、プログラム内で計算されたデータなどを可視化するツールです。

 

複数のロボットやユニットを同じ仮想空間上に可視化することも可能で、生産ライン全体の視覚的な状況把握にも役立ちます。

 

・Gazebo

Gazeboは、ROSで標準的に使用されるシミュレータです。

 

ロボット外部の環境をシミュレータ上に構築することができ、さまざまな状況におけるカメラやセンサの働き、ロボットの挙動などの確認に役立ちます。

 

・MoveIt

MoveItは、ROSで標準的に使用される軌道計算ライブラリです。

 

アーム先端の目標座標と目標姿勢を指定することで、現在の座標および姿勢から、目標座標および目標姿勢までの軌道を計算し、その軌道を実現する各関節角の時系列データを計算できます。

 

rvizを使うことで、グラフィカルに目標座標と目標姿勢を指定することも可能です。

ROS2とは

続いて、ROS2について解説します。

ROSのユースケースの変遷|ROS2が生まれた背景

まずはROS2が開発された背景から見ていきましょう。ROSの開発が始まったのは2007年ですが、当初、ROSは主に研究用途での利用を想定し、以下の前提のもと設計されました。

 

・単一のロボットであること

・ワークステーションクラスの計算資源が利用できること

・リアルタイム処理は不要であること

・高速で安定したネットワーク環境であること

・研究、学術用途で用いられること

・規制や禁止事項がなく、最大限の柔軟性があること

 

しかし、2010年のリリース以降、他のロボット用フレームワークと比べて急速にユーザー数が増えると、やがて製造・農業・商業分野のロボットに利用する動きも見られるようになります。ROSの利用範囲はその後も着々と拡大し、ROSを搭載したロボットが製品として市場に登場するまでになりました。

 

当初の想定を超える形で利用分野が拡大した結果、ROSの利用が適さない状況が目立つようになったのです。当時のROSが抱えていた課題は、次のようなものでした。

 

・通信基盤やROSパッケージの信頼性が低いため製品化が難しい

・リアルタイム対応が難しい

・単一障害点があるためモータードライバーなど決定的なシステムに利用できない

・Ubuntu(Linux)でないと使いにくい

・(単体で)組込みシステムに利用できない

 

上記の課題に対し、既存のROSが抱えている問題を解決するためにスタートしたのがROS2プロジェクトです。ROSの既存ユーザーへの影響を考慮して、ROS2は既存のROSと切り離してスクラッチで開発されました。

 

上記のROSのユースケースの変遷をまとめたものが次表です。

ROS1 ROS2
ロボットの同時利用数 単体ロボットのみ反応 複数台のロボットにも対応
計算資源 ワークステーション級の高性能計算機のみ対応 組込み規模のプラットフォームにも対応
OS Ubuntu( / Windows) Ubuntu / Windows / Mac
リアルタイム制御 特別な仕組みで対応 一般的なプロセス内で対応
ネットワーク品質 理想的かつ安定的なネットワーク環境のみ対応 不安定な通信環境下での利用にも対応(遅延や損失への対応)
応用範囲 研究、学術用途のみ対応 実製品にも対応

参考:

Why ROS 2?|ROS 2 design

 

ROSで動くロボット事例

最後に、ROSを活用したロボットの開発事例を紹介します。企業におけるROSを活用したロボット開発事例に加えて、ROSに対応するロボットの事例も紹介します。

Amazon|物流補助ロボット

Amazonの倉庫では、AmazonRoboticsと呼ばれるシステムを導入しており、庫内では棚を動かすロボット「Drive」と、Driveの動かす棚が縦横無尽に行き交うことにより、人は定位置で作業できる環境が整っています。

 

日本国内でもアマゾン川崎FCやアマゾン茨木FCなどに導入された実績があり、こうした物流補助ロボットにもROSが活用されています。

 

なお新型コロナウイルスの影響下に新設された物流拠点内には、2mのソーシャルディスタンスを保つ工夫が随所に施され、2mの距離を保っていない人を検知するカメラも導入されています。

 

参考:

テレビ神奈川 tvk3ch「LOVEかわさき 11月23日放送 潜入シリーズ!~アマゾン川崎フルフィルメントセンター編~」|YouTube

日本経済新聞「倉庫の中を縦横無尽 アマゾンの動く棚ロボ」|YouTube

ANNnewsCH「特別公開“アマゾン最新施設”の新型コロナ対策(2020年12月27日)」|YouTube

 

Autoware|自動運転向けオープンソースソフトウェア

Autowareは、名古屋大学・長崎大学・産総研により共同開発された、LinuxとROSをベースとした自動運転向けオープンソースソフトウェアです。その導入実績は、国内外数百社以上にのぼります。

 

レーザレーダ、カメラ、GNSSなどの環境センサを利用して、自車位置や周囲物体を認識しながら、カーナビから与えられたルート上を自律走行できます。

 

参考:

Autowareとは?|Tier IV

自動運転ソフトウェア:Autoware|Parallel and Distributed Systems Lab

 

Sawyer|ダイレクトティーチング可能なロボットアーム

リシンク・ロボティクスの開発したSawyerは、ROSを用いた協働ロボットです。HISが手掛ける「変なカフェ」で注目を集めたため、コーヒーを淹れてくれるロボット、と言ったほうがわかりやすいかもしれません。しかしSawyerの中心業務は、工場などにおける協働作業です。

 

Sawyerの最大の特長はダイレクトティーチング機能を搭載しているところ。ティーチングが容易なため、エンジニア不足などでロボットの導入が困難とされていた企業にも、取り入れやすいロボットと言えるでしょう。

 

またSawyerは柔軟性の高さや感度の高さに定評があり、繊細な作業にも対応します。Sawyerのハンドを独自で開発した長崎総合科学大学では、トマト早摘み取り大会で準優勝の実績もあります。

 

参考:

ノーコード革命の波に乗ろう!オープンソースのロボット開発環境ROSのユースケースをご紹介!協働ロボット Sawyer (ソーヤー) の 30分ウェブセミナー|PR TIMES

 

Erle-Copter|世界初のUbuntu搭載ドローン

Erle-Copterは、スペインに本社を構えるErle Robotisが販売する、世界で初めてUbuntuを搭載したドローンです。

 

Erle-brainオートパイロットを使用するLinuxベースのドローンで、バッテリーの持ち時間はおよそ20分、最大2キロの積載が可能と、屋外での操作に適しています。

 

 

参考:

Erle-copter|ROS Robots

Erle-Copter Gitbook|GitBook

ROSを活用した開発・導入を総合的に支援します

ROSを活用したシステム構築・ソフトウェア開発はマクロセンドにお任せください。

 

受託開発から組込みシステムへの適用、商用化まで総合的にご支援します。