ARCore Geospatial APIから取得した位置情報を ROS 2のsensor_msgs/NavSatFix型でPublishし、指定のIPアドレスに送信
-
スマートフォン(ARCore 対応デバイスはこちら)
- Google Pixel 6
- Android 13
- Google Pixel 6
-
ノートPC
- Ubuntu 22.04
- Unity Hub 3.4.2
- Unity 2021.3.26.f1
- Ubuntu 22.04
-
GCP にログイン
-
サイドバーで
API とサービス->ライブラリの順に選択 -
API キーが作成されるのでコピー
-
こちらのリポジトリをダウンロードし Unity で開く
-
API Key の設定
Unity->編集->プロジェクト設定->XR Plug-in Management->ARCore Extensions->Android API Keyに先ほどの API キーを入力

-
ROS の設定
Unity->Rbotics->ROS Settingsで ROS のバージョンを ROS 2 に変更し、IP アドレスを入力(IP アドレスは後で変更可)
-
API Level の設定
Unity->編集->プロジェクト設定->Project->プレイヤー->その他の設定->識別の API レベルを 2 ヵ所設定
※API Level については Android Developer を参照してください。
-
プラットフォームの変更とビルド設定
Unity->File->Build Settings-> (プラットフォームを Android に変更)->シーンを追加-> Geospatial2ros.unity を追加 ->Build

-
apk ファイルが作成させるので、Android 端末に転送しインストール
- ROS-TCP-Endpoint パッケージのインストール
mkdir -p ~/ros-tcp-endpoint_ws/src cd ros-tcp-endpoint_ws/src git clone -b main-ros2 https://github.com/Unity-Technologies/ROS-TCP-Endpoint cd .. colcon build source ~/ros-tcp-endpoint_ws/install/setup.bash - 実行
※ROS_IPはスマートフォンのIPアドレスを設定してください。
ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=0.0.0.0
※ノートPCとスマートフォンは同一のネットワークで接続されている必要があります。
- rosbag の録画
すべてのトピックを記録する場合(-a オプション)指定するトピックのみを記録する場合(-o オプション)ros2 bag record -aros2 bag record -o <ファイル名>.db3 <トピック名> - rosbag の停止
録画を停止するには、以下のコマンドを実行
Ctrl + C - rosbag の再生
ros2 bag play <ファイル名>.db3
- Foxglove にアクセスしログイン

Visualize Dataを選択

ローカルファイルを開くを選択し、録画した bag file を開く

Add Panelから地図を選択(既存のパネルがすでにある場合は削除してから追加)

- 録画した bag file が可視化される


