Autoware.Autoをインストールしてみた


※2021.03.13更新
初稿以降,公式サイトのインストールに関する情報もだいぶ変わった.バージョン1.0.0がリリースされたので,最新情報にアップデートしておく.

  • 公式サイトアップデート情報のダイジェスト
    • サポートするアーキテクチャとして,amd64に加えてarm64が明記された
    • 依存環境としてROS2が明記された
    • ADEを用いた仮想環境ベースのインストール手順(以下,ADEインストール)については,アーキテクチャごとにコンテナが提供され,ユーザがビルドする必要がなくなった
    • ADEインストールの他に,ターゲットのルートファイルシステム上でビルドしてインストールする手順(以下,ネイティブビルド)も提供された ※本稿では取り扱わないが,別記事を起こす予定
    • arm64向けのADEインストールでは,通常のADEインストールの他に仮想環境内にADEインストールする手順が提供された(クラウド上のインスタンスにADEインストールすることを想定している?) ※本稿では取り扱わない
    • 車のシミュレータとしてLGSVL simulatorをADEインストールする手順が提供された(これまではUnityをインストールしたり色々設定したりと煩雑な手順が必要だった) ※本稿では取り扱わないが,インストールしてAutoware.Autoとの連携が確認できたら別記事を起こす予定
  • 本稿での対応
    • ROS2 Dashingベースのシステムは保守のみとなったので,ROS2 Dashingに関する記述は取り消し線で取り消す
    • ROS2 FoxyでのADEインストールについて扱う
      • ADEインストールの手順は大きく変わっているので,必要に応じてこれまでのやり方は折りたたんでおく
    • マイコンとの接続については使用しているros2arduinoがROS2 Dashingのみの対応であり,現状ROS2 Foxyへの対応が見込めないことから,参考扱いとして折りたたむ

記事概要

備忘録程度に,Autoware.Autoをインストールして拡張カルマンフィルタデモを起動するところまでの手順を記す.

環境

ベースOS Docker ROS2 CPU, RAM
環境1 Ubuntu 20.04(amd64) v19.03 Foxy Core i5-7200U, 4GB x 2
環境2 Ubuntu 18.04(amd64) v19.03 Dashing Core i5-6500, 16GB x 2

Dockerは後述の開発環境"ADE"に必要.ROS2環境はAutoware.Autoの明示的なインストール要件に含まれていないが,筆者の環境には既にROS2の環境が構築されていたので記しておく.

ADEインストールの手順

公式サイトのインストール手順をベースに補足していく.ADEそのもののインストールについては筆者の好みで改変しているので,トラブるようなら公式サイトに従うのが良いだろう.大まかなステップとしては以下の通り.

Step1. ADEのインストール
Step2. プロジェクトのチェックアウト
Step3. プロジェクトのビルドADE環境の設定
Step4. 拡張カルマンフィルタデモの起動

ADEのインストール

公式サイトには静的リンクのバイナリを落とすように記載されているが,筆者の好みで以下の手順で進めた.

Ubuntu 20.04の場合

$ pip3 install ade-cli
$ ade --version
3.5.1

Ubuntu 18.04の場合

$ pip3 install ade-cli
$ ade --version
3.5.1

プロジェクトのチェックアウト

公式サイトの手順に説明を加える.

ADEのワークスペースを作成する.

$ mkdir ~/adehome
$ cd ~/adehome
$ touch .adehome

クローンする.

$ cd ~/adehome
$ git clone https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git

所望のリリースタグをチェックアウトする.ここではrelease-1.0.0ブランチの1.0.0タグをチェックアウトする.

$ cd AutowareAuto
$ git checkout tags/1.0.0 -b release-1.0.0

ホストシステムとの設定ファイルの共有設定(任意). ※公式サイトの説明にはささやかなtypoがあるので注意

$ cd ~
$ mv ~/.bashrc ~/adehome/.bashrc
$ ln -s ~/adehome/.bashrc

