センサモデルの追加方法

Unity Sensorsパッケージのインストール方法

OperaSim-PhysXでは、Field-Robotics-Japanがオープンソースとして公開しているUnitySensorsパッケージを使用しています。

1.UnitySensors パッケージのインストール

IMUセンサを作成する前準備としてUnitySensors パッケージを追加インストールする

図 1-2  [拡大]

操作

_images/unity-02.png

unity メニューバーから「Window」「Package Manager」を選択する

2. Package Manager ウィンドウのメニューバーから「+」「Add package from git URL」を選択する

図 1-3  [拡大]

操作

_images/unity-03.png

Package Manager ウィンドウの例

_images/unity-04.png

メニューバーから「+」「Add package from git URL」を選択する

3.Package Manager ウィンドウのURL入力テキストボックスに下記のURLを入力し「Add」ボタンを押下する

図 1-4  [拡大]

操作

_images/unity-06.png

Package Manager ウィンドウのURL入力テキストボックスに

下記のURLを入力し「Add」ボタンを押下する

入力するURL【※1】

https://github.com/Field-Robotics-Japan/UnitySensors.git?path=/Assets/UnitySensors#v2.0.4"

【※1注意】

UnitySensorsについては、
都度バージョンアップされる場合があります
下記のURL にて最新バージョンが公開されますが
適合するかどうかについては都度確認が必要です

Assets/UnitySensors

https://github.com/Field-Robotics-Japan/UnitySensors

4.UnitySensors パッケージがインストールされることを確認する

図 1-5  [拡大]

操作

_images/unity-07.png

UnitySensors パッケージがインストールされる

5.UnitySensors パッケージが図の内容のようにインストールされたことを確認する

図 1-6  [拡大]

操作

_images/unity-08.png

UnitySensors パッケージがインストールされたことを確認する

6.UnitySensorsROS パッケージのインストール

Package Manager ウィンドウのメニューバーから再度、「+」「Add package from git URL」を選択する

図 1-7 [拡大]

操作

_images/unity-04.png

メニューバーから再度、「+」「Add package from git URL」を選択する

7.Package Manager ウィンドウのURL入力テキストボックスに下記のURLを入力し「Add」ボタンを押下する

図 1-8  [拡大]

操作

_images/unity-09.png

Package Manager ウィンドウのURL入力テキストボックスに

下記のURLを入力し「Add」ボタンを押下する

入力するURL【※2】

https://github.com/Field-Robotics-Japan/UnitySensors.git?path=/Assets/UnitySensorsROS#v2.0.4

【※1注意】

UnitySensorsについては、
都度バージョンアップされる場合があります
下記のURL にて最新バージョンが公開されますが
適合するかどうかについては都度確認が必要です

Assets/UnitySensors

https://github.com/Field-Robotics-Japan/UnitySensors

8.UnitySensorsROS パッケージがインストールされる

図 1-9  [拡大]

操作

_images/unity-10.png

UnitySensorsROS パッケージをインストール中の画面

9.UnitySensorsROS パッケージが図1-10の通りであることを確認する

図 1-10  [拡大]

操作

_images/unity-11.png

UnitySensorsROS パッケージがインストールされたことを確認する

IMUセンサモデルの追加方法

1.実機のIMUの取り付け位置確認

シミュレーション内の建機モデルに対応する実機のIMUの取り付け位置を現物確認する

(図1-1:油圧ショベルzx120のアームリンク計測用IMU)

図 1-1  [拡大]

内容

_images/IMG_2394.jpg

実機に取り付け位置を合わせるため、現物を確認する

IMUは、zx120の場合、キャビン、ブームリンク、アームリンク、バケットリンクに取りついている

2.Unity Editorで空オブジェクトを作成

Unity Editor を起動し、IMUの空オブジェクトを作成する(例:boom_imu の場合)

図 2-1  [拡大]

操作

_images/unity-01.png

Unity Editorを起動する

_images/unity-01-2.png

unity 「Hierarchy」タブから「zx120」「base_link」「body_link」「boom_link」

を選択し右クリックで表示されるリストより「Create Empty」を選択する

