3
1

More than 1 year has passed since last update.

AWSIMを改造してみる

Last updated at Posted at 2023-02-26

概要

今回は前回の続きでAWSIMを改造してみるの記事を書いて見ようと思います。
AWSIMを改造してbuildしてAutowareと合わせて動かしてみるところまでをやっていきます。

AutowareのVersionとAWSIMのversionは違いますが、Unityのセットアップ方法はAWSIMのドキュメントに詳しく書いてあるので割愛します。

こちらの記事もおすすめです

:notebook_with_decorative_cover: UnityHubのversionやAWSIMのbranch hashはなんでも構わないですが、Unityのversionだけは Unity2021.1.7に合わせるようにしてください。
Unityのversionを合わせないと勝手にパッケージがupgradeされたりして依存関係が壊れてしまう可能性があります注意しましょう。
※この記事は2023/2/26日時点の記事なので半年後くらいにはunityのversionが変わっているかもしれません、公式のAWSIMのドキュメンテーションも適宜チェックしておいてください。)

この記事は以下の2つの項目を説明します。

  1. UnityProjectのセットアップとbuild、autowareとの連携。
  2. UnityProjectの編集とbuild、改造AWSIMでAutowareとの連携。

UnityProjectのセットアップとbuild、autowareとの連携

ドキュメント通りに進めるとこの画面にたどり着くと思います。
image.png

ドキュメントの通りAssets/AWSIM/Scenes/Mainと進みSceneを開きましょう。

image.png

このマーク(呼び方を知らないので知っている方がいたら教えてください。)のものが基本的にunityのsceneと言われるprefab,object,light,cameraなどを合わせたシーンと言われるものになります。
image.png

image.png

AutowareSimulation.unityを開くと編集画面が見えるのですが、viewが引きすぎなので車両付近のviewに移しましょう。
image.png

AWSIM実行時はこちらのFollowCameraがカメラ操作をするのでこの値に近い値にカメラを設定しておきましょう。
image.png

AutowareSimulationー>AutowareSimulationー>MainCameraと開くと良いでしょう。
Mainカメラをダブルクリックするとこんな感じで車両付近にviewが移動します。

Screenshot from 2023-02-26 12-53-59.png

image.png

buildしてapplicationを作る

さて、このシーンを一度buildしてみましょう。最初はとりあえず一切の変更を加えずに正しくbuildできることを確認するのが正攻法なので、そのまま何もせずbuildしましょう。
File->BuildSettingと進みデスクトップPCの場合はとりあえずArchitectureをx86_64にしておきbuildボタンを押しましょう。
image.png

フォルダを選ぶ画面が出てくるので適当な名前をつけて保存してみましょう。
image.png

私がbuildしたときははじめから実行権限ついていました。実行まえに一応確認してみましょう。
image.png

あとの内容はQuickStartDemoの内容と同じになります。

source ~/<path to autoware folder>/install/setup.bash
./<path to AWSIM folder>/AWSIM_demo.x86_64

そうすると自作のAWSIMが出来上がるのでAutowareと連携させてみましょう。
image.png

:notebook_with_decorative_cover: Autowareとの連携で詰まったら以下のtopicが出ているか確認しましょう。

terminalからros2 topic listで確認できます。

/client_count
/clock
/connected_clients
/control/command/control_cmd
/control/command/emergency_cmd
/control/command/gear_cmd
/control/command/hazard_lights_cmd
/control/command/turn_indicators_cmd
/parameter_events
/rosout
/sensing/camera/traffic_light/camera_info
/sensing/camera/traffic_light/image_raw
/sensing/gnss/pose
/sensing/gnss/pose_with_covariance
/sensing/imu/tamagawa/imu_raw
/sensing/lidar/top/pointcloud_raw
/sensing/lidar/top/pointcloud_raw_ex
/vehicle/status/control_mode
/vehicle/status/gear_status
/vehicle/status/hazard_lights_status
/vehicle/status/steering_status
/vehicle/status/turn_indicators_status
/vehicle/status/velocity_status

これらのtopicはVehicleStatusSensorなるものが出しているようです。
image.png
image.png

自作のAWSIMができていますね。
image.png

