7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ROS/ROS2Advent Calendar 2020

Day 17

プログラミング素人がAutoware.AIを使ったコンテストに参加した話(その3:Autoware.AIとLGSVLシミュレータを使ってみる)

Last updated at Posted at 2020-12-16

##まずはじめに
Autowareの機能はマップから読み取った自己位置から速度や向きを計算しているため自己位置推定ができないとなにもできません。
今回はAutowareとLGSVLシミュレータを使って自己位置推定をして自動走行するまでの過程をご紹介します。
ここではLGSVLのチュートリアルがバージョン1.14.0で構成されているため、それに合わせて1.14.0を使用します。

Autowareの様々なバージョン使ってるとパラメータとか混乱してくるのでroswtf [launchファイル名]を使って必要なトピックや構成を確認するといいです。

(2021.04.03:追記、20年6月のバージョンではすでにブリッジできるシミュレーターがあるので追記)

その1:Autoware.AIの環境設定
その2:ROSの情報まとめ
その3:Autoware.AIとLGSVLシミュレータを使ってみる←いまここ

項番 ページ内リンク
1 1. 環境設定
2 2. LGSVLシミュレータの設定
3 AutowareとLGSVLシミュレータを接続する
4 Autowareの自己位置推定
5 参考リンク

##1. 必要なソフトのインストール

Git Large File Storage (LFS)のインストール

git_lfsのインストール
sudo apt-get update
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

##2. LGSVLシミュレータの設定
####必要なソフト(Linux向け) <- 追加しました。

libvulkan1のインストール
sudo apt-get update
sudo apt-get install -y libvulkan1

####LGSVLのバイナリダウンロード
LGSVL Downloadから最新のバイナリをダウンロードします。
いろいろなMAPを試したい場合は最新版を使用するようにしてください。
なおシミュレータを使用するのにユーザー登録が必要です。
もし起動できない場合は実行属性がないかもしれないので[プロパティ]から[プログラムから実行可能]にチェックが入っているか確認してみてください。

01_user.png

下記のコマンドでも可能です。

実行属性の付与
chmod a+x simulator

####補足:シミュレーターの選択
(2021.04.03:追記、20年6月のバージョンではすでにブリッジできるシミュレーターがあるので追記)
シミュレーターを選択したら【4. Autowareの自己位置推定からお試し走行まで】に進む
Screenshot from 2021-04-03 21-08-27.png

####Mapダウンロード
add newをクリックしたあとMap Nameに「Borregas Avenue」、Map URLにurlを入力します。

Borregas_AvenueのURL
https://content.lgsvlsimulator.com/maps/borregasave/

ほかのMapデータはこちらLGSVL Mapsにあります。
02_map.png

####vehicleダウンロード
add newをクリックしたあとVehicle NameにAWF Lexus RX 2016、Vehicle URLにurlを入力します。

AWF_Lexus_RX_2016のURL
https://content.lgsvlsimulator.com/vehicles/awflexusrx2016/

ほかの車両データを使用したい場合ははこちらLGSVL Vehiclesにあります。
03_vehicle.png

####vehicleセンサの設定
Bridge TypeにROSを選択、サンプルにあるjsonの中身をSensorsに貼り付けます。

