本連載は、「システム開発」をテーマとしたコーナーです。フォーラムエイトのシステム開発の実績にもとづいて、毎回さまざまなトピックを紹介していきます。第18回は、UC-win/RoadとLinux(ROS)アプリケーションの連携方法について解説いたします。
UC-win/RoadとLinux(ROS)アプリケーションの連携方法
―Autowareによる自動運転シミュレーションを例として―
■はじめに
自動運転は世界中で研究が進められ、一部地域では実際に運用もされている自動車技術の最先端分野です。自動運転の社会実装のためには様々なシミュレーションが必要となります。その際に、特定のOSのソフトウェアに依存することなく横断的にシステムを構築した方が、より合理的・効果的な結果が得られる可能性があります。
今回は自動運転シミュレーションを例に、Windowsで稼働する弊社製品の3次元リアルタイムソフト「UC-win/Road」と、Linuxで動作する「Autoware」およびミドルウェアであるロボットオペレーティングシステム(ROS)との連携について説明します。
■ROSとは
●概要
ROSは、アメリカの企業Willow Garage社が開発したミドルウェアであり、2007年の初版以降、世界中のロボット研究で利用されています。名称に「OS」が付いていますが、WindowsやMacOSなどのOSとは異なるものです。ROSは開発ツールやライブラリが含まれており、OSとアプリケーションの間のミドルウェアとして位置づけられます(図1)。
特徴としては、分散処理型のシステムで処理が実行される点にあります。Windowsは集中管理型でありメインのプロセッサ(CPU)が全ての処理と命令を行います。対して分散処理型は複数のプロセッサが処理と命令を行うことにより、処理速度の向上や安定した動作が期待でき、ロボットを制御するシステムとして相性が良いものとされています。
自動運転においても、常に変動する車両の操作情報やセンサー・カメラからの情報取得、これらに基づく適切な運転指示を出すためには、ROSの方が適していると言えます。
▲図1 システム概念図 |
■Autowareの機能
●概要
ROSを用いて自動運転シミュレーション用に開発されたアプリケーションがAutowareです。Autowareは名古屋大学を中心に開発され、2015年にリリースされました。Autoware.AIの開発プロジェクトは終了、2018年からAutoware.Autoプロジェクトの開発が進められており、GitLab※1にてソースコードが公開されています。.AIは研究開発向け、.Autoは大部分がC++ベースで作られておりパフォーマンス・安定性が高い点が特徴です。
●各機能の特徴
Autowareの各機能の概要を表1にまとめました。基本的に1.車両周辺の状況認知、2.経路計画の策定、3.経路追従の3つの機能に大別できます。
高精度三次元地図は、点群データや測量業者による調査など高精度な計測によって作成される地図データのことで、現実の道路にある情報を再現したようなデータです。Autowareが提供している名古屋市守山区のサンプルデータを図2に示します。このデータには、各車線の中心線の座標が約1m間隔で布置されたものがあり、これを元に経路計画→経路追従が行われます。
また、予め計測されたデータだけでなく、車両が走行中にリアルタイムで取得しているカメラやLiDAR(レーザーセンサー)の情報をAutowareに送信し、周囲の道路状況を検知・認識する機能も存在します。
高精度三次元地図 |
信号検知 |
自己位置推定 |
信号認識 |
環境認識 |
経路計画 |
センサフュージョン |
障害物回避 |
クラスタリング |
駐車計画 |
経路追従 |
▲表1 Autowareの各機能
▲図2 高精度三次元地図のサンプルデータ(名古屋市守山区)※2 |
■ROS(Linux)とUC-win/Roadの連携方法
UC-win/RoadとAutowareの具体的な連携方法について述べます。UC-win/Roadを用いて仮想空間の中でシミュレーションに必要なデータを整備、Autowareにデータ送信することで自動運転を行うシステムを提案します(図3)。
WindowsのPCであっても、Microsoftより提供されているWSL(Windows Subsystem for Linux)を用いることで、Windows上からLinuxのGUIを操作出来ます。これにより、LinuxのソフトウェアであるAutowareが使えるようになります。さらに、ROS BridgeというROSモジュールによってROS以外のシステムとデータ通信が可能になり、UC-win/Road(Windows)とAutoware(Linux)の連携が可能になります。
Autowareは受け取ったデータに基づき自己位置推定→経路策定→経路追従を行い、ハンドル・アクセル・ブレーキ量などの運転情報をUC-win/Roadに送信します。
▲図3 UC-win/Road(Windows)とROS・Autoware(Linux)の連携イメージ |
UC-win/Roadは受け取った運転情報に基づき、仮想空間内を走行します。Autowareでは点群データと高精度三次元地図といったシミュレーション用のデータが可視化されますが、UC-win/Roadでは実空間に即した仮想空間で走行の可視化が可能なため、より実際的な表示が可能で高いプレゼンテーション能力を誇ります。
■UC-win/Roadで自動運転シミュレーションを行うメリット
Autowareによる自動運転シミュレーションは、実空間の道路を使って、GPS・カメラセンサー・Lidarセンサー等を取り付けた車両を実際に走行させるケースが多いです。
しかし、実際の道路を使用するためには許認可の手続きが難しく、実験当日の天候によっては満足のいく結果が得られないことも想定されます。また、実験で走行させる実車両やカメラ・Lidarセンサーの開発など、多大な時間的・経済的コストが生じます。
そのため、事前にVR空間でシミュレーションを重ねることで、予めシミュレーションの課題を抽出・解決し、実空間でのシミュレーションにフィードバックすることが有効です。また、UC-win/Roadでは自動運転シミュレーション向けに「ADASパッケージ」を展開しており、白線検知や車両周辺検知等を備えています(図4)。その中でもレーザーセンサー、カメラセンサーの機能をカスタマイズし、UC-win/Roadで構築したVRデータの仮想空間のLidar、カメラ映像をAutowareに送信することで実空間での計測・撮影の代替と出来ることが大きなメリットになります。
▲図4 UC-win/Road 自動運転・ADASパッケージ機能一覧 |
■おわりに
今回はLinuxで稼働するROS・Autowareの紹介と、Windowsアプリケーションとの連携方法について弊社製品UC-win/Roadを例に説明しました。OSが異なるソフトであっても連携させる方法はいくつかあり、互いのソフトの特徴を活かしたシステムを構築することが可能です。今後の開発にどうぞご期待ください。
●注釈
※1 https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto
※2 データの表示はVector Map Builder(https://tools.tier4.jp/vector_map_builder/)で行っている。サンプルデータは下記から取得している。
https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz
https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz
(Up&Coming '22 春の号掲載)
|
Up&Coming |
LOADING