ROS 2 Bouncy Bolsonリリース
ROS 2 Bouncy Bolson
ROS 2の2番目のバージョンであるBouncy Bolsonがリリースされました。
https://github.com/ros2/ros2/wiki/Release-Bouncy-Bolson
Ubuntu 18.04に対応したバイナリビルドも提供されるため、本バージョンからはUbuntu 18.04に移行した方が開発しやすいです。僕ものこの機会に移行しました。
Windows 10, macOS 10.12にも正式対応しています。
特徴
上記リリース記事で取り上げられている特徴のうち、主要なものを下に挙げます。
launchシステムの刷新
ROS 1ではroslaunch
コマンドとXML形式のlaunchファイルを組み合わせて複数ノードの起動手順を記述していました。
ROS 2からはXMLファイルではなく、Pythonスクリプトを記述して複数ノードの起動手順を記述することになります。
https://github.com/ros2/launch
確かにこれまでもXMLの特殊タグを駆使して、変数宣言や制御構文を模した機能を実現していましたが、起動したいノード数が増えるに従って、XMLファイルを追いかけるのが難しくなってきていたように思います。 特にMoveIt!などは顕著でした。 記述が冗長なXML文法と特殊タグを駆使して記述するよりは、純粋にプログラミング言語で書けた方がデバッグの面でも有利そうです。
シリアライズされたデータのPub/Sub対応
ROS 1含め、これまでのPub/Subで通信するデータはROSメッセージの定義に沿って中間表現に変換されていたため、特に画像などのセンサーデータを送受信することは非常にオーバーヘッドが大きい処理が必要でした。
今回導入されたシリアライズ機能により、データのバイナリ表現をそのまま送受信することができるようになるため、中間表現への変換コストとデータサイズが削減されることが期待できます。 また、動的メモリ割り当てせず事前にメモリ確保をしたものを使いまわすこともできるようになります。
- https://github.com/ros2/demos/blob/master/demo_nodes_cpp/src/topics/talker_serialized_message.cpp
- https://github.com/ros2/demos/blob/master/demo_nodes_cpp/src/topics/listener_serialized_message.cpp
この機能はrosbag2
実装のためにこれから必要となってくるのだそうです。
RMW実装のバイナリビルド提供の拡大
これまでRMW実装はFastRTPSのものしかバイナリビルドが提供されていなかったため、他のRMW実装を使うにはソースコードビルドを行う必要がありましたが、ROS 2 Bouncyからは以下の3つが提供されるようになります。
- eProsima’s FastRTPS(デフォルト)
- RTI’s Connext
- ADLINK’s OpenSplice
RMW実装は環境変数で切り替えられるため、開発時はオープンソース実装、製品出荷時は商用実装を用いるといったことが簡単に実現できます。
ament_toolsに代わるビルドツールcolcon
これは僕自身いろいろな文章やソースコードを読んでも、まだいまいち理解していないのですが、ROS 2でこれまでに提供されてきたメタビルドツールであるament_tools
が非推奨化され、新しくcolcon
というビルドツールが導入されました。
ament_tools
がcatkin
に代わって導入された背景には、モノリシックな実装であるcatkin
から、モジュール構造でプラグイン拡張しやすい実装に変更したというのが理由でした。 しかし、colcon
はROS 2だけでなく、ROS 1、Gazeboもビルドできるツールとして再設計されたらしく、大量のレポジトリが出来上がっています。
正直、ament_tools
のプラグイン実装でROS 1やGazeboをビルドできるようにでき流ようにしなかった理由は、まだよくわかっていません。
コマンドラインツールの機能追加
ros2
コマンドのサブコマンド群がかなり増えたそうです。 これにより、ライフサイクルやセキュリティもros2
コマンドで設定、取得できるようになります。
https://github.com/ros2/ros2/wiki/Introspection-with-command-line-tools
次回から
は上で取り上げた特徴やこれまで取り上げてこなかった新しい機能を中心に一つずつ紹介していきます。
ROS 2はあと一つ、アクション機能が実装されれば、ほぼ中核機能は完成といった感じでしょうか。面白くなってきました。
Comments powered by Disqus.