以前のやり方で必要だった手順(参考用に折りたたんで残す)

adehomeに,環境変数の設定ファイル".aderc"を配置する.中身へのリンクはこちら

.aderc
export ADE_DOCKER_RUN_ARGS="--cap-add=SYS_PTRACE -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp"
export ADE_GITLAB=gitlab.com
export ADE_REGISTRY=registry.gitlab.com
export ADE_DISABLE_NVIDIA_DOCKER=true
export ADE_IMAGES="
  registry.gitlab.com/autowarefoundation/autoware.auto/autowareauto/ade:master
  registry.gitlab.com/autowarefoundation/autoware.auto/autowareauto:master
"

GitLabからプロジェクトをチェックアウトするにあたって,筆者の環境ではGitLabにSSH接続している状態が必要であった.
SSH公開鍵の登録やSSH接続の設定についてはこちらを参考にした.

別ターミナルにてSSH接続.

この状態で

$ cd adehome
$ git clone --recurse-submodules [email protected]:autowarefoundation/autoware.auto/AutowareAuto.git

とするとプロジェクトをチェックアウトできた.

ADE環境の設定

ADEの設定ファイル(.aderc)はアーキテクチャやベースとなるROS2のバージョンごとに雛形が用意されている.ADE環境に入る前にadehomeディレクトリ内の.adercが所望の雛形へのシンボリックリンクとなっていることを確認する.

$ cd ~/adehome
$ ls -l .aderc
.aderc -> .aderc-amd64-foxy

確認できたらADE環境に入る.

$ cd ~/adehome/AutowareAuto
$ ade start --update --enter

ADE環境に入るとターミナルの表示が若干変わるので見分けることができる.

username@ade:~$ # usernameは元々のユーザー名

以前のやり方で必要だった手順(参考用に折りたたんで残す)

プロジェクトのビルド

公式サイトの手順通りである.

$ ade start --update --enter 
ade$ cd AutowareAuto
ade$ colcon build
ade$ colcon test
ade$ colcon test-result

拡張カルマンフィルタデモの起動

公式サイトのチュートリアル通り.各デモを起動する前にROS2の環境変数を読み込むステップを忘れないこと.

username@ade:~$ source /opt/AutowareAuto/setup.bash # ROS2の環境変数を読み込む
username@ade:~$ ros2 launch autoware_demos ekf_ndt_smoothing_lgsvl.launch.py

以前のやり方でのデモ画面

ros2arduinoを使用した組み込みROS2との接続はいったん折りたたむ

今後の野望

ADEのイメージ内にはROS2 Dashingの環境とビルドシステム一式が含まれているように見える.このイメージ内にMicro-XRCE-DDS-Agentを構築して外のマイコンボードと接続できれば,マイコンボードのスイッチを操作してAutoware.Auto内のランプをチカチカさせたり,その逆にAutoware.Auto内の状態に応じてマイコンボードのランプをチカチカさせたり出来るようになるのではないか.

※2020.09.30更新
イメージ内でのMicro-XRCE-DDS-Agentのビルドと,マイコンボードからのtopicをAgent経由で ros2 topic echo するところまではできた.

Step1. ros2arduinoのpublisherサンプルを焼き込んだSeeeduino XIAOをUSBでホストPCに接続
Step2. 仮想シリアルのデバイスファイル名を渡して,イメージに入る
Step3. ROS2の環境変数を読み込む

Step4. Micro-XRCE-DDS-Agentを起動(ターミナルを使いまわすために末尾に&を付けている)
Step5. シリアル経由でのセッションが確立される
Step6. ros2 topic list で /arduino_chatter を確認

Step7. ros2 topic echo /arduino_chatter でtopicをsubscribe

参考資料

1.Autoware.Auto公式サイトのインストール手順
2..adercへのリンク
3.SSH認証キーをGitLabに登録・設定手順 覚書
4.Usage
5.Micro-XRCE-DDS-Agent
6.ros2arduino
7.@MAEHARA_Keisukeのポータル記事