今回は、小型の移動ロボットをAutowareで動かすためのリポジトリについてお話します。
Autowareは自動運転用のオープンソースソフトウェアであり、初期状態は自動車を前提とした構成になっています。そのため、小型移動ロボットを自動走行させるには多くの調整が必要です。しかし、Autoware を用いた研究開発や試用、学習などで小型移動ロボットを動かしたい場面は多くあります。そこで私たちは Autoware で小型の移動ロボットを動かすためのサンプルリポジトリ「 autoware.sample_mobile_robot 」を公開しました。このリポジトリは WHILL 社製の「WHILL 電動モビリティプラットフォーム - ロボット台車」に対応しており具体的な設定例を提供しています。 本記事ではリポジトリについてご紹介します。
対象となる小型移動ロボットの構成
autoware.sample_mobile_robot で対象としている車両の構成についてご説明します。

ベース車両としている「WHILL 電動モビリティプラットフォーム - ロボット台車」は外部からの信号入力によって駆動させることができますが、自動運転に必要なセンサーや計算機等は別途搭載する必要があります。
WHILL 電動モビリティプラットフォーム(日本語サイト)
WHILL Mobile Robot Platform (English site)
ここでは、Autoware を動かす計算機、3D LiDAR、カメラ、IMU をそれぞれひとつずつ搭載しました。各センサー、計算機、ベース車両などの接続を下図に示します。
詳細はリポジトリ内の docs フォルダをご参照ください。

autoware.sample_mobile_robotリポジトリの紹介
リポジトリ構成について
autoware.sample_mobile_robotリポジトリは、上記で紹介した小型移動ロボットを対象としてAutowareをインテグレーションしたサンプルリポジトリです。このリポジトリはautowarefoudation/autowareリポジトリをフォークしたもので、READMEに記載がある通りautoware.reposファイルが配置されたメタリポジトリとなっています。このreposファイルをベースとして、今回の小型移動ロボット向けにlaunchファイルやパラメータファイルの実体があるautoware_launchパッケージ、Autowareと車両を繋ぐための車両インターフェース、搭載しているカメラドライバのリポジトリを用意しました。
これらのリポジトリの詳細についてはautoware.sample_mobile_robotのREADMEをご参照ください。
デフォルトのシステム構成との比較
次に、小型移動ロボット向けのシステム構成について紹介します。 デフォルトの構成はノードダイアグラムの通りですが、今回の小型移動ロボット向けに調整した構成について、主要コンポーネントの中で起動していないノード/モジュールをグレーアウトした図を用いてご説明します。

まず、sengingコンポーネントの構成は、搭載しているセンサーの制約に基づいています。今回の小型移動ロボットの例では、Lidar1台とカメラ1台を搭載しているため、レーダーやGNSSを前提とした機能は使用していません。また、元の構成では複数のLidarから得られる点群を結合し、そのデータをperceptionなど他のコンポーネントへ送っていますが、今回のようにLidarが1台の場合は、結合せずそのまま他のコンポーネントへ送って利用しています。

次にperceptionコンポーネントです。こちらでは搭載していないレーダーに関する機能と、信号認識に関する機能は起動していません。

最後にplanningコンポーネントですが、こちらには自動車と車道を前提とした機能が多く存在しています。屋外の歩道環境や屋内環境を走行する小型移動ロボットに適した機能は限られているため、多数のモジュールを起動しない設定としています。
車両インターフェースの紹介と手動走行について
AutowareとWHILL社製電動モビリティプラットフォームとを繋ぐための車両インターフェースには、ros2_whill及びautoware_ros2_whill_adapterパッケージを利用しています。Autowareとの接続関係は下図の通りです。詳細は各リポジトリをご参照ください。