boom_imu の場合、ショベルの実機写真(図 1-1 )の通り
ショベルモデルのboom_link に対する空オブジェクトの原点
および姿勢を調整して合わせる

3.「Inspector」タブで GameObjectに名称を設定する(例:boom_imu)

図 2-2  [拡大]

操作

_images/unity-02-1.png

GameObjectに名称を設定する(例:boom_imu)

4.unity 「Hierarchy」タブから「boom_imu」を選択し「Inspector」タブを参照する

図 2-3  [拡大]

操作

_images/unity-15.png

unity 「Hierarchy」タブから「boom_imu」を選択し

「Inspector」タブを参照する

5.「Inspector」タブから「Add Component」ボタンを押下し「IMU Sensor」を選択する

図 2-4  [拡大]

操作

_images/unity-16.png

「Inspector」タブから「Add Component」ボタンを押下し

「IMU Sensor」を選択する

6.「IMU Sensor」のコンポーネントが「Inspector」タブに追加されていることを確認する

図 2-5  [拡大]

操作

_images/unity-17.png

「IMU Sensor」のコンポーネントが「Inspector」タブに

追加されていることを確認する

7.再度「Inspector」タブから「Add Component」ボタンを押下し「IMU Msg Publisher 」を選択する

図 2-6  [拡大]

操作

_images/unity-18.png

再度「Inspector」タブから「Add Component」ボタンを押下し

「IMU Msg Publisher 」を選択する

8.「IMU Msg Publisher」のコンポーネントが図のように「Inspector」タブに追加されていることを確認する

図 2-7  [拡大]

操作

_images/unity-19.png

「IMU Msg Publisher」のコンポーネントが「Inspector」タブに

追加されていることを確認する

9.「Inspector」上で、ROS topic名およびframe_idを実機に合わせ設定する

図 2-8  [拡大]

操作

_images/imu_topic_frame_id_setting.png

「Topic Name」「Frame_id」をそれぞれ設定する

10.Unity のPlay ボタンをクリックする

図 2-9

操作

_images/unity-21.png

Unity EditorのPlay 「▶」ボタンをクリックし

シミュレーションを実行する

11.シミュレータからPublishされるIMUのROS topicを表示し、所望の出力が得られることを確認する

図 2-10  [拡大]

操作

_images/imu_topic_echo.png

ROS側でrostopic echo 等を実行し、所望のROS topicとしてIMU出力が得られることを確認する

同様の方法で、swing、arm、bucket について
IMUセンサモデルを追加し設定する

GNSSセンサモデルの追加方法

1.ショベル実機のGNSSセンサの取り付け位置確認

シミュレーション内の建機モデルに対応する実機のGNSSの取り付け位置を現物確認する
(図1-1:油圧ショベルzx120のRTK GNSSコンパスHemisphere V500)

図 3-1  [拡大]

内容

_images/GNSS-01.jpg

実機に取り付け位置を合わせるため、現物を確認する

GNSSコンパスは、zx120のbodyリンク上に固定されている

2.Unity Editorで空オブジェクトの作成

   Unity Editor を起動し、GNSSの空オブジェクトを作成する

図 3-2  [拡大]

操作

_images/unity-01.png

Unity Editor を起動する

_images/gnss-02.png

Unity Editor 「Hierarchy」タブから「zx120」「base_link」「body_link」

を選択し右クリックで表示されるリストから「Create Empty」を選択する

3.「Inspector」タブで GameObjectに名称を設定する(例:gnss)

図 3-3  [拡大]

操作

_images/gnss-04.png

GameObjectに名称を設定する(例:gnss)

3.Unity Editor 「Hierarchy」タブから「gnss」を選択し「Inspector」タブを参照する

図 3-4  [拡大]

操作

_images/gnss-05.png

Unity Editor 「Hierarchy」タブから「gnss」を選択し

「Inspector」タブを参照する

4.「Inspector」タブから「Add Component」ボタンを押下し「gnss」を選択する

図 3-5  [拡大]

操作

_images/gnss-06.png

「Inspector」タブから「Add Component」ボタンを押下し

「GNSS Sensor」を選択する

5.「GNSS Sensor」のコンポーネントが図のように「Inspector」タブに追加されていることを確認する

図 3-6  [拡大]

