hakoniwa-ros

>100 Views

August 04, 25

スライド概要

# ROS vs 箱庭 - 2つのロボット通信システムの哲学的違い**

ロボット開発で広く使われるROS 2と、新しいアプローチを提案する箱庭システムを徹底比較。
単なる技術比較にとどまらず、それぞれの設計思想と目指す方向性の違いを明確に解説します。

## 主な内容
- 全体アーキテクチャの比較(最適化フレームワーク vs 部品化システム)
- 通信ランタイムの構造的違い(階層的 vs 水平分離)
- 開発フローとプログラミングモデルの相違点
- 「技術の民主化」という観点から見た両システムの意義

ROS 2は既知の課題に対する最適解を提供する一方、箱庭は未知の可能性に向けて開かれたシステムを目指す。
この根本的な違いが、なぜ異なるアーキテクチャを採用するのかを理解する鍵となります。

ロボット開発者、システム設計者、技術選定に関わる方におすすめの資料です。

profile-image

TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

ROS vs 箱庭 | ROS is an optimized framework for what it wants to do. | Hakoniwa is not a framework for a known purpose—it's a system that leaves the door open for the unknown. | It modularizes everything and provides the means to integrate them. | That’s why it’s difficult. That’s why it requires knowledge. | But that’s also why it empowers the user to grow. | And that, perhaps, is what technological democratization really means. 合同会社箱庭ラボ CTO 森崇

2.

アジェンダ • ROS側: • 全体像 • 通信ランタイム・アーキテクチャ • 通信まわりの開発フロー • 通信プログラム • 箱庭側: • 全体像 • 通信ランタイム・アーキテクチャ • 通信まわりの開発フロー • 通信プログラム • ROS vs 箱庭 2

3.

ROSの全体像 通信ランタイム (rclcpp, rmw, dds..) 通信記述形式 (ROS IDL) 通信構成の可視化 ロボット記述形式 (URDF) (rqt_graph) ログ/デバッグ機能 (rosbag, rostopic..) ROS Message ロボット可視化 (rviz) ロボットシミュレータ ロボット定義 (gazebo) 各種ツール群 (MoveIt!, Navigation Stack..) ビルドシステム パッケージツール (ros2 pkg..) (colcon build..) 管理ツール群 起動システム (ros2 launch..) 3

4.

ROSの通信ランタイム・アーキテクチャ ROSのアプリケーション ロボット制御 プログラム msgクラス インタスタンス クライアントライブラリ (rclcpp, rclpy, rcljava, ...) クライアントライブラリAPI (ノード管理、状態管理, ...) 通信ミドルウェア API (rmw) DDS CDR RTPS (バイナリ変換) (通信プロトコル) 通信(UDP, TCP,..) ROSの通信ランタイム 4

5.

ROSの開発フロー(通信まわり) アプリ設計 情報 通信設計 情報 ROS Message 定義 msgファイル プロジェクト作成 プロジェクト ROS Message ビルド msgヘッダ ファイル ROS プログラム 作成 アプリ ビルド アプリ実装 実行バイナリ 5

6.

ROSのプログラム pub 側のROSノード sub側のROSノード msgヘッダ ファイル msgクラス インタスタンス ROS トピック pub API ユーザ アプリケーション (pub側) ROSトピック ROS通信 ROS トピック sub callback msgクラス インタスタンス ユーザ アプリケーション (sub側) クライアント ライブラリ・ヘッダ 6

7.

箱庭の全体像 • 箱庭は、 • 通信をROS IDLで定義 • 箱庭PDUを中心にしたモジュール連携 • を目指しています。 ロボット 通信構成定義 通信記述形式 (ROS IDL) 通信ランタイム (udp, websocket, mqtt, zenoh...) 通信構成の可視化 ログ/デバッグ機能 (箱庭コマンド..) • 最小構成で、 • 既存のシステムへの適合を目的とし、 • 管理ツール群も必要最小限で 箱庭PDU ロボット可視化 (Unity, Unreal..) ロボットシミュレータ • と考えてます。 (MuJoCo, 箱庭ドローン..) 各種ツール群 ビルドシステム パッケージツール 管理ツール群 起動システム 7

8.

箱庭の通信ランタイム・アーキテクチャ ROS 2は階層的な関数呼び出しで通信の複雑さを隠蔽する 箱庭は共有メモリを介してシミュレーションと通信の役割を完全に分離する 箱庭アセット msgクラス インタスタンス 箱庭PDU変換 ライブラリ (バイナリ変換) 箱庭アセット ロボット制御 プログラム 箱庭ブリッジ (WebSocket) 箱庭アセットAPI 箱庭ブリッジ (Zenoh) ・・・ 箱庭ブリッジ (Mqtt) 箱庭アセットAPI (C/C++, Python..) (C/C++, Python..) 箱庭アセットライブラリAPI 箱庭アセットライブラリAPI (箱庭アセット時刻管理、状態管理, ...) (箱庭アセット時刻管理、状態管理, ...) 箱庭PDUデータ (共有メモリ) 箱庭のシミュレーション・ランタイム 箱庭の通信ランタイム 8

9.

箱庭の開発フロー(通信まわり) 通信設計 情報 通信方式選定 (箱庭ブリッジ選定) 箱庭ブリッジ アプリ設計 情報 ロボット 通信構成定義 ROS Message 定義 csvファイル msgファイル msgヘッダ ファイル 箱庭アセット作成 箱庭PDU生成 箱庭PDU変換 ライブラリ 箱庭アセット 通信構成定義 アプリ ビルド jsonファイル 実行バイナリ アプリ実装 9

10.

箱庭のプログラム pub 側の箱庭アセット sub側の箱庭アセット msgヘッダ ファイル 箱庭アセット API (write) msgクラス インタスタンス 箱庭PDU 箱庭アセット API (read) 箱庭PDU変換 ライブラリ msgクラス インタスタンス 箱庭PDU変換 ライブラリ ユーザ アプリケーション (pub側) 共有メモリ / 箱庭ブリッジ通信 箱庭アセットAPI ヘッダ ユーザ アプリケーション (sub側) 10

11.

ROS vs 箱庭 項目 ROS 2 箱庭 (Hakoniwa) 全体像 ロボット開発向けに最適化 された巨大なフレームワーク 箱庭PDUを中心に横の繋がりを目指す 部品化の仕組み 通信ランタイム・ アーキテクチャ 階層的な関数呼び出し によるトップダウン構造 共有メモリを介した 疎結合な水平分離構造 通信まわりの 開発フロー ROS Messageをベースにして、 バイナリ変換、通信方式は ROSツールチェーンが対応 ROS Messageをベースにして、 バイナリ変換、通信方式は ユーザが生成/選択 通信プログラム バイナリ変換と通信方式を隠蔽化 バイナリ変換と通信方式を選択 11

12.

ROS vs 箱庭(サマリ) • ROS • ROSは、ロボット開発者向けの課題に向き合って最適化されたフレームワーク • 箱庭 • 箱庭は、特定の目的のために設計されたフレームワークではない。 • まだ見ぬ未来のシステムに向けて、開かれている。 • そのため、さまざまな技術を部品化し、ユーザに選択を委ねる思想のもとに作られている。 • だから、難しいし、利用する技術に対する知識が求められる。 • しかし、それこそが、ユーザの技術育成につながる。 • そして、おそらく、それこそが技術の民主化と呼べるのではないか。 12