予定通りROS 2のバージョンBeta 3がリリースされましたので、前回の続きではなく、Beta 3の変更、改善された点Beta3 Overviewを和訳、意訳、追記しながら取り上げます。

特徴

Beta 2からの改善点を挙げていきます。

rclpyの改善

PythonのROS2クライアントライブラリであるrclpyの実行モデルが改善されました。 特にC拡張ライブラリを呼ぶ部分のメモリ管理が改善されたそうです。 確かにrclpyのイシューやプルリクエストでメモリ解放不足を始め、いろいろと議論されていました。

ros2_control

ros_controlをROS2向けに書き換えたros2_controlが実験的に導入されました。 masterブランチには何もありませんが、他のブランチを見ると急ピッチで開発が進められているようです。 こちらはまだ手をつけない方が良さそうですね。

特定DDS実装

FastRTPSやConnextなどの特定のDDS実装へのアクセス関数が用意されたそうです。 DDS実装に依存にするソースコードを書く必要がある場合には用いるのでしょうか。せっかくのDDS実装の非依存性を壊す行為なので、不用意には使いたくないですね。

https://github.com/ros2/demos/blob/6363be2efe2fea799d92bc22a66e776b2ca9c5d0/demo_nodes_cpp_native/src/talker.cpp

rcl_publisher_t * rcl_pub = pub->get_publisher_handle();
rmw_publisher_t * rmw_pub = rcl_publisher_get_rmw_handle(rcl_pub);
eprosima::fastrtps::Publisher * p = rmw_fastrtps_cpp::get_publisher(rmw_pub);
printf("eprosima::fastrtps::Publisher * %zu\n", reinterpret_cast<size_t>(p));

rclpyのロギングAPI対応

Beta 2ですでにC++言語用のロギングAPIはrclcppに導入されていましたが、それがPython言語用のロギングAPIとしてrclpyにも導入されたそうです。

https://github.com/ros2/rclpy/blob/1ef2924ef8e154c0553edf0fdba4840b08b728f8/rclpy/rclpy/logging.py

書き方の作法はROS1のrospyと似ているので、違和感なく使えそうです。

OpenSpliceの再サポート

FastRTPSとConnextに限られていたDDS実装に以前まではサポートされていたOpenSpliceが再度サポートされることになったそうです。 OpenSplice提供元のPrismTechが自ら修正したそうです。素晴らしい。

bloom対応

ROS2のパッケージリリースにROS1でも使われるbloomがパッチの必要なく対応したそうです。 bloomはいつか使おうと思っていて今まで触ってこなかったので、この機会に触ってみます。

HSRデモ対応

ROS2パッケージを使ったデモにHSRも対応したそうです。これまではTurtlebot 2だけだったので、その次にHSRが対応したことは日本人として嬉しいですね。

また、可視化のためのrvizもROS2対応版が開発され、それにも対応しているそうです。 ついにrvizもROS2でネイティブに動くようになったんですね。 これは使ってみたいです。

https://github.com/ros2/rviz

リアルタイム安全なPub/Sub通信

まだConnextのみの対応だそうですが、リアルタイム安全なPub/Sub通信をrmw_implementationの互換性レイヤを使ったソースコードで実現できるようになったそうです。

リアルタイム制御が必要なロボットプログラミングにROS2が使われていく未来が見えてきました。

.msgフォーマットの新機能

design.ros2.orgの記事にもありましたが、.msgのフォーマットが拡張され、

  • サイズ固定配列
  • デフォルト値

が実装レベルでも書けるようになりました。


ROS2のリリースロードマップでは、Beta 3の次は12月にバージョン1.0がリリースされる予定です。

https://github.com/ros2/ros2/wiki/Roadmap

いろいろ揃ってきた感はありますが、一つ一つのパッケージ開発はまだまだベータというよりはアルファという感じがするものも多く、まだまだ破壊的変更はありそうです。 それも含めて、楽しく見守ります。