ROS Japan UG #54 関西ROSJP macOS上でROS 2 Humbleを動かす

2.8K Views

February 13, 24

スライド概要

profile-image

OpenCVではじめよう ディープラーニングによる画像認識、OpenCVプログラミングブックの中の人(の一人).Computer Vision/OpenCV/GPGPU/ROS/AR/インタラクティブアート/ニコニコ技術部

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

ROS Japan UG #54 関西ROSJP macOS上でROS 2 Humbleを動かす @dandelion1124

2.

自己紹介 ● 吉村康弘(@dandelion1124) ○ 専門はロボティクス、コンピュータビジョン、ソフトウェア高速化 ○ OpenCVコントリビューター ■ ○ OpenCV書籍執筆 https://gihyo.jp/book/2022/978-4-297-12775-6 2023年10月よりサイバーエージェント AI Labで人物行動理解に関する研究に従事 dandelion1124 atinfinity

3.

モチベーション ● Apple Silicon搭載macOSマシンはバッテリーの持ちがよく、軽量なので屋内・屋外ロボット開発 でも使いたい。 ● また、音声認識、 LLM inferenceフレームワークは Metal対応も活発であることが多いため、ロボッ ト開発で活用しやすい。 ○ ○ ○ ○ ○ Whisper.cpp:https://github.com/ggerganov/whisper.cpp MLX:https://github.com/ml-explore/mlx llama.cpp:https://github.com/ggerganov/llama.cpp Ollama:https://ollama.ai/ PowerInfer:https://github.com/SJTU-IPADS/PowerInfer ■ TODOsに「Support Metal for Mac」が入っている 上記の点から、macOSでもROS 2を使いたい!

4.

ROS 2 on macOSの現状 ● macOSでROS 2インストールは基本的にソースビルドのみ ○ https://docs.ros.org/en/humble/Installation.html

5.

ROS 2 on macOSの現状 ● ROS 2 HumbleのmacOSサポートは、amd64アーキテクチャだと Tier 3(コミュニティレベルのサ ポート)、arm64アーキテクチャに至っては空欄となっている [1]。 ● つまり、何かトラブルが起きても自力 or コミュニティで頑張るしかない [1] https://www.ros.org/reps/rep-2000.html#humble-hawksbill-may-2022-may-2027

6.

ROS 2 on macOSの現状 ● macOS向けの公式セットアップドキュメントはあるがメンテナンスされていない ○ ● https://docs.ros.org/en/humble/Installation/Alternatives/macOS-Development-Setup.html RoboStack[2]を使おうとするもトラブル発生 ○ ○ セットアップし、RViz2が起動できることは確認できたが、Fast DDSを使った通信時にクラッシュ[3] 別のDDSを使用し、問題なく動いている事例[4]もある [2] https://robostack.github.io/index.html [3] https://github.com/RoboStack/ros-humble/issues/32 [4] https://qiita.com/Nyanziba/items/d84211e8e9d9654c6253

7.

広がるROS 2 on macOS ● そんな状況下でも macOS上でROS 2を使う猛者が増えてきている(ツイートは時系列順) ● #macOSで始めるROS2 ハッシュタグで盛り上げていきたい https://twitter.com/zibaanyan/status/175110 1007575372100 https://twitter.com/tg3517/status/17240570 26135740735 https://twitter.com/dandelion1124/status/17 37471075871514661 https://twitter.com/Ray255Ar/status/173769 8560773353670

8.

今回やったこと ROS 2の最低限の機能を動かせるようにした ros2_m1_native[5]が公開されているので こちらをベースラインとして以下の対応を実施。 ● RViz2対応 ○ ● rqt tools対応 ○ ● https://github.com/TakanoTaiga/ros2_m1_native/pull/6 Cyclone DDS対応(レビュー中) ○ ● https://github.com/TakanoTaiga/ros2_m1_native/pull/5 https://github.com/TakanoTaiga/ros2_m1_native/pull/7 nav2_rviz_plugins対応 [5] https://github.com/TakanoTaiga/ros2_m1_native

9.