また、Autowareにはコントローラーを用いて車両を手動操縦するための機能として、autoware_joy_controllerパッケージが存在しています。小型移動ロボットでは自動車のように運転席での手動運転ができないため、Autowareを起動したまま経路外へロボットを移動させたい場合や、データ取得のための走行の際に有用です。自動走行時には、Autowareの発進指示や緊急停止指示を出すといったオペレーションも可能です。今回紹介している構成では、コントローラーをBluetoothで無線接続しています。
小型移動ロボット向け主要パラメータ
sample_mobile_robotリポジトリでは多数のパラメータを変更していますが、その中でも小型移動ロボットをAutowareで動かす上で、特に重要となるものについてご紹介します。
まず、一番変更点が多いのは、planningコンポーネントです。自動車と比べて全体的にスケールが小さくなるため、カーブでの経路計画や全体的な速度計画に関する数値を小さくする必要があります。以下はplanningコンポーネントで変更しているパラメータの一部です。
autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml
refine_goal_search_radius_range: 1.0
input_path_interval: 0.1
output_path_interval: 0.1
また、planningコンポーネントと関連して、mapコンポーネントにも変更を加えています。以下では、読み込んだvector map形式の地図から生成される、経路追従のためのセンターラインの解像度を1.0 [m]に設定しています。
autoware_launch/config/map/lanelet2_map_loader.param.yaml
center_line_resolution: 1.0
次にcontrolコンポーネントです。デフォルトでlateral_controllerに設定されているMPCはステアリングのない小型移動ロボットには適さないため、ここではpure_pursuitを採用しています。lateral_controllerの選択はlaunchファイル上から引数で指定することができ、pure_pursuitのパラメータについても小型移動ロボット向けに調整をしています。
autoware_launch/launch/autoware.launch.xml
<!-- Control -->
<group if="$(var launch_control)">
<include file="$(find-pkg-share autoware_launch)/launch/components/tier4_control_component.launch.xml">
<arg name ="lateral_controller_mode" value="pure_pursuit"/>
<arg name="enable_autonomous_emergency_braking" value="false"/>
</include>
</group>
また、差動二輪駆動型のロボット向けに重要なパラメータとして、下記のパラメータがあります。このパラメータがtrueの場合、発進直後にステアリングが急回転してしまう事を防ぐ機能が有効となります。これはカーブ途中からの発進や、駐車時の切り返し動作をサポートするための機能ですが、差動二輪駆動型のロボットにはステアリングが存在しません。この機能が有効になっていると、特定の状況下で発進できなくなってしまう可能性があります。したがって、ステアリングを持たないロボットの場合、この機能を無効にする必要があります。
autoware_launch/config/control/trajectory_follower/longitudinal/pid.param.yaml
enable_keep_stopped_until_steer_convergence: false
最後にlocalizationコンポーネントです。自動車は屋外を走行する事がほとんどですが、小型移動ロボットの場合は屋外と同じくらい屋内環境を走行する事が考えられます。走行する環境によって自己位置推定のパラメータを調整する必要がありますが、環境を変える度にパラメータファイルを変える事は煩わしいため、紹介したリポジトリではindoorとoutdoorという2つのディレクトリを作成し、launchファイルから切り替えられるように変更を加えています。
autoware_launch/config/localization/ndt_scan_matcher
localization/ndt_scan_matcher/
├── indoor
│ ├── ndt_scan_matcher.param.yaml
│ └── pointcloud_preprocessor
│ ├── crop_box_filter_measurement_range.param.yaml
│ ├── random_downsample_filter.param.yaml
│ └── voxel_grid_filter.param.yaml
└── outdoor
├── ndt_scan_matcher.param.yaml
└── pointcloud_preprocessor
├── crop_box_filter_measurement_range.param.yaml
├── random_downsample_filter.param.yaml
└── voxel_grid_filter.param.yaml
autoware_launch/launch/autoware.launch
<!-- Localization -->
<group if="$(var launch_localization)">
<include file="$(find-pkg-share autoware_launch)/launch/components/tier4_localization_component.launch.xml">
<arg name="input_pointcloud" value="/sensing/lidar/top/pointcloud_before_sync"/>
<arg name="environment" value="indoor"/>
</include>
</group>
セットアップ方法について
本ブログで紹介した小型移動ロボットと全く同じ構成であったとしても、sample_mobile_robotリポジトリをビルドするだけではなく各種センサーの設定やキャリブレーションが必要となります。autoware.sample_mobile_robotリポジトリのREADMEに各種センサーの詳細やセットアップ方法、キャリブレーション方法等について主にAutoware Documentationのリンクをまとめていますのでご活用ください。
自動運転デモンストレーション
実際に屋外閉鎖空間の歩道環境にて自動運転を行いました。地図の作成は Autoware documentation の Creating maps を参考に作成でき、pointcloud mapとvevctor mapを用意する必要があります。
小型移動ロボット向けにvector mapを作成する場合、自動車のように車道の白線に沿ったレーンを作成する手法が取れないため、手動走行させた軌跡の通りにレーンを作成する事ができるbag2laneletが有用です。 また、vector mapはVector Map Builderによって作成・編集が可能です。
動画では発進・障害物停止・障害物除去後の再発進を行っています。
また、屋内閉鎖空間にて物体検出の動作確認を行いました。

屋内でロボットの前方にマネキンと自転車を配置しており、それぞれPEDESTRIAN、CYCLISTとして検出されている事が分かります。注意点として、紹介した小型移動ロボットの構成はシンプルなセンサー構成としているため、物体の検出状況が不安定となる可能性があります。採用されている物体検出のアルゴリズムや構成については下記記事にて紹介しています。
このように Autoware を用いて小型移動ロボットの自動運転が可能です。
まとめ
小型の移動ロボットを動かすためのサンプルリポジトリを紹介しました。本リポジトリは定期的に最新の Autoware に追従する事を予定しています。ぜひご活用ください。
執筆者プロフィール
Azumi Suzuki | 鈴木 与海
システムインテグレーション
2018年4月に入社。入社以来Autowareの実機インテグレーション及び実証実験に携わり、現在は小型移動ロボットのプロダクト開発を担当。
Michinari Kawai | 河合 道成
ビジネスユニット
2018年4月に入社。入社以来自律移動ロボット分野を継続して担当しつつ、メカトロニクス関連や旅客向け車両等にも従事。前職ではICT建機を担当。
ティアフォーでは、「自動運転の民主化」というビジョンに共感を持ち、自らそれを実現する意欲に満ち溢れた新しい仲間を募集しています。
今回のチームで募集中の職種
その他にも多くの職種で採用をしています。詳細は、ティアフォーの「求人ページ」をご覧ください。
「どの職種で自分の経験を活かせるかが分からない」「希望する職種が見つからない」などの場合は、ぜひ「キャリア登録」をお願いします。
お問い合わせ先
- メディア取材やイベント登壇のご依頼:pr@tier4.jp
- ビジネスや協業のご相談:sales@tier4.jp
ソーシャルメディア
X (Japan/Global) | LinkedIn | Facebook | Instagram | YouTube
関連リンク