UnityProjectの編集とbuild、改造AWSIMでAutowareとの連携

では改造していきましょう!!!(※勉強目的以外でのAWSIMの改造はおすすめしません)

まず、もとの環境を壊すとはまったときに抜け出せなくなるのでシーンを選択し、control+Dでもとのシーンを複製しておきましょう。
image.png

もう少し俯瞰視点にしてみたいので、カメラを選択し、Wを押してカメラを後方に移動、Eを押してカメラを回転させてみましょう。
image.png

地形も変えて行きましょう。とりあえずP01_Facets_Index_Geo01,P01_Facets_Index_Geo03あたりを消してPlaneを追加してみます。
prefabは親子関係にあるので、prefab編集していいですか?と確認画面が出てきたあとにprefab編集画面に移動しますが、お構いなく消していきましょう。
image.png

次にビルも消して行きましょう。
なにも考えずに全部消すと自己位置推定ができなくなるので適度に適当な四角や円筒でビルの位置を補っていきましょう。Lidarの点群はどうせ上に届かないのでビルの高さはほどほどで問題ないです。
image.png

最後にprefaからビルを消すとかなり簡素になりました。これらのObjectは動かないのでStaticにチェックをいれてOKです。(少し処理がはやくなるようです。)
image.png

buildしたい場合はFile->BuildSettingを選択するとbuildのオプション画面が出てきます。buildしたいsceneをadd sceneして追加しましょう。
image.png

buildが完了してAWSIM起動、Autowareを起動したあとにRvizからlocalization->NDT->Aligedを選択しましょう。
image.png

自己位置推定時のサンプリング点が見えると思います。Unityで建物と入れ替えたCubeやPlane、cylindarにはもともと衝突判定用のcollidarがついているのでAutoware上でも以前と挙動はあまりかわりません。
image.png

てきとーに地面追加したのでobstacle stopで止まってしまいました。AddボタンからDebug Markerを追加してみましょう。
image.png

マーカを見ると地面点群取ってきちゃっていることがわかります。
解決方法はいろいろありますが、とりあえずcrop box filterで対応しようとおもいます。

とりあえずparameterをprintしてみてみます。

ros2 param dump /perception/obstacle_segmentation/crop_box_filter
/perception/obstacle_segmentation/crop_box_filter:
  ros__parameters:
    approximate_sync: false
    input_frame: base_link
    latched_indices: false
    max_queue_size: 5
    max_x: 100.0
    max_y: 50.0
    max_z: 2.5
    min_x: -50.0
    min_y: -50.0
    min_z: -2.5
    negative: false
    output_frame: base_link
    qos_overrides:
      /clock:
        subscription:
          depth: 1
          durability: volatile
          history: keep_last
          reliability: best_effort
      /parameter_events:
        publisher:
          depth: 1000
          durability: volatile
          history: keep_last
          reliability: reliable
    use_indices: false
    use_sim_time: true

以下のファイルの値が採用されてそうです。 elevation_map使わないときはmin_zは0がいいとかいてありました elevation mapではなく、 elevation_grid_modeというパラメータのことだそうです。
src/universe/autoware.universe/launch/tier4_perception_launch/config/obstacle_segmentation/ground_segmentation/ground_segmentation.param.yaml

        max_z: 2.5  # recommended 2.5 for non elevation_grid_mode
        min_z: -2.5 # recommended 0.0 for non elevation_grid_mode

今回はとりあえず走れればいいので0.5くらいにしました。
image.png

最初のほうは問題ないですが、てきとーに建物を入れ替えたのでカーブ付近から自己位置がはまらなくなり。レーン逸脱してしまいます。わかりやすいようにもとのPCDを青くしていますが、少しずつずれてきます。
image.png

CubeやCylindarなどをもとの建物の形状に近づけると改善されます。
image.png


今回の記事の内容としてはいっぱいいっぱいなのでこのあたりで解説を止めます。

AssetStoreのパッケージなどを入れてみるとゲーム感が増してきます。

image.png

終わりに

今回はAWSIMを魔改造したものを作成し、動かしてみました。

次回はAssetStoreのパッケージを入れてみるあたりを記事にしてみようかと思います。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1