ROS 2 Beta 3リリース
予定通り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実装の非依存性を壊す行為なので、不用意には使いたくないですね。
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でネイティブに動くようになったんですね。 これは使ってみたいです。
リアルタイム安全な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
いろいろ揃ってきた感はありますが、一つ一つのパッケージ開発はまだまだベータというよりはアルファという感じがするものも多く、まだまだ破壊的変更はありそうです。 それも含めて、楽しく見守ります。
Comments powered by Disqus.