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 -a
ros2 bag record -o <ファイル名>.db3 <トピック名>
- rosbag の停止
録画を停止するには、以下のコマンドを実行
Ctrl + C
- rosbag の再生
ros2 bag play <ファイル名>.db3
- Foxglove にアクセスしログイン
Visualize Data
を選択
ローカルファイルを開く
を選択し、録画した bag file を開く
Add Panel
から地図を選択(既存のパネルがすでにある場合は削除してから追加)
- 録画した bag file が可視化される