はじめに: ROS Tipsの連載投稿はじめます
アプトポッドVPoPの岩田です。
近年、ロボット技術が急速に進化していますが、その背景にはROS(Robot Operating System)というミドルウェアの存在が大きく影響しています。特に、ROSの新しいバージョンである「ROS 2」がリリースされて以来、ロボット開発の現場でもますます注目度が高まっています。ROSは元々、研究や学術用途で広く使われていましたが、ROS 2の登場によって商用ロボットや組み込みシステムにも容易に適用できるようになりました。この進化により、より多くの企業や研究機関がROSを採用し、ロボット開発が加速しています。
当社では、主力製品である データ伝送・管理ミドルウェア「intdash」 とROSとの連携プロダクトとして、以下のような製品を提供しています。
- intdash Bridge(intdashとROSをつなぐブリッジソフトウェア)
- intdash ROS2Bridge(intdashとROS 2をつなぐブリッジソフトウェア)
※ これらはLinuxパッケージとして公開してあり、どなたでも使用いただけます。ただし、利用にはintdashのサーバー環境のご契約が必要です。ご興味のある方は、 問い合わせフォーム よりお問い合わせください。
当社では、 ROSと「intdash」を組み合わせたロボットの遠隔化 など、これらの製品を活用したロボットシステムの開発依頼も承っております。こういった製品開発や個別システム開発を繰り返していくなかで、ROSを用いた開発に関するノウハウも徐々に蓄積してきています。
本連載では、当社がこれまで蓄積してきたTipsやノウハウを、複数回に渡って連載形式でご紹介していきます。連載第1回目は、最も基本的なところから「そもそもROSとは何なのか」についてご紹介します。
なお、連載の予定として、以下のようなコンテンツを予定しております。(連載内容は、変更・追加の可能性があります。ご了承ください)
- そもそもROSとは?(本記事)
- ROS開発におけるDocker活用テクニック
- ROSのDockerコンテナからNVIDIA GPUを利用するには
- 大量伝送シナリオにおけるROS/DDSのチューニング
本連載の投稿済みの記事はこちらからご覧いただけます。
ROSとは
ROS(Robot Operating System)はオープンソースで提供されるロボット向けのメタ・オペレーティングシステムです。OSと銘打ってはいますが、実際は分散コンピューティングのための通信ミドルウェアが中心のエコシステムとなっています。通信にはPub/Subモデルを採用し、ノード(Node)と呼ばれるプロセス間でメッセージを送受信し合ってソフトウェアを構築します。OSにはUbuntu(Linux)を使用します。
ROSの種類: ROSとROS 2
現在主流になりつつあるのは、ROSの新しいバージョンであるROS 2です。ROS 2がリリースされる以前、ROS(以降、ROS全般についての言及と区別するためにROS 1と表記します)は多くのロボット研究者や開発者に採用されましたが、産業界での採用にはいくつかの課題がありました。特に、リアルタイム性、セキュリティ、モジュラリティなどの面において、不足を指摘する声が多く聞かれました。これらの課題を解決するために、新たに開発されたのがROS 2です。ROS 2は、新しい通信ミドルウェアDDS(Data Distribution Service)を採用し、リアルタイム性やセキュリティの向上を実現しました。ROS 2は、ROS 1とは異なる設計思想を持ちながらも、既存のROSユーザーが移行しやすいように設計されています。
ROS 1 | ROS 2 | |
---|---|---|
想定ロボット 台数 |
単体ロボットでの使用 | 複数台のロボットへの対応 |
想定する プラットフォーム |
ワークステーション級の 高性能計算機 |
組み込みプラットフォーム にも対応 |
OS | 基本的にUbuntuのみ | マルチプラットフォーム |
リアルタイム 制御 |
特別な仕組みにより実現 | OSやハードウェアで 標準サポート |
想定 ネットワーク |
安定した通信環境 (有線・広帯域無線通信) |
不安定な通信環境に対応 (遅延や損失にも対応可) |
適用分野 | 研究、学術用途 | 実製品での利用 |
通信方式 | XMLRPC + TCPROS | DDS |
送信ノード の検出方法 |
単一障害点となりうる ROSマスターへ問い合わせ |
ピア・ツー・ピアで相互検出 |
ROSのディストリビューション
ROSディストリビューションとは、ROSの特定のバージョンに対応したソフトウェアパッケージのまとまりです。これは、Linuxディストリビューション(例: Ubuntu)などと似たようなものと考えることができます。一度新しいディストリビューションがリリースされると、コアパッケージ(ros-desktop-full以下のすべて)に対する変更は、なるべくバグ修正と非破壊的な改善(non-breaking improvements)に限定されるように運用されます。一方で、より "高度な" パッケージについての更新ルールは若干緩和されており、破壊的変更(breaking changes)の可否判断はパッケージのメンテナーに任されているようです。
すなわちROSディストリビューションとは、開発者が安心して長期間、ROSを使えるようにするための仕組みです。このようなディストリビューションの考え方があるおかげで、開発者は安定した環境で作業ができます。ちなみに、ディストリビューションは Distro などと省略して表記される場合があります。
2023年09月の時点で、LTSサポートされているROSのディストリビューションは以下の通りです。
ROS 1
Distro | リリース日 | EOL | サポートOS |
---|---|---|---|
Noetic | 2020/05/23 | 2025/05 (Focal EOL) |
Ubuntu 20.04 Focal (amd64, arm64) |
Melodic | 2018/05/23 | 2023/06 (Bionic EOL) |
Ubuntu 18.04 Bionic (amd64, arm64) |
Kinetic | 2016/05/23 | 2021/04 (Xenial EOL) |
Ubuntu 16.04 Xenial (amd64) |
表中の情報は、以下のリンクからもご確認いただけます。
ROS 2
Distro | リリース日 | EOL | サポートOS |
---|---|---|---|
Humble | 2022/05/23 | 2027/05 (Jammy EOL) |
Ubuntu 22.04 Jammy (amd64, arm64) Windows 10 V.S. 2019 (amd64) |
Foxy | 2020/06/05 | 2023/06 (Focal EOL) |
Ubuntu 20.04 Focal (amd64, arm64) Mac macOS 10.14 Mojave Windows 10 Visual Studio 2019 |
Dashing | 2019/05/31 | 2021/05 (Bionic EOL) |
Ubuntu 18.04 Bionic (amd64, arm64) Mac macOS 10.12 Sierra Windows 10 Visual Studio 2019 |
表中の情報は、以下のリンクからもご確認いただけます。
- Distributions — ROS 2 Documentation: Humble documentation
- REP 2000 -- ROS 2 Releases and Target Platforms (ROS.org)
Ubuntu
上記表中に記載したUbuntuのサポート状況 ( LTS : 安定版 ) は以下のようになっています。
バージョン | ディストリビューション | リリース日 | EOL |
---|---|---|---|
Ubuntu 22.04 | Jammy | 2022/04/21 | 2027/04 |
Ubuntu 20.04 | Focal | 2020/04/23 | 2025/04 |
Ubuntu 18.04 | Bionic | 2018/04/26 | 2023/06 |
Ubuntu 16.04 | Xenial | 2016/04/21 | 2021/04 |
表中の情報は、以下のリンクからもご確認いただけます。
当社のソリューションについてのご紹介
当社では、 IoTデータの伝送・管理を得意とするミドルウェア「intdash」 の開発と、これを用いたシステム開発サービスをご提供しております。
冒頭でもご紹介した以下のソフトウェア等を利用してROSと「intdash」を連携することにより、インターネットを越えてROSのデータを遠隔地へ連携する いわゆる「NAT越え」 を簡単に実現することが可能です。
- intdash Bridge(intdashとROS 1をつなぐブリッジソフトウェア)
- intdash ROS2Bridge(intdashとROS 2をつなぐブリッジソフトウェア)
このような製品により、ひとたびROSロボットを intdash に接続してしまいさえすれば、あとは「intdash」の様々な機能性を利用して、 ロボットのクラウド管理、遠隔監視・遠隔操縦の実現 など、高度なロボットシステムの開発を実現できます。
「intdash」の具体的な特長や機能性については、以下のリンクをご覧ください。
また「intdash」は、IoTデータの 「伝送」だけでなく、「可視化」や「データ管理」についても対象とした製品 です。
「intdash」に付属する「Visual M2M Data Visualizer」という可視化ダッシュボードツールを利用すれば、ROSデータを始めとする様々なIoTデータを、ダッシュボード上で一元的に可視化することができます。
以下は「Visual M2M Data Visualizer」により実現可能なダッシュボードの一例です。
「Visual M2M Data Visualizer」に対するより詳細な情報は、以下のリンクからご確認いただけます。(上記のダッシュボード例についても、より拡大したものを以下のページでご覧いただけます)
さらに、「intdash」はミドルウェアを経由して伝送したデータをサーバー上に自動的に保存する機能性を持っています。保存されたデータはWebブラウザからいつでも確認できますので、 ロボット開発の際のデータ管理プラットフォームとしてもご活用いただけます。
intdashに付属するブラウザアプリケーションや各種APIの詳細については、当社サイトの製品紹介ページ からご確認ください。
また、ご興味をお持ちいただけた方向けに、「intdash」を14日間無料でをお試しいただける 無償トライアルプログラム もご用意しております。この機会に是非お試しいただき、「intdash」の実力を実感していただければと思います。自社ロボットをお持ちのロボットベンダー様向けには、お持ちのロボットを「intdash」に対応させるための開発環境を無償でご提供させていただく デベロッパープログラム のご用意もございます。詳しい内容について、当社担当者に聞いてみたいという方は、お問い合わせフォーム よりお気軽にご連絡ください。
おわりに
いかがでしたでしょうか。今回はまず基本中の基本「ROSとはなにか」についてご説明し、ROSに関わる当社の製品についても併せてご紹介ました。 冒頭でもご紹介した通り、次回は、 ROS開発におけるDocker活用テクニック です!
ROS 2が登場して以来、ROSの開発は徐々にコンテナイメージを前提としたものに移り変わってきている状況があります。次回の投稿では、こういった背景のもと、 そもそもコンテナ技術とはなんなのか、ROSの開発においてどのようにコンテナ技術を活用していけばよいのか 等についてご紹介いたします。次回もお楽しみに!
ちなみに、来週 2023年9月26日に開催される ROSConJP 2023 @浅草 にて、シルバースポンサーとしてブースを出展します。 また、当日の講演にて、当社のエンジニアが当社の Open-RMF に関する取り組みについてプレゼンいたします。
ご興味をお持ちいただけた方は、ぜひこの機会に当社ブースにお立ち寄りください。 私も当日ブースに立ちますので、当社製品に関する技術的な内容や様々な疑問にお答えしたいと思います。
最後までお読みいただきありがとうございました!