操作

_images/gnss-07.png

「GNSS Sensor」のコンポーネントが「Inspector」タブに

追加されていることを確認する

6.再度「Inspector」タブから「Add Component」ボタンを押下し「Nav Sat Fix Msg Publisher」を選択する

図 3-7  [拡大]

操作

_images/gnss-09-2.png

再度「Inspector」タブから「Add Component」ボタンを押下し

「Nav Sat Fix Msg Publisher」を選択する

7.「Nav Sat Fix Msg Publisher」のコンポーネントが図のように「Inspector」タブに追加されていることを確認する

図 3-8  [拡大]

操作

_images/gnss-09-1.png

「Nav Sat Fix Msg Publisher」のコンポーネントが

「Inspector」タブに追加されていることを確認する

8. 再度「Inspector」タブから「Add Component」ボタンを押下し「Quaternion Stamped Publisher」を選択し、各パラメータを設定する

図 3-9  [拡大]

操作

_images/compass_setting.png

実機のCompassの出力に合わせ

Frame IDをmap

Topic Nameをzx120/gnss_compass/heading

Publish Message Intervalを0.09[s]

にそれぞれ設定した様子

TerrainへGNSS座標の基準点を設定する

1.Unity Editor の「Hierarchy」タブから「Terrain」を選択し「Inspector」タブを開く

図 4-1  [拡大]

操作

_images/terrain-01-1.png

「Terrain」コンポーネント

2.Unity EditorでTerrainコンポーネント上に空オブジェクトを作成する

Unity Editor を起動し、「Terrain」を右クリックで表示されるリストより「Create Empty」を選択する

図 4-2  [拡大]

操作

_images/terrain-02-1.png

Unity Editor 「Hierarchy」タブから「Terrain」を選択し

「Create Empty」にて空オブジェクトを追加する

3.「Inspector」タブで GameObjectに名称を設定する(例:GeoCoordinateSystem)

図 4-3  [拡大]

操作

_images/terrain-03-1.png

GameObjectに名称を設定する(例:GeoCoordinateSystem)

4.「Inspector」タブから「Add Component」ボタンを押下し「Geo Coordinate System」を選択する

図 4-5  [拡大]

操作

_images/terrain-04-1.png

「Inspector」タブから「Add Component」ボタンを押下し

「Geo Coordinate System」を選択する

5.「Geo Coordinate System」の座標系の原点位置・姿勢および原点の緯度・経度・高度を設定する

図 4-6  [拡大]

操作

_images/gnss_coordinate_setting.png

当該座標系原点の位置

(Latitute:緯度[度]、Longitude:経度[度]、Altitude:高度[m])

を入力する

この場所を基準として、GNSSモデルの位置情報が

NavSatFix型のROS topicとしてpublishされる

6.UnityのPlay ボタンをクリックする

図 4-7

操作

_images/unity-21.png

Unity EditorのPlay 「▶」ボタンをクリックし

シミュレーションを実行する

7.ショベルモデルを移動させGNSSの位置(緯度、経度、高度)およびコンパスの方位が適切に変化することを確認する

図 4-8  [拡大]

操作

_images/gnss-11-3-1.png

シミュレータを再生する(動作前)

_images/gnss-11-2-1.png

ショベルモデルを動作させる(動作後)

_images/gnss-11-1-1.png

対応するROS Topic(例:/zx120/gnss_compass/fix, /heading)

が重機の動作に合わせて正しく変化していることを確認する

LiDARセンサモデルの追加方法

(注意)2025.2時点ではOPERAの建機に常設のLiDARセンサはありません

1.Unity Editorで空オブジェクトの作成

   Unity Editor を起動し、LiDAR用の空オブジェクトを作成する

図 5-1  [拡大]

操作

_images/add_empty_for_lidar.png

Unity Editor 「Hierarchy」タブから「zx120」「base_link」「body_link」

を選択し右クリックで表示されるリストから「Create Empty」を選択する

_images/rename_lidar.png

Unity Editor 「Inspector」上で作成したGameObjectの名前を任意に変更する

例)GameObject → lidar1

2.LiDARセンサモデルの取付け位置を変更する

図 5-2  [拡大]