Complete_JSON_Configuration
[
[
  {
    "type": "GPS Device",
    "name": "GPS",
    "params": {
      "Frequency": 12.5,
      "Topic": "/nmea_sentence",
      "Frame": "gps",
      "IgnoreMapOrigin": true
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    }
  },
  {
    "type": "Lidar",
    "name": "Lidar",
    "params": {
      "LaserCount": 32,
      "MinDistance": 0.5,
      "MaxDistance": 100,
      "RotationFrequency": 10,
      "MeasurementsPerRotation": 360,
      "FieldOfView": 41.33,
      "CenterAngle": 10,
      "Compensated": true,
      "PointColor": "#ff000000",
      "Topic": "/points_raw",
      "Frame": "velodyne"
    },
    "transform": {
      "x": 0,
      "y": 2.312,
      "z": -0.3679201,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    }
  },
  {
    "type": "Keyboard Control",
    "name": "Keyboard Car Control"
  },
  {
    "type": "Vehicle Control",
    "name": "Autoware Car Control",
    "params": {
      "Topic": "/vehicle_cmd"
    }
  }
]

04_sensor.png

####シミュレータの設定
Simulation Nameに適当な名前をつけたあと、Map&Vehiclesを設定する。
05_simulation_name.png

MapはBorregas Avenueを選択、VehicleはAWF Lexus RX 2016を設定して(ROSの動作するPCのIPアドレス):9090の形式でrosbridgeに対する接続設定を実施します。
(1台で完結させる場合はlocalhost:9090
06_simulation_setting.png

右下の赤色の三角をクリックするとシミュレーションを開始できます。
07_simulation_run.png

##3. AutowareとLGSVLシミュレータを接続する
####Autoware-dockerの起動
今回はマニュアルAutoware.AI 1.14.0 with LGSVL Simulator にそってV1.14.0をビルドしてシミュレータに接続します。
細かいところはその1を参照してください。

Launch_Autoware
# $WORKING_DIRECTORYは任意
cd $WORKING_DIRECTORY
git clone https://github.com/Autoware-AI/docker.git
cd $WORKING_DIRECTORY/docker/generic
./run.sh -t 1.14.0

####Autoware-dockerとの複数コンソールでの接続
--rmオプションを削除して起動するとdockerからexitしてもimageが残るようになります。
dockerからexitしてからdocker ps -aでコンテナを検索すると前回の起動していたコンテナ名がわかります。
起動していない場合はdocker start [イメージ名]で起動しましょう。
docker execコマンドでdockerに入ることができます。

(コンソール1)dockerイメージへの接続
docker ps -a
docker start [イメージ名]
docker exec -it [イメージ名] /tmp/entrypoint.sh
cd $WORKING_DIRECTORY/docker/generic

もう一つコンソールを開いてからdocker execコマンドを実行すると複数のコンソールでdockerに入ることができます。

(コンソール2)dockerイメージへの接続
docker exec -it [イメージ名] /tmp/entrypoint.sh
cd $WORKING_DIRECTORY/docker/generic

LGSVLシミュレータとはROSBRIDGEで接続します。
LGSVLシミュレータを立ち上げてからコンソール1でROSBRIDGEを立ち上げて接続してみましょう。

(コンソール1)ROSBRIDGE
# Autowareの環境ファイルの読み込み
source Autoware/install/setup.bash
# ROSBRIDGEを立ち上げ
roslaunch rosbridge_server rosbridge_websocket.launch

さきほどのコンソール2で接続を確認しましょう。
rostopic listコマンドでLGSVLシミュレータからセンサの値などのトピックを確認することができます。

(コンソール2)トピックの確認
# Autowareの環境ファイルの読み込み
source Autoware/install/setup.bash
# トピックの確認
rostopic list

複数コンソールから接続するときはかならず環境ファイルの読み込みをしましょう。

##4. Autowareの自己位置推定からお試し走行まで
さて、いよいよ自己位置推定です。Autoware-dockerを起動するとホームにshared_dirという共有フォルダが作られます。
shared_dirのデータはAutoware-dockerからも読み書きできるので非常に便利です。

(コンソール3)Autoware-data
# LGSVLのサンプルファイルの読み込み
cd ~/shared_dir
git clone https://github.com/lgsvl/autoware-data.git

クローンが終わったらコンソール1に戻ってruntime_managerを立ち上げます。
runtime_managerが見つからない、というエラーが出る場合は
source Autoware/install/setup.bash(環境ファイルの読み込み)
を忘れているケースが多いです。

(コンソール1)runtime_manager
# runtime_managerを立ち上げ
roslaunch runtime_manager runtime_manager.launch

runtime_managerが立ち上がったらそれぞれlaunchファイルの設定をしていきます。

(コンソール1)runtime_managerでのlaunchファイルの設定
# Map
/home/autoware/shared_dir/autoware-data/BorregasAve/my_launch/my_map.launch
# Sensing
/home/autoware/shared_dir/autoware-data/BorregasAve/my_launch/my_sensing_simulator.launch
# Localization
/home/autoware/shared_dir/autoware-data/BorregasAve/my_launch/my_localization.launch
# Detection
/home/autoware/shared_dir/autoware-data/BorregasAve/my_launch/my_detection.launch
# Mission planning
/home/autoware/shared_dir/autoware-data/BorregasAve/my_launch/my_mission_planning.launch
# Motion plannning
/home/autoware/shared_dir/autoware-data/BorregasAve/my_launch/my_motion_planning.launch

補足:my_localization.launchの44行目を下記のように有効化すると車両モデルが読み込まれます。

ボタンをクリックしてlaunchファイルを実行します。右下のrvizをクリックするとrvizが立ち上がります。
09_rviz.png

Autowareの自己位置推定は初期位置を指定する必要があるので2D Pose Estimateで自分の位置を指定します。
2D Pose Estimateをクリックして緑の矢印になるようにドラッグして指定します。
10_localization.png

下記のようになればOKです。LGSVLシミュレータは十字キーで車両を操作することができるのでrvizで確認してみましょう。
11_localization_matching.png

####Autowareで走行してみる
2D Navi Goalで目的地点をしましょう。2D Navi Goalをクリックして緑の矢印になるようにドラッグして指定します。
そうするとしばらくすると自動で走行します。経路はAutowreが道路にそって作成し走ってくれます。道路はVector_mapという形式でAutowareのパッケージが読み込んでくれます。
12_automatic_run.png

####まとめ
年末年始にPCの入れ替えがあるのでAutowareのまとめは年明けに時間を見つけてご紹介していきたいと思います。
rvizの2D、3Dの切り替えがわかりません。誰か教えてくださるとありがたいです。

(2021.04.03:追記、rvizの切り替え)
rvizの右側のパネルType:をThirdPersonFollowerにすると3Dに表示が切り替わります。
Screenshot from 2021-04-03 21-28-02.png

##5. 参考リンク
Git Large File Storage (LFS)  
・[How To Install "libvulkan1" Package on Ubuntu ](https://zoomadmin.com/HowToInstall/UbuntuPackage/libvulkan1 "How To Install "libvulkan1" Package on Ubuntu ")
LGSVL Download
LGSVL Maps
LGSVL Vehicles
Sample sensor configuration
Web UI Vehicles Tab Explanation
Autoware.AI 1.14.0 with LGSVL Simulator

【Ubuntu】Ubuntuでペイント的なお絵かきをするPinta

7
3
2

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
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?