Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ソフトウェアフレームワークChoreonoidの ROS 2プラグインの設計と実装 / Des...
Search
yuki
September 25, 2024
Technology
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ソフトウェアフレームワークChoreonoidの ROS 2プラグインの設計と実装 / Design and Implementation of ROS 2 Plug-in for Choreonoid
ROSCon JP 2024 での発表スライドです.
yuki
September 25, 2024
More Decks by yuki
See All by yuki
論文 Capturability-based Analysis and Control of Legged Locomotion を読む (Part 1) / Review on "Capturability-based Analysis and Control of Legged Locomotion (Part 1)"
ssryuki
1
550
はじめてのしつぎおうとう / Be Happy Together
ssryuki
2
1.5k
微分動的計画法の近年の動向:制約付き軌道計画問題へのアプローチ / A Survey of Constrained Differential Dynamics Programming
ssryuki
4
3.6k
制御理論講習会(古典制御論編1) / Classical Control Theory Seminar 1
ssryuki
3
1.9k
知能ロボコン出場機体 "Kaninchen" の製作 / Building the Robot named "Kaninchen" for inrof 2019
ssryuki
1
1.3k
Other Decks in Technology
See All in Technology
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
600
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
390
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
5.6k
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
440
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
330
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
390
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
260
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
190
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
310
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
120
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
2.8k
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
470
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
880
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
510
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
550
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
290
The Language of Interfaces
destraynor
162
27k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
360
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
590
Transcript
ソフトウェアフレームワークChoreonoidの ROS 2プラグインの設計と実装 吉本 幸太郎 1 大西 祐輝 2 中岡 慎一郎 3
1: 個人 2: 東京工業大学 3: 株式会社コレオノイド ※ Choreonoid ROS 2プラグインの開発の一部は, 「World Robot Summit (WRS) 2025 過酷環境F-REIチャレンジ/シミュレーション災害チャレンジ」 の協力を受けています.
目次 1. Choreonoidの紹介 2. ChoreonoidとROS 3. ROS 2 プラグインの実装方針 4.
ROS 2 へのフィードバック 1 / 20
目次 1. Choreonoidの紹介 2. ChoreonoidとROS 3. ROS 2 プラグインの実装方針 4.
ROS 2 へのフィードバック 1 / 20
ロボット開発を支援する統合グラフィカルフレームワーク. ROS的には…… rqt + RViz + Gazebo を一つのアプリにまとめたようなもの. 特徴: •
速い! (高速な起動,軽量な動作) • うまい!(自作プラグインによる容易な機能拡張) • 安い! (MITライセンスのオープンソースで無償利用可能) Choreonoidとは 1. Choreonoidの紹介 2 / 20
フレームワークとしてのChoreonoid Q. Choreonoidってシミュレータ? A. 半分正解 フレームワーク 「拡張可能なロボット用統合GUI 環境」 • ロボット開発支援C++ライブラリ群
• ユーザープラグインシステム 1. Choreonoidの紹介 3 / 20
Choreonoidの標準プラグイン群が提供する機能 ビジュアライザ • ロボットモデルやセンサ情報の 可視化,GUI操作,衝突判定,etc. 動力学シミュレータ • 産総研製の物理エンジンを搭載 • オープンソース
/ 商用エンジンにも対応 例)ODE / Bullet / PhysX / AGX Dynamics ロボットモデル提供:東京大学 情報システム工学研究室 1. Choreonoidの紹介 4 / 20
Choreonoidの活用事例 1. Choreonoidの紹介 5 / 20
目次 1. Choreonoidの紹介 2. ChoreonoidとROS 3. ROS 2 プラグインの実装方針 4.
ROS 2 へのフィードバック 6 / 20
ChoreonoidのROS対応 ChoroenoidのROS対応の内容は,大別して次の三点にまとめられる: • Choreonoidのノード化 • ROS標準のURDFで書かれたロボットモデルの読み込み • 物理シミュレーションで,ROSインターフェースを提供するプラグイン (ROSプラグイン ,次頁で説明)
2. ChoreonoidとROS 7 / 20
Choreonoidにおけるプラグインの立ち位置 Choreonoid の設計思想 「プラグインを作って機能を増やす」 →プラグイン自体も作りやすくしている. ROSプラグイン ROSのライブラリや Choroenoidの他のプラグインを利用して ,Choroenoidの内部情報と ROS
での通信情報を相互に変換する. 2. ChoreonoidとROS 8 / 20 \ココだよ/ ⇆
ChoreonoidをROS環境でシミュレータとして使うためのプラグインアイテム群 • WorldROS(2):シミュレーション環境に1つだけ配置 ◦ シミュレーション時間を /clock トピックで出力 • BodyROS(2):ロボットごとに配置 ◦
ロボットのセンサ情報をトピックで出力 (joint statesを含む) • ROSControl:ロボットごとに配置 ◦ ros_control の制御インターフェイスを提供 ※ ros2_control 向けは現在開発中 WorldROS 環境 BodyROS ChoreonoidのROSプラグイン /clock states commands 2. ChoreonoidとROS 9 / 20 ロボット ROSControl
ROS 2 プラグインの動作例 2. ChoreonoidとROS 10 / 20
目次 1. Choreonoidの紹介 2. ChoreonoidとROS 3. ROS 2 プラグインの実装方針 4.
ROS 2 へのフィードバック 11 / 20
ROS 1/2 両対応の形態 • 別リポジトリ運用 ◦ リポジトリ名の末尾に「 2」が付きがち ◦ 例:rviz2
/ navigation2 • 同一リポジトリ・別ソース運用 ◦ ブランチごとでそれぞれのバージョンに特化 ◦ 例:image_transport • 同一リポジトリ・同一ソース運用 ◦ 一つのソースコードで全てのバージョンへ対応 ◦ 例:BehaviorTree.CPP ROS 1 パッケージを ROS 2 に対応させるとき,いくつかの形態が存在 12 / 20 3. ROS 2プラグインの実装方針
ROS 1/2 両対応の形態 • 別リポジトリ運用 ◦ リポジトリ名の末尾に「 2」が付きがち ◦ 例:rviz2
/ navigation2 • 同一リポジトリ・別ソース運用 ◦ ブランチごとでそれぞれのバージョンに特化 ◦ 例:image_transport • 同一リポジトリ・同一ソース運用 ◦ 一つのソースコードで全てのバージョンへ対応 ◦ 例:BehaviorTree.CPP メンテナンスコスト低 BugFixのbackportがいらない ROS 1 パッケージを ROS 2 に対応させるとき,いくつかの形態が存在 採 用 12 / 20 3. ROS 2プラグインの実装方針
ROS 1/2 同時対応の方法 環境変数 ROS_VERSION: 有効なROSバージョンとして,1または2の値を保持する. CMakeLists.txt と package.xml のそれぞれが,
この環境変数を参照することで,ビルドが分岐可能になる. CMakeLists.txt: package.xml: ソースコード ⬅ CMakeで要マクロ定義 13 / 20 3. ROS 2プラグインの実装方針
ノード管理 ROS 1: 1プロセス1ノード • 複数のロボットのトピックを全て出力する神ノードが誕生 😇 • 外部でROS Masterを起動する必要があり,
通信処理の負荷を分散できなかった. ROS 2: Executorレベルも柔軟にプログラム可能に 1ロボット1ノード1スレッドの綺麗な設計が可能に! 14 / 20 3. ROS 2プラグインの実装方針 Choreonoidは1プロセスで動作し,各部品はスレッドで動作するが……
ネットワーク分離(実装中) ROS 1: マルチROSマスター ROSマスターの設定が必要.ノード側の設定も必要. ROS 2: ドメインIDの切り替えでネットワーク分離が可能 1プロセス内のノードでも,Contextを別に持つことで 別々のネットワークに所属可能
並列シミュレーションの ROS対応の可能性が開けた!! ※ Choreonoidではシミュレータもプロジェクトアイテムなので、複数配置することで並列シミュレーションが可能 15 / 20 3. ROS 2プラグインの実装方針
目次 1. Choreonoidの紹介 2. ChoreonoidとROS 3. ROS 2 プラグインの実装方針 4.
ROS 2 へのフィードバック 16 / 20
rclcppのバグ rclcpp::spin_some / spin_all 関数は, ノードの context によらず, 強制的に default
context を使用する 仕様になっていた. そのため, custom context を使用しようとすると, エラーで異常終了するバグが存在した. 4. ROS 2へのフィードバック 17 / 20 custom context node2 default context node1 rclcpp:: spin_some() 😎
rclcppのバグ 17 / 20 custom context node2 default context node1
default context rclcpp:: spin_some() 😎 rclcpp::spin_some / spin_all 関数は, ノードの context によらず, 強制的に default context を使用する 仕様になっていた. そのため, custom context を使用しようとすると, エラーで異常終了するバグが存在した. 4. ROS 2へのフィードバック
ROS 2本体へのフィードバック 1. プルリクエスト作成 2. レビュー 3. CIテスト 4. マージ
5. リリース 6. バックポート 修正内容自体は大したことはないが,rclcppの修正というのは貴重な体験…… メンテナが回してくれる 不安定なテストあり 18 / 20 月1のリリースで使えるようになる 申し出るとHumbleなどへ遡って修正できる ※ABIが壊れないものに限る バックポートの呪文を唱える藤田さん CIを回してくれる藤田さん 4. ROS 2へのフィードバック
プルリクエストの作法 • バグの修正 • テストの追加 ◦ 修正前に失敗する ◦ 修正後に成功する •
ターゲットはrollingブランチ ◦ rollingに入れてからバックポートしないと 将来のリリースでバグが復活しちゃう,なんてことも …… 19 / 20 まずはrollingに入れてから Humbleなどにバックポートする 反応がないときは気軽に催促! ※メンテナは忙しいので時々忘れられます 4. ROS 2へのフィードバック
Try Choreonoid & ROS 2! まとめ:ChoreonoidのROS 2プラグインを作成した. • ROS 1/2
同時対応の方法 • ROS 2 でのノード管理の改善 • ROS 2 でのネットワーク管理の改善 • rclcpp への貢献手順 20 / 20 doc/ に200ページ超の 教材PDFあります! (スターください!) 🤝 choreonoid_ros2_ mobile_robot_tutorial
付録:ROS 1 から ROS 2 への移植の参考リンク集 • ROS 2 Documentation
(Humble), Migrating from ROS 1 to ROS 2 https://docs.ros.org/en/humble/How-To-Guides/Migrating-from-ROS1.html • ros2_control, Migration Guides https://control.ros.org/humble/doc/migration/migration.html ※ リンクは全て Humble 向け A1 / 99