センサモデルの追加方法
Unity Sensorsパッケージのインストール方法
OperaSim-AGXでは、Field-Robotics-Japanがオープンソースとして公開しているUnitySensorsパッケージを使用しています。
1.UnitySensors パッケージのインストール
IMUセンサを作成する前準備としてUnitySensors パッケージを追加インストールする
図 1-2 [拡大] |
操作 |
|---|---|
|
unity メニューバーから「Window」「Package Manager」を選択する |
2. Package Manager ウィンドウのメニューバーから「+」「Add package from git URL」を選択する
図 1-3 [拡大] |
操作 |
|---|---|
|
Package Manager ウィンドウの例 |
|
メニューバーから「+」「Add package from git URL」を選択する |
3.Package Manager ウィンドウのURL入力テキストボックスに下記のURLを入力し「Add」ボタンを押下する
図 1-4 [拡大] |
操作 |
|---|---|
|
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 |
4.UnitySensors パッケージがインストールされることを確認する
図 1-5 [拡大] |
操作 |
|---|---|
|
UnitySensors パッケージがインストールされる |
5.UnitySensors パッケージが図の内容のようにインストールされたことを確認する
図 1-6 [拡大] |
操作 |
|---|---|
|
UnitySensors パッケージがインストールされたことを確認する |
6.UnitySensorsROS パッケージのインストール
Package Manager ウィンドウのメニューバーから再度、「+」「Add package from git URL」を選択する
図 1-7 [拡大] |
操作 |
|---|---|
|
メニューバーから再度、「+」「Add package from git URL」を選択する |
7.Package Manager ウィンドウのURL入力テキストボックスに下記のURLを入力し「Add」ボタンを押下する
図 1-8 [拡大] |
操作 |
|---|---|
|
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 |
8.UnitySensorsROS パッケージがインストールされる
図 1-9 [拡大] |
操作 |
|---|---|
|
UnitySensorsROS パッケージをインストール中の画面 |
9.UnitySensorsROS パッケージが図1-10の通りであることを確認する
図 1-10 [拡大] |
操作 |
|---|---|
|
UnitySensorsROS パッケージがインストールされたことを確認する |
IMUセンサモデルの追加方法
1.実機のIMUの取り付け位置確認
シミュレーション内の建機モデルに対応する実機のIMUの取り付け位置を現物確認する (図1-1:油圧ショベルzx120のアームリンク計測用IMU) |
図 1-1 [拡大] |
内容 |
|---|---|
|
実機に取り付け位置を合わせるため、現物を確認する |
IMUは、zx120の場合、キャビン、ブームリンク、アームリンク、バケットリンクに取りついている
2.Unity Editorで空オブジェクトを作成
Unity Editor を起動し、IMUの空オブジェクトを作成する(例:boom_imu の場合)
図 2-1 [拡大] |
操作 |
|---|---|
|
Unity Editorを起動する |
|
unity 「Hierarchy」タブから「zx120」「base_link」「body_link」「boom_link」 を選択し右クリックで表示されるリストより「Create Empty」を選択する |
boom_imu の場合、ショベルの実機写真(図 1-1 )の通り
ショベルモデルのboom_link に対する空オブジェクトの原点
および姿勢を調整して合わせる
|
3.「Inspector」タブで GameObjectに名称を設定する(例:boom_imu)
図 2-2 [拡大] |
操作 |
|---|---|
|
GameObjectに名称を設定する(例:boom_imu) |
4.unity 「Hierarchy」タブから「boom_imu」を選択し「Inspector」タブを参照する
図 2-3 [拡大] |
操作 |
|---|---|
|
unity 「Hierarchy」タブから「boom_imu」を選択し 「Inspector」タブを参照する |
5.「Inspector」タブから「Add Component」ボタンを押下し「IMU Sensor」を選択する
図 2-4 [拡大] |
操作 |
|---|---|
|
「Inspector」タブから「Add Component」ボタンを押下し
|
6.「IMU Sensor」のコンポーネントが「Inspector」タブに追加されていることを確認する
図 2-5 [拡大] |
操作 |
|---|---|
|
「IMU Sensor」のコンポーネントが「Inspector」タブに
|
7.再度「Inspector」タブから「Add Component」ボタンを押下し「IMU Msg Publisher 」を選択する
図 2-6 [拡大] |
操作 |
|---|---|
|
再度「Inspector」タブから「Add Component」ボタンを押下し 「IMU Msg Publisher 」を選択する |
8.「IMU Msg Publisher」のコンポーネントが図のように「Inspector」タブに追加されていることを確認する
図 2-7 [拡大] |
操作 |
|---|---|
|
「IMU Msg Publisher」のコンポーネントが「Inspector」タブに
|
9.「Inspector」上で、ROS topic名およびframe_idを実機に合わせ設定する
図 2-8 [拡大] |
操作 |
|---|---|
|
「Topic Name」「Frame_id」をそれぞれ設定する |
10.Unity のPlay ボタンをクリックする
図 2-9 |
操作 |
|---|---|
|
Unity EditorのPlay 「▶」ボタンをクリックし シミュレーションを実行する |
11.シミュレータからPublishされるIMUのROS topicを表示し、所望の出力が得られることを確認する
図 2-10 [拡大] |
操作 |
|---|---|
|
ROS側でrostopic echo 等を実行し、所望のROS topicとしてIMU出力が得られることを確認する |
同様の方法で、swing、arm、bucket について
IMUセンサモデルを追加し設定する
|
GNSSセンサモデルの追加方法
1.ショベル実機のGNSSセンサの取り付け位置確認
シミュレーション内の建機モデルに対応する実機のGNSSの取り付け位置を現物確認する
(図1-1:油圧ショベルzx120のRTK GNSSコンパスHemisphere V500)
|
図 3-1 [拡大] |
内容 |
|---|---|
|
実機に取り付け位置を合わせるため、現物を確認する |
GNSSコンパスは、zx120のbodyリンク上に固定されている
|
2.Unity Editorで空オブジェクトの作成
Unity Editor を起動し、GNSSの空オブジェクトを作成する
図 3-2 [拡大] |
操作 |
|---|---|
|
Unity Editor を起動する |
|
Unity Editor 「Hierarchy」タブから「zx120」「base_link」「body_link」 を選択し右クリックで表示されるリストから「Create Empty」を選択する |
3.「Inspector」タブで GameObjectに名称を設定する(例:gnss)
図 3-3 [拡大] |
操作 |
|---|---|
|
GameObjectに名称を設定する(例:gnss) |
3.Unity Editor 「Hierarchy」タブから「gnss」を選択し「Inspector」タブを参照する
図 3-4 [拡大] |
操作 |
|---|---|
|
Unity Editor 「Hierarchy」タブから「gnss」を選択し 「Inspector」タブを参照する |
4.「Inspector」タブから「Add Component」ボタンを押下し「gnss」を選択する
図 3-5 [拡大] |
操作 |
|---|---|
|
「Inspector」タブから「Add Component」ボタンを押下し 「GNSS Sensor」を選択する |
5.「GNSS Sensor」のコンポーネントが図のように「Inspector」タブに追加されていることを確認する
図 3-6 [拡大] |
操作 |
|---|---|
|
「GNSS Sensor」のコンポーネントが「Inspector」タブに
|
6.再度「Inspector」タブから「Add Component」ボタンを押下し「Nav Sat Fix Msg Publisher」を選択する
図 3-7 [拡大] |
操作 |
|---|---|
|
再度「Inspector」タブから「Add Component」ボタンを押下し 「Nav Sat Fix Msg Publisher」を選択する |
7.「Nav Sat Fix Msg Publisher」のコンポーネントが図のように「Inspector」タブに追加されていることを確認する
図 3-8 [拡大] |
操作 |
|---|---|
|
「Nav Sat Fix Msg Publisher」のコンポーネントが 「Inspector」タブに追加されていることを確認する |
8. 再度「Inspector」タブから「Add Component」ボタンを押下し「Quaternion Stamped Publisher」を選択し、各パラメータを設定する
図 3-9 [拡大] |
操作 |
|---|---|
|
実機のCompassの出力に合わせ
にそれぞれ設定した様子 |
TerrainへGNSS座標の基準点を設定する
1.Unity Editor の「Hierarchy」タブから「Terrain」を選択し「Inspector」タブを開く
図 4-1 [拡大] |
操作 |
|---|---|
|
「Terrain」コンポーネント |
2.Unity EditorでTerrainコンポーネント上に空オブジェクトを作成する
Unity Editor を起動し、「Terrain」を右クリックで表示されるリストより「Create Empty」を選択する
図 4-2 [拡大] |
操作 |
|---|---|
|
Unity Editor 「Hierarchy」タブから「Terrain」を選択し
|
3.「Inspector」タブで GameObjectに名称を設定する(例:GeoCoordinateSystem)
図 4-3 [拡大] |
操作 |
|---|---|
|
GameObjectに名称を設定する(例:GeoCoordinateSystem) |
4.「Inspector」タブから「Add Component」ボタンを押下し「Geo Coordinate System」を選択する
図 4-5 [拡大] |
操作 |
|---|---|
|
「Inspector」タブから「Add Component」ボタンを押下し
|
5.「Geo Coordinate System」の座標系の原点位置・姿勢および原点の緯度・経度・高度を設定する
図 4-6 [拡大] |
操作 |
|---|---|
|
当該座標系原点の位置 (Latitute:緯度[度]、Longitude:経度[度]、Altitude:高度[m]) を入力する この場所を基準として、GNSSモデルの位置情報が NavSatFix型のROS topicとしてpublishされる |
6.UnityのPlay ボタンをクリックする
図 4-7 |
操作 |
|---|---|
|
Unity EditorのPlay 「▶」ボタンをクリックし シミュレーションを実行する |
7.ショベルモデルを移動させGNSSの位置(緯度、経度、高度)およびコンパスの方位が適切に変化することを確認する
図 4-8 [拡大] |
操作 |
|---|---|
|
シミュレータを再生する(動作前) |
|
ショベルモデルを動作させる(動作後) |
|
対応するROS Topic(例:/zx120/gnss_compass/fix, /heading) が重機の動作に合わせて正しく変化していることを確認する |
LiDARセンサモデルの追加方法
(注意)2025.2時点ではOPERAの建機に常設のLiDARセンサはありません
1.Unity Editorで空オブジェクトの作成
Unity Editor を起動し、LiDAR用の空オブジェクトを作成する
図 5-1 [拡大] |
操作 |
|---|---|
|
Unity Editor 「Hierarchy」タブから「zx120」「base_link」「body_link」 を選択し右クリックで表示されるリストから「Create Empty」を選択する |
|
Unity Editor 「Inspector」上で作成したGameObjectの名前を任意に変更する 例)GameObject → lidar1 |
2.LiDARセンサモデルの取付け位置を変更する
図 5-2 [拡大] |
操作 |
|---|---|
|
Editor上のMove tool, Rotate tool, 「Inspector」上のTransformへ 値をキーボード入力する、などを用いてbody_link上への LiDARモデルの固定位置を決定する |
3.lidar1オブジェクトにLiDARのセンサprefabをアタッチする(例:Velodyne VLP-16)
図 5-3 [拡大] |
操作 |
|---|---|
|
ProjectウィンドウのPackages/UnitySensors/Runtime/Prefabs/LiDAR/Velodyne フォルダから配置したいLiDARのprefabファイルを選択し「Hierarchy」上の オブジェクト「lidar1」へドラッグ&ドロップする (例:VLP-16) |
4.LiDARセンサモデルの各種コンフィギュレーション
図 5-4 [拡大] |
操作 |
|---|---|
|
「Hierarchy」上からアタッチしたVLP-16 prefab下の「Sensor」オブジェクトを 左クリックで選択し「Inspector」より「Raycast LiDAR Sensor」スクリプトの 設定値を必要に応じて任意に変更する (各パラメータ説明については割愛) |
5. LiDARセンサモデルのROSメッセージ出力機能の追加
RGBイメージセンサ(=カメラ)モデルの追加方法
(注意)2025.2時点ではOPERAの建機に常設のカメラはありません
1.Unity Editorで空オブジェクトの作成
Unity Editor を起動し、カメラ用の空オブジェクトを作成する
図 6-1 [拡大] |
操作 |
|---|---|
|
Unity Editor 「Hierarchy」タブから「zx120」「base_link」「body_link」 を選択し右クリックで表示されるリストから「Create Empty」を選択する |
|
Unity Editor 「Inspector」上で作成したGameObjectの名前を任意に変更する 例)GameObject → cam1 |
2.カメラモデルの取付け位置を変更する
図 6-2 [拡大] |
操作 |
|---|---|
|
Editor上のMove tool, Rotate tool, 「Inspector」上のTransformへ 値をキーボード入力する、などを用いてbody_link上への カメラモデルの固定位置を決定する |
3.cam1オブジェクトにカメラセンサのprefabをアタッチする(例:RGBカメラ)
図 6-3 [拡大] |
操作 |
|---|---|
|
ProjectウィンドウのPackages/UnitySensors/Runtime/Prefabs/Camera/RGBCamera フォルダから配置したいprefabファイルを選択し「Hierarchy」上の オブジェクト「cam1」へドラッグ&ドロップする (例:RGBCamera) |
4.カメラセンサモデルの各種コンフィギュレーション
図 6-4 [拡大] |
操作 |
|---|---|
|
「Hierarchy」上からアタッチしたRGBCamera prefabを 左クリックで選択し「Inspector」より「Camera」「RGB Camera Sensor」 スクリプトの設定値を必要に応じて任意に変更する (各パラメータ説明については割愛) |
5. カメラセンサモデルのROSメッセージ出力機能の追加