ROSロボットプログラミングバイブル を読み始めたのでそのまとめです。
もくじ
付録 ROS 2
ROS1の開発から10年、当初の開発環境から要求される機能が増えた結果、ROS1と互換性のない新しいROS2がリリースされた。ROS1とROS2で相互にメッセージ通信が可能なブリッジも提供され、相互運用も可能となっている。
ROS2で新たに必要になった機能。
- 複数のロボット
- 組込みシステム用の小型コンピュータのサポート
- リアルタイム性
- 不安定なネットワーク環境下での動作
- マルチプラットフォーム(Linux、macOS、Windows)
- 最新技術のサポート(Zeroconf、Protocol Buffers、ZeroMQ、Redis、WebSockets、DDSなど)
ROS1とROS2の違い
ROS 1 | ROS 2 | |
---|---|---|
プラットフォーム | Ubuntu, macOS | Ubuntu, macOS, Windows |
通信 | XMLRPC + ROSTPC | DDS |
言語 | C++03, Python2 | C++14, Python3 (3.5+) |
ビルドシステム | rosbuild -> catkin | ament |
メッセージ、 サービス |
.msg, .srv | new .msg, .srv, .msg.idl, srv.idl |
roslaunch | XML | Python |
複数ノード対応 | 1プロセスに1ノード | 1プロセスに複数ノード |
リアルタイム性 | Orocos 等の外部フレームワーク | リアルタイムOSと適切なソフト・ハードを使用すればリアルタイム性を確保 |
グラフ表現 | Remapping は起動時のみ | Remapping は実行時も可能 |
組込みシステム | rosserial (UART) | FreeRTPS (UART, Ethernet, Wi-Fi, etc) |
ネームサービス | マスタ | マスタなし (DDS ミドルウェア) |