19.2K Views
September 03, 24
スライド概要
20240903 日本ロボット学会学術講演会オープンフォーラム/ROS Japan UGにて
普段はしない話をしてます
https://rosjp.connpass.com/event/327345/
プログラマー
ROSからROS 2への 切り替えのときの作業と 考えたこと 千葉工業大学 上田隆一 @[email protected] Misskeyロゴ: https://misskey-hub.net/ja/brand-assets/ このスライド:
本日の内容 • ROS(以後ROS 1)からROS 2にコードやテキストを アップデートしているときに感じた ROS 2どうなっちゃうんだろう? という疑問について正直にお話し • ロボット工学者というよりは今日は完全にシェル芸人 • 途中教育の話じゃなくなります • 批評っぽい内容ですがROSは唯一神ではないので 一緒に考えていただけると幸い 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 2
私とROS • コントリビューターとして • 講義で100人以上/年に手ほどき • 大学2年生,社会人 • ほんの少しROS Wikiの翻訳 • 本コミュニティーで発表経験 • 受益者として • パッケージをいろいろ使用 若気の至り • コントリビューター+受益者として • 書籍執筆,パッケージ公開,YouTubeで動画公開 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 3
切り替え作業 • 講義用のコードと資料 • 「ROSを活用したロボット制御技術」 • 社会人向け集中講義12時間(高度ポリテクセンターにて) • 「ロボットシステム学」 • 2年生向け26時間(Linux→ROS) • パッケージ • emcl2 → emcl2_ros2(研究室の学生さんに移管) • value_iteration → value_iteration2 完了!・・・したけど 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 4
「背景」の説明の切り替えが微妙 • 講義では単に操作方法(how)を教えるわけではない • wh〇〇のほうがむしろ大事 • what/why: なんなのか/なぜ存在するのか • when/where: いつ/どこで使う(使わない)べきか • who: 誰がコントリビューターか • 移植中に感じた違和感 • ROS 1と2では背景が変わる →講義資料のニュアンスも変えないといけない これが抜けると 経済的に報われない人を 量産することに 現在進行形で悩んでます 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 5
ROS 1を教えているときに言っていたこと • ROSは疎結合 • 多くの研究者が速さを求めて密結合な コードを書いている逆を行ってシェアをとった • オープンソースで自由 • 既存インフラの利用 既存のコマンドで 解析しやすい • 実行単位: プロセス • 通信: TCP/IP • ちょっと打ち込みが長いけど コマンドラインでいろいろ操作可能 2024年9月3日 ROS 2でもそれ言えんの? 日本ロボット学会学術講演会オープンフォーラム 6
疎結合と密結合 • モジュールの独立性を表す言葉 機能 • 例: 新たな機能をどこに追加する? 機能 機能 中パターン(密) 追加 したい プラグイン 上パターン(外から見ると密) ソフト ウェア 下位レイヤー (OS,PC,ハード) 機能 横パターン(疎) • 計算量以外の問題での密結合の選択: しばしば動機が不純 • 面倒/技術力不足/初心者のとりこみ/利益の独占/ 「美しさ」の追求 • 下手にやると肥大化の未来(次ページ) まさにROSが雰囲気を 作ってきたこと! • 「横」が疎結合で手離れがよい 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 7
肥大化地獄 -お金を出す人の意見をほいほい聞いていたら • 左図のようになったソフトは数知れず マニュアルもこんな感じに 混乱(初心者向け書籍で儲かる) 機能 機能 機能 2024年9月3日 機能 機能 機能 機能 機能 機能 機能 機能 本当に必要な 機能(本当に 理解すべきこ と) 機能 機能 機能 直感的な操作を実現する 最新テクノロジーGUI 賢い補完機能(クソゴミの山) 下位レイヤー (OS,PC,ハード) • 非難はできない • 便利なものは肥大化していても便利 • 非難はできないが • ユーザー側は経済的合理性から 不便なものを使い続けることにも • 「みんなが使っているから」 • いつか崩壊 重要: ROSはこれを防いできた 日本ロボット学会学術講演会オープンフォーラム 8
ソフトウェアの変な性質 文句のようなスライドだけど 資本主義だから問題はない (政府の介入はある) • シェアを落とさず肥大化したソフトはお金儲けしやすい • 独自の操作方法にユーザーを馴致(別のものを使う技能を予防) • キラー機能を内包してユーザーを魅惑 • お人よしなら機能を切り離して提供するけど企業はそんなことしない • 初心者向け書籍,セミナー • 企業や腕自慢のニーズに合わせたスキル認定制度 • 独自のファイルフォーマット,クラウドサービスで互換性を許さない • 使いにくさ・フリーズを逆手にとったサポートサービス • なんでソフトウェアだけそうなっちゃうんだろう? • たぶん空間的な制約がないから • 機械だったら「こんな巨大なウンコ置けないよ」 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム オープンソース なら大丈夫? 9
オープンソースもそうなる • 利用者/コントリビューター/守備範囲を守らなくなる 誰かがお金や権力,理想論で肥大化させる(判断には審美眼が必要) コントリビューターが搾取の対象に 新規参入の障壁 • 複雑なアーキテクチャ,過度な内輪ノリ・用語,偉そうな人 歴史の長さ= パーティーにだけ • 委員会/理事会/合議制 来る変なおじさんの数 • 最初は理想に燃えているけど人には欲がある • • • • 揉めて変な人が権力を掌握しがち(例は恐ろしいので各自調査を) • 腐敗 • オープンソースに限らず,非営利団体で 理事会が内輪で豪華な食事の伴うパーティーをやりだしたら赤信号 (自分も頼まれて参加したらこうなった経験アリ.恥ずかしい.) 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 10
どうすりゃいいのか(政治的な話) 注意: 客観的な話ではなく個人の意見 • 委員会/理事会より優しい独裁者 • 顔の見えるメンテナが引き継いでいくのがおそらく理想 • コードが汚くなると本人が一番困るので規律が守られやすい • コントリビュータが離脱しても/フォークしても • 利用の権利は守られる • 集団からにらまれるわけではない(集団心理は怖い) • 個人的にはそういうオープンソースを使うほうが気楽 • ほんとに必要なら自分でメンテナンスしますしおすし 技術を磨くことで自由に 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 11
どうすりゃいいのか(技術的な話) 注意: 客観的な話ではなく個人の意見 • 横!とにかく横! • 常に機能を互いに切り離す方法を模索 • 使わない人がその機能を意識しなくてよいように • 使う人が余計なソフトにお金,リソースを割かないように 実装能力が 飛躍的に向上 もし逆を考えている なら邪悪ですよね? • 肥大化していない設計の勉強 • コマンド(手前みそだがシェル芸) • 足し算ではなく掛け算で機能が増えるのが特徴 • 統合環境は問題意識を持って使う/別のものも使えるように • 肥大化/ロックインの見本市 • 自分ならどう解決するか考える(人類のテーマ) 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム かってね 12
どうすりゃいいのか(経済的な話) • 作者として 注意: 客観的な話ではなく個人の意見 • 大きく儲ける意図があるならなるべく早めに周囲に伝達 • そうでないならサステナブルに • 細く長くマネタイズ(私ですら関連した副収入が結構入る) • 守備範囲を広げすぎてメンテナンスの苦労や手柄を独占しない • ユーザーとして: 感謝して使う一方,いつでも逃げる準備を • 普段から代わりのものをたまに使うように • 信者,養分にならない • コントリビューターとして • 純粋なボランティアじゃなくて何が代わりに得られるかよく考える • 親切が鬼を育ててないかよく考える 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 13
疑問: ROS 2が肥大化してないか? • おことわり: 現時点ではたいへん 有難く使わせていただいている • パッケージも作成中でぶつくさつぶやき(右図) • でも今後も有難いかどうかは誰にも分からない • 「変な方向への速度・加速度」が 出ているとそのうち肥大化 • 作業して特に感じた「変な方向」(主観です) • ノードの扱い方 • 必須ではない機能機能(状態の管理とか) 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 14
ノードの扱い方 プロセス ノード • 違い ノード ROSインフラ 下位レイヤー • ROS 1: ノードはプロセス単位 • もっと密にしたい場合にノードレット • ROS 2: 選択可能 • ノードをプロセス単位にもできる • プロセス内に複数のノードを置ける 切替 驚異の テクノロジー の の ROSインフラ 下位レイヤー • ROS 2のほうが便利?ほんとに? • 階層構造があやふやに • ROS 1のほうが構造化されている • 実装が肥大化してない? • アーキテクチャに興味ない人: 1プロセス大好き 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 歴史逆戻り 15 の
どういう肥大化が予想されるか • ROS 2専用解析ツール・テスト方法の登場 • これまでLinuxのコマンドで済んでいたのに • 単体テストは「単体」があやふやだと肥大化 • 独立して動かしにくいノードの登場 • 目先の便利が後々の混乱になりかねない • 無駄に大量データを送受信 下手な設計を許容 • 通信まわりの実装 • 共有メモリの扱いは大変(OSをプログラムするレベルの難易度) • TCP/IPやパイプと違ってデータ量と通信時間が比例しないかも 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 16
状態遷移を制御する仕組みが入ってる? 確かに便利かもしれない,が, • 別パッケージで対応したほうがいいような • tfみたいな位置づけのパッケージ(もしかしてそうなってる?) • 普及するかどうかはユーザーに任せてほしい(たぶん多くの人には不要) • あんまり分かってないけど肥大化・独占化の芽に見える • 個人的な愚痴 • 私は自分で管理できるんですが・・・ • センサはスイッチ入れたらデータをダダ流してほしい(=トピックの考え方) • あるから使わなきゃいけないの?(排除されている感じ) • 講義で触れる必要があるのか 自分が不勉強だと言われても「うーん」となる 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 17
他,移植していて気になった点 私が把握してない改善もあると思いますが, • どうもKISSの原則から外れがち • サービスの非同期化なにこれ? • コマンドが長くなった • 3B+以前のラズパイだと重たい・・・ KEEP IT SIMPLE STUPID • ルールがより厳密だけど,その割には救いが少ない • 講義中の学生のイライラ・ヘイトが私に向かう! • 機能がまだ欠けてる? • 誰も自分がやると言い出さないような雰囲気になってない? • 通信周りがこなれてない 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 18
コマンド長くなったぞの例 • 高度ポリテクセンターの講義資料から • ROS1 • ROS2 標準入力使ったほうがいい (使えるかも) • 教える身にもなって! 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム コマンドの考え方に なじんでない 19
我々はどうしましょう? • ROSの良いところは結局何なのか考える • 個人的にはソフトではなくてプロトコルのほうが重要 • 対抗するプロジェクトを作ってもしょうがない • 損をする/疲れることをしてはいけない • ズルく賢く仲良く • ひとつの提案: 普通のオープンソース活動をしましょう • なるべく守備範囲の明確な小さな互換ツール群を作成 • なにかオーガナイズドセッションを立ち上げても面白そう • 本来はプロトコル+ツール群で十分なことを思い出す 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 20
おわりに • ROS 2が肥大化していないかという疑念を白状 • 疎結合がよいという仮定でいまのROS 2について意見 • もちろん理解していないことも多いです • ROS 2にも関わりながら互換ツールを作ると面白そう • オープンソースに関する誤解も裏のテーマ • 楽園ではない • 理念の裏に利害の綱引きが必ず存在 • 政治,経済的な力学にも詳しくないと餌食に • 得するべきでない人が得をしていると非生産的に • 無邪気な参画者になって綱を押さないように 先生がたは これも含めて ご指導を • せっかくならお金持ち,優しいリーダーを目指してほしい 2024年9月3日 日本ロボット学会学術講演会オープンフォーラム 21