ROS 2とは?
ロボットオペレーティングシステム(ROS)は、ロボットソフトウェアを書くための柔軟なフレームワークです。ROSは、様々なプラットフォームにおいて、複雑で堅牢なロボット動作の作成を容易にするためのツール、ライブラリ、規約の集合です。
最新版のROS 2は、オープンソースのロボット用ミドルウェアとツールのセットです。ロボットアプリケーション開発のデファクトスタンダードでもあり、以下のような新しいユースケースをサポートしています。
- 複数のロボットで構成されるチーム
- 小規模かつ組込みプラットフォーム
- リアルタイムシステム
- 非理想的なネットワーク
- 本番環境
- システム構築・構造化のための設計パターン
ROS 2は、将来的にROSから完全に置き換わると見込まれています。
オープンソースの最新ロボットツールであるROS 2では、利用可能なユースケースが拡大しています。
ROS 2のコンポーネントとワークフロー
図1. 新しいアプリケーション向けのROS 2
サポート対象ハードウェア
プラットフォーム:
- Arm64
- RISC-V
- Real-time systems
- Intel® x86-64
サポート対象オペレーティング
システム:
- Ubuntu Linux
- Yocto Project Linux
- QNX
- VxWorks®
サポート対象ミドルウェア
サービス(DDS):
- Cyclone DDS
- Fast DDS
- Connext DDS
- Eclipse iceoryx
ROSコミュニティーからの、その他の利用可能なコンポーネント:
- MOVEit
- Nav2
- Control
ROS 2とYocto Project Linuxビルドシステム
図2. Yocto Projectのビルドシステムとそのレイヤを表した図
レイヤは、機能によって結合されたお客様のパッケージのコレクションです。例えば、meta-ROSレイヤはROS 2ディストリビューションのすべてのパッケージを含んでいます。このパッケージの中には、個々のパッケージの様々なレシピがあり、どのようにパッケージを構築、インストール、および/または変更したいかを記述することができます。
Yocto Projectのビルドシステムを使用すると、レイヤ単位でのビルドが可能です。レイヤを追加すると、機能も追加されますが、その下にある既存のレイヤ内の特定のコンポーネントはレイヤ追加後も変更可能です。
Yocto Project LinuxとROS 2向けLinuxデスクトップの比較
Yocto Project Linux | Desktop Linux | |
---|---|---|
ROS 2 | meta-ros | rosdistro |
Distribution | Source | Binary |
Compilation | Cross | Native |
Silicon Vendor | ARM, Intel, Nvidia, NXP, RISC-V | Intel, ARM |
Build System | BitBake | colcon |
ROS 2 | meta-ros | rosdistro |
Performance Tuning | Easy (flexible) | Middle |
Footprint Tuning | Easy (multiple profiles) | Difficult |
Learning Curve | Difficult (layers, recipes, etc.) | Middle (colcon, bloom, packages) |
Licenses | SPDX generation | Possible |
SDK | Available | N/A |
Security Updates | Available | Available |
図3. Yocto Project LinuxとROS 2向けLinuxデスクトップの比較
Yocto Project LinuxとLinuxデスクトップの比較で、以下のような重要な点がわかります。
- Linuxデスクトップでは、用意されたバイナリパッケージの変更は容易ではありません。一方、Yocto Project Linuxは、ソースディストリビューションを提供し、開発者が特定のパッケージをベースに依存関係を選択・変更できる「レシピ」を提供します。
- クロスコンパイルモデルとネイティブモデルの比較では、クロスコンパイルはホストを必要とします。つまり、あるコンピュータが他のコンピュータのためのディストリビューションをコンパイルする責任を負うことになります。
- Yocto Project Linux は、Linuxデスクトップに比べて、シリコンベンダーのサポートが大幅に充実しています。
- Linuxデスクトップのパフォーマンスを上げるためのチューニングは骨が折れますが、不可能ではありません。しかし、Yocto Project Linuxのチューニングは簡単です。
- Yocto Project Linux では、アプリケーションを開発するためのSDKが提供されますが、Linuxデスクトップでは提供されません。
多くの違いがあるにもかかわらず、どちらもメタデータ情報を読み取り、ユースケースに基づいてパッケージをコンパイルするといった、同じようなビルドシステムを共有しています。
ウインドリバーのアプローチ
Wind River Studio
Wind River Studioは、インテリジェントエッジシステムの開発、デプロイ、運用、サービスを行うための、初のクラウドネイティブプラットフォームです。
Wind River® Studioは、セキュリティ、安全性、信頼性を必要とするミッションクリティカルなインテリジェントエッジシステムの開発、デプロイ、運用、サービスを行うための、初のクラウドネイティブプラットフォームです。変革的なビジネスの成功を加速するために、一元管理によって、ライフサイクル全体にわたりデジタルスケールを可能にするよう設計されています。
RTOS
Wind River Studioには、市場をリードするリアルタイムOSのVxWorksが搭載されており、VxWorks向けROS 2(ROS 2 for VxWorks)が追加されました。ROS 2は技術的にはRTOS製品の一部ではありませんが、ROS 2 for VxWorksではROS 2のフレームワークをRTOSに統合するために必要な修正と、ビルドスクリプトが提供されています。ロボットプラットフォームやアプリケーションの開発者で、SDK、Visual Studio Code、およびリアルタイムコンテナを使用してVxWorksが提供する最新の開発ワークフローをご利用になりたい方は、こちらから詳細情報をダウンロードしてください。
ROS 2 for VxWorksは、2つの方法で構築することができます。
- 無償かつ非商用利用のライセンスで提供されているVxWorks SDKを使用する
- 商用ライセンスのVxWorks製品を使用する
VxWorks SDKビルドは、従来のコマンドラインレシピとCMakeなどのツールを使用します。2つ目のビルドオプションは、VxWorksのソースおよびイメージビルドプロジェクトと統合されています。
このプロジェクトは、ROS 2のビルドに必要な依存関係を提供しますが、ROS 2は特定のビルドホスト上の特定のビルドツールも必要とします。このため、ウインドリバーでは、ROS 2のビルドを自動化するビルドスクリプトを提供しています。これには、ビルドに再利用可能なサンドボックス環境を使用したい開発者向けのDockerコンテナも含まれます。
Wind River Labs
ROS 2 for VxWorksは、Wind River Labsのテクノロジーとしても含まれています。その他のロボット工学のデモやプレゼンテーションについては、 Wind River Resource Libraryでご覧いただけます。
LINUX OS
Wind River StudioのLinux OSは、Wind River Linuxをご利用いただけます。堅牢で信頼性が高く、セキュアなLinuxベースの組込みデバイスやシステムを、自社開発(RYO)に伴うリスクや開発の労力なくビルド、デプロイすることを可能にします。ウインドリバーは、お客様のコードベースを最新の状態に保ち、不具合の追跡と修正、セキュリティパッチの適用、厳しい市場の要件や認証に準拠したランタイムのカスタマイズ、IPおよび輸出コンプライアンスの円滑化、コストの大幅な削減を実現します。
Wind River Linuxの主な機能:
- 堅牢性、信頼性、安全性に優れたLinux ベースのエッジデバイスやシステムを、RYO (Roll-your-own) のようなリスクや開発の労力なしにビルド、デプロイ可能です。
- 市場投入までの時間を短縮し、総所有コストを削減し、組込みシステム用オープンソフトウェアの可能性を最大限に引き出します。
- デプロイしたデバイスのロイヤリティやサブスクリプションから解放されます。
- 完全なオープンソースやYocto Project互換のツールで動作します。
- 小容量のディスク、小さいメモリサイズ、リアルタイム(preempt_rt)、高可用性に対応した構築が可能な独自のLinuxを活用します。
- すべてのウインドリバー製パッケージのコンテンツ、著作権、ライセンスに関する情報により、責任やコンプライアンスに関する問題を回避することができます。