yotiky Tech Blog

とあるエンジニアの備忘録

ROS ロボットプログラミングバイブル 付録 ROS 2

ROSロボットプログラミングバイブル を読み始めたのでそのまとめです。

もくじ

付録 ROS 2

ROS1の開発から10年、当初の開発環境から要求される機能が増えた結果、ROS1と互換性のない新しいROS2がリリースされた。ROS1とROS2で相互にメッセージ通信が可能なブリッジも提供され、相互運用も可能となっている。

ROS2で新たに必要になった機能。

  • 複数のロボット
  • 組込みシステム用の小型コンピュータのサポート
  • リアルタイム性
  • 不安定なネットワーク環境下での動作
  • マルチプラットフォームLinuxmacOSWindows
  • 最新技術のサポート(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 ミドルウェア)

補足