操作

_images/set_position_lidar.png

Editor上のMove tool, Rotate tool, 「Inspector」上のTransformへ

値をキーボード入力する、などを用いてbody_link上への

LiDARモデルの固定位置を決定する

3.lidar1オブジェクトにLiDARのセンサprefabをアタッチする(例:Velodyne VLP-16)

図 5-3  [拡大]

操作

_images/attatch_lidar_prefab.png

ProjectウィンドウのPackages/UnitySensors/Runtime/Prefabs/LiDAR/Velodyne

フォルダから配置したいLiDARのprefabファイルを選択し「Hierarchy」上の

オブジェクト「lidar1」へドラッグ&ドロップする (例:VLP-16)

4.LiDARセンサモデルの各種コンフィギュレーション

図 5-4  [拡大]

操作

_images/lidar_config.png

「Hierarchy」上からアタッチしたVLP-16 prefab下の「Sensor」オブジェクトを

左クリックで選択し「Inspector」より「Raycast LiDAR Sensor」スクリプトの

設定値を必要に応じて任意に変更する

(各パラメータ説明については割愛)

5. LiDARセンサモデルのROSメッセージ出力機能の追加

図 5-5  [拡大]

操作

_images/add_pc2_msg_publisher.png

「Sensor」オブジェクトを選択し、「Inspector」から「Add Component」より

「Raycast LiDAR Point Cloud 2 Msg Pulisher」を追加する

_images/pc2_msg_publisher_setting.png

「Hierarchy」上からアタッチした

Raycast LiDAR Point Cloud 2 Msg Pulisher下の

Topic Name(=ROSメッセージとして出力する際のトピック名)

Header/Frame_id(=センサデータの基準時座標系名)

をそれぞれ任意に設定する(例:いずれもzx120/lidar1)

RGBイメージセンサ(=カメラ)モデルの追加方法

(注意)2025.2時点ではOPERAの建機に常設のカメラはありません

1.Unity Editorで空オブジェクトの作成

Unity Editor を起動し、カメラ用の空オブジェクトを作成する

図 6-1  [拡大]

操作

_images/add_empty_for_cam.png

Unity Editor 「Hierarchy」タブから「zx120」「base_link」「body_link」

を選択し右クリックで表示されるリストから「Create Empty」を選択する

_images/rename_cam.png

Unity Editor 「Inspector」上で作成したGameObjectの名前を任意に変更する

例)GameObject → cam1

2.カメラモデルの取付け位置を変更する

図 6-2  [拡大]

操作

_images/set_position_cam.png

Editor上のMove tool, Rotate tool, 「Inspector」上のTransformへ

値をキーボード入力する、などを用いてbody_link上への

カメラモデルの固定位置を決定する

3.cam1オブジェクトにカメラセンサのprefabをアタッチする(例:RGBカメラ)

図 6-3  [拡大]

操作

_images/attatch_rgbcam_prefab.png

ProjectウィンドウのPackages/UnitySensors/Runtime/Prefabs/Camera/RGBCamera

フォルダから配置したいprefabファイルを選択し「Hierarchy」上の

オブジェクト「cam1」へドラッグ&ドロップする (例:RGBCamera)

4.カメラセンサモデルの各種コンフィギュレーション

図 6-4  [拡大]

操作

_images/rgbcam_config.png

「Hierarchy」上からアタッチしたRGBCamera prefabを

左クリックで選択し「Inspector」より「Camera」「RGB Camera Sensor」

スクリプトの設定値を必要に応じて任意に変更する

(各パラメータ説明については割愛)

5. カメラセンサモデルのROSメッセージ出力機能の追加

図 6-5  [拡大]

操作

_images/add_cam_image_msg_publisher.png

「RGBCamera」オブジェクトを選択し、「Inspector」から「Add Component」より

「Camera Image Msg Pulisher」を追加する

_images/cam_image_msg_publisher_setting.png

「Hierarchy」上からアタッチした

Camera Image Msg Pulisher下の

Topic Name(=ROSメッセージとして出力する際のトピック名)

Header/Frame_id(=センサデータの基準時座標系名)

をそれぞれ任意に設定する(例:いずれもzx120/cam1)