ハマりポイント ● Xcodeインストールが必要 ○ ○ パッケージによってはmacOS固有のフレームワークに依存 ■ 例:OGRE (Object-Oriented Graphics Rendering Engine) そのため、少なくともRViz2を使う場合はXcodeインストールが必要 https://github.com/OGRECave/ogre/blob/v1.12.10/OgreMain/include/OgrePlatform.h

10.

ハマりポイント ● arm64アーキテクチャの Homebrewをインストールする ○ ○ ネイティブで動かすためにarm64アーキテクチャ向けのパッケージをインストールしたい ただし、意図せずx86_64アーキテクチャのHomebrewをインストールしてしまうと、arm64アーキテクチャの パッケージを参照できない[6] "ModuleNotFoundError: No module named 'catkin_pkg'" ○ ターミナルで下記コマンドを実行し、arm64アーキテクチャのHomebrewをインストールすること uname -m # arm64と表示されることを確認しておく /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" [6] https://ar-ray.hatenablog.com/entry/2023/12/24/115051

11.

ハマりポイント ● Homebrewでインストールされるパッケージバージョンに注意 ○ ○ ○ 今回想定しているパッケージバージョンはPython 3.11、Qt 5.x、empy 3.3.4 例えば、HomebrewでOpenCVをインストールすると依存解決のためにPython 3.12、Qt 6がインストールさ れ、意図するバージョンと異なってしまう (あまりスマートな方法ではないが)今回使いたい機能からこれらは参照されないのでアンインストールする # Python 3.12とQt 6をアンインストール brew uninstall --ignore-dependencies python@3.12 qt6 ○ empy3、empy4間では破壊的変更が入っているため、明示的にバージョンを指定してempyをインストール する[6] # empy 3.3.4をインストール python3.11 -m pip install -U empy==3.3.4

12.

ハマりポイント ● colconのデスクトップ通知無効化 ○ colconにはビルドステータスをデスクトップ通知してくれる機能がある ○ ただし、この機能はmacOS上では機能しないので無効化[7]が必要 # colconのデスクトップ通知無効化 export COLCON_EXTENSION_BLOCKLIST=colcon_core.event_handler.desktop_notification [7] https://github.com/colcon/colcon-notification/issues/31#issuecomment-554213559

13.

ハマりポイント ● setuptoolsバージョンに注意 ○ ○ setuptoolsのバージョンが古すぎるとROS 2パッケージによってはビルドできないことがある 今回はsetuptools 69.0.3を用いた

14.

現状できること ● トピック配信、購読 ● DDS対応 よく使われているであろう下記の2種類で動作確認 ○ ○ ● eProsima Fast DDS(https://www.eprosima.com/index.php/products-all/eprosima-fast-dds) Eclipse Cyclone DDS(https://projects.eclipse.org/projects/iot.cyclonedds) rosbag2記録、再生 ○ 以下のフォーマットで動作確認を実施 ■ SQLite3 ■ MCAP

15.

現状できること ● Simple Discovery ○ ● 下図における左のディスカバリー方式 Discovery Server[8] ○ 下図における右のディスカバリー方式 ○ 冗長性を持たせるためServerを複数設定することも可能 [8] https://docs.ros.org/en/humble/Tutorials/Advanced/Discovery-Server/Discovery-Server.html

16.

現状できること ● RViz2 ○ 下図はhttps://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/ROSBAG-Demo にある sample_moriyama_150324.bag2を再生した例(画面右下を見ると 30fpsで描画できていることがわかる)

17.

現状できること ● rqt_tools:rqt_topic ○ トピックの型、バンド幅、配信周期などをモニタリングするツール

18.

現状できること ● rqt_tools:rqt_plot ○ トピックの値をプロットするツール

19.

現状できること ● rqt_tools:rqt_graph ○ ノードとトピック配信、購読の関連を可視化するツール

20.

現状できること ● rqt_tools:rqt_bag ○ rosbag2に格納されているコンテンツの可視化、プロットを行うツール

21.

現状できること ● rqt_tools:rqt_console ○ ○ ノードからの出力メッセージを可視化するツール Severityでフィルタリングできる

22.

現状できること ● nav2_rviz_plugins ○ 以下の手順でnav2_rviz_pluginsパッケージをビルド mkdir -p nav2_ws/src cd nav2_ws/src git clone https://github.com/ros-planning/navigation2.git -b 1.1.13 git clone https://github.com/ros/bond_core.git -b ros2 git clone https://github.com/ros/diagnostics.git -b ros2 cd .. export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$(brew --prefix qt@5) export PATH=$PATH:$(brew --prefix qt@5)/bin export COLCON_EXTENSION_BLOCKLIST=colcon_core.event_handler.desktop_notification colcon build --symlink-install --packages-up-to nav2_rviz_plugins --cmake-args \ -DBUILD_TESTING=OFF \ -DCMAKE_BUILD_TYPE=Release \ -Wno-dev source install/setup.bash

23.

現状できること ● nav2_rviz_plugins ○ ○ 下図はNavigation2パネルからWayPoint Followingを実行した例。 現状、シミュレータ、ナビゲーション処理は同一ネットワーク上の別マシンで動作。

24.

まとめ ● Apple Silicon搭載macOSマシンでもROS 2の基本的な機能は動きます! ● ただし、ソースビルドが基本なので少し面倒に感じることも ○ ○ ● ポジティブに捉えると、現状、ROS 2コアパッケージで残っている未修正のwarningなどが発見しやす い。 ■ 普段、ROS 2をUbuntuで使っていてaptでインストールしていると気付きにくい つまり、ROS 2コアパッケージのコントリビューションのチャンス! よりよくしていくためにROS 2 on macOSをコミュニティで盛り上げていきましょう!

25.

参考ページ ● https://docs.ros.org/en/humble/Installation/Alternatives/macOS-Development-Setup.html ● https://github.com/TakanoTaiga/ros2_m1_native ● https://ar-ray.hatenablog.com/entry/2023/12/24/115051 ● https://zenn.dev/kagaribi_tech/scraps/c4610ec4095d4e

26.

Activity Understanding(行動理解)チーム 研究テーマ:実世界AIサービスのための人物行動理解とロボティクス 株式会社サイバーエージェント AI Labの行動理解チームでは、実世界においてAIサービスを実現するための基盤研究に取り組んでいます。 リテールテック(小売)やガブテック(行政)といった事業でAIを活用するためには、複雑に変化する実環境において人々の多様な行動を 計測・理解し、AIによって生成された情報を適切に伝達する技術が必要です。また、人々の日常生活と密接に関わる技術やサービスは、 人々の生活やプライバシーを尊重し、社会的に受け入れられる形であることが不可欠です。 本チームは機械学習やコンピュータビジョン、ロボティクス、ユビキタスコンピューティングなど複数分野に基づく多角的なアプローチに よって、このような技術の創出と実世界AIサービスへの還元を目指します。

27.

主な研究テーマ マルチモーダルセンシングによる人物行動の計測と理解 スマートフォンIMUやBLEビーコンといった各種デバイス・センサーを活用し、 カメラの導入が難しい場面で人物の行動を計測、理解する技術を研究しています。 センシング技術とLLMを活用した自律移動広告ロボット LLMを活用した自律移動ロボットによる情報提示・インタラクション技術、 販促活動に適した環境理解・ナビゲーション技術を研究しています。

28.

現在チーム立ち上げ中です! リサーチサイエンティスト 求人ページ: ● 人物行動理解に関するコンピュータビジョン・機械学習・ユビキタスコンピューティング研究を推進してくださる方 ● 自律移動ロボットのためのセンシング、パーセプション、プランニング技術の研究を推進してくださる方 リサーチエンジニア ● 求人ページ: ▼求人ページ リテール分野への応用に興味を持ちつつ、自律移動ロボットにおけるセンシング、パーセプション、 プランニングの技術開発を ● ▼求人ページ 推進してくださる方 実機(ロボット、センサなど)を用いて、実世界でロボットを動かしていく社会実装を推進してくださる方 ▼面談フォーム まずはカジュアルな情報交換をご希望の方は、こちらのフォームからお問い合わせください。 *東京/京都拠点でインターン(フルタイム2ヶ月)、またはアルバイトも随時募集中です。