81.6K Views
October 25, 22
スライド概要
弊社ではオープンソース自動運転OSのAutowareを開発しており、世界20ヵ国・500以上の企業、団体で使用されています。自動運転の開発において、シミュレーターはコストやリスクの面から非常に重要です。この度は弊社で開発したオープンソース自動運転シミュレーター「AWSIM」の実装事例をご紹介させていただきます。
こんな人におすすめ:
・自動運転に興味がある方
・Unityをデジタルツインに利用したい方
・機械学習データ生成やHILS等、Unityの様々なユースケースを知りたい方
受講者が得られる知見:
・自動運転シミュレーターに求められる技術
・車両/LiDAR Sensor/ROS2/地図・交通等の実装事例
・Unity Sensor SDKの活用事例
出演:
牧野 鷹秋 (株式会社ティアフォー)
--
初出: SYNC 2022 #UnitySYNC
https://events.unity3d.jp/sync/
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
• • • • •
• • https://tier4.jp/ • • • • • 東京大学 大学院情報理工学系研究科 准教授、名古屋 大学未来社会創造機構客員准教授、株式会社ティア フォー 創業者兼CTO、The Autoware Foundation 代表 理事。博士(工学)。 2004年慶応義塾大学理工学部情報工学科卒業、2008 年同大学院理工学研究科 開放環境科学専攻 後期博士 課程修了。カーネギーメロン大学、カリフォルニア 大学の研究員、名古屋大学大学院 情報科学研究科 准 教授を経て、現職。 専門はオぺレーティングシステム、組込みリアルタ イムシステム、並列分散システム。
• • • • •
• • • • • • • • •
60+ MEMBERS • •
20+ COUNTRIES 500+ COMPANIES
30+ Vehicles
• • • • • • • • • ROS2 Documentation: Understanding topics https://docs.ros.org/en/galactic/Tutorials/Beginner-CLITools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html
① Sensorデータを取得 ② 各モジュールを通して 制御入力値を算出 ③ ステア、アクセルなど を入力して車両制御
① Sensorデータを取得 ② 各モジュールを通して 制御入力値を算出 ③ ステア、アクセルなど を入力して車両制御
① Sensorデータを取得 ② 各モジュールを通して 制御入力値を算出 ③ ステア、アクセルなど を入力して車両制御
① Sensorデータを取得 ② 各モジュールを通して 制御入力値を算出 ③ ステア、アクセルなど を入力して車両制御
NDT Scan Matching
• • • • • •
Clock Sensor Data ROS2 Control Input
実機に代わり、AWSIMで シミュレーション
• •
• • •
Autoware 起動 AWSIM 起動 車両初期 位置 自己位置 推定 自己位置 推定 目的地 セット 自動走行 開始 自動走行 目的地 到達 自動走行 目的地 到達
• • •
• • •
ROSBAG Datasets Annotation Service Evaluation Service Build PreProcess Train Model Service Eval
ROSBAG Datasets ① 機械学習で使 用するログを Annotation Service に登録 ② 学習時に登録 済みAnnotation データを読み込 む Evaluation Service Model Service Annotation Service Build PreProcess Train Eval ③ 学習後のモデ ルを管理する Model Serviceに データを格納
ROSBAG Datasets ① 機械学習で使 用するログを Annotation Service に登録 ② 学習時に登録 済みAnnotation データを読み込 む Evaluation Service Model Service Annotation Service Build PreProcess Train Eval ③ 学習後のモデ ルを管理する Model Serviceに データを格納
ROSBAG Datasets ① 機械学習で使 用するログを Annotation Service に登録 ② 学習時に登録 済みAnnotation データを読み込 む Evaluation Service Model Service Annotation Service Build PreProcess Train Eval ③ 学習後のモデ ルを管理する Model Serviceに データを格納
ROSBAG Datasets ① 機械学習で使 用するログを Annotation Service に登録 ② 学習時に登録 済みAnnotation データを読み込 む Evaluation Service Model Service Annotation Service Build PreProcess Train Eval ③ 学習後のモデ ルを管理する Model Serviceに データを格納
• • • • •
• • • WheelColliderのタイヤ摩擦係数を0にすること で、独自のタイヤモデルを適用できる
• • • WheelColliderのタイヤ摩擦係数を0にすること で、独自のタイヤモデルを適用できる
𝒚 = 𝑫 𝒔𝒊𝒏[𝑪 𝒂𝒓𝒄𝒕𝒂𝒏 𝑩𝒙 − 𝑬 𝑩𝒙 − 𝒂𝒓𝒄𝒕𝒂𝒏 𝑩𝒙 ]
• • • • • • •
① LiDAR情報とメッシュ をUnity → RGLに転送 ② ノイズ適用、 レイトレ点群作成、 データ整形 ③ 点群データを RGL → Unityに転送 VisualizeとPublish ROS2
① LiDAR情報とメッシュ をUnity → RGLに転送 ② ノイズ適用、 レイトレ点群作成、 データ整形 ③ 点群データを RGL → Unityに転送 VisualizeとPublish ROS2
① LiDAR情報とメッシュ をUnity → RGLに転送 ② ノイズ適用、 レイトレ点群作成、 データ整形 ③ 点群データを RGL → Unityに転送 VisualizeとPublish ROS2
① LiDAR情報とメッシュ をUnity → RGLに転送 ② ノイズ適用、 レイトレ点群作成、 データ整形 ③ 点群データを RGL → Unityに転送 VisualizeとPublish ROS2
• • • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • •
TIER IVではレイトレLiDARを使用 • • • • • • • • • • • • • • • •
• • • • •
𝐼𝑛𝑡𝑟𝑖𝑠𝑖𝑐 𝑝𝑎𝑟𝑎𝑚𝑒𝑡𝑒𝑟𝑠 = (𝑓𝑥 𝑓𝑦 𝑐𝑥 𝑐𝑦 ) • • • 𝐷𝑖𝑠𝑡𝑜𝑟𝑡𝑖𝑜𝑛 𝑐𝑜𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑠 = (𝑘1 𝑘2 𝑝1 𝑝2 𝑘3 ) • • •
• • •
• • • •
• • • • MGRS座標系で原点オフセット
• • •
• • • • • •
3Dモデルから点群を作成
• • • • • • •
*.OSMのParserを通して AWSIMにwaypointを作成
• • •
• • • • • • •
ros-sharp 通信方式 ROS-TCP-Connector ros2-for-unity Ros bridge 独自TCPプロトコル ROS2 native C#/Msg Generator C#/Msg Generator Msg Generator ライセンス Apache 2.0 Apache 2.0 Apache 2.0 ROS1/ROS2 ROS1 ROS1/ROS2 ROS2 siemens Unity technologies Robotec.AI https://github.com/siemens/ros-sharp https://github.com/UnityTechnologies/ROS-TCP-Connector https://github.com/RobotecAI/ros2-forunity カスタムメッセージの追加 開発元 URL
ros-sharp 通信方式 ROS-TCP-Connector ros2-for-unity Ros bridge 独自TCPプロトコル ROS2 native C#/Msg Generator C#/Msg Generator Msg Generator ライセンス Apache 2.0 Apache 2.0 Apache 2.0 ROS1/ROS2 ROS1 ROS1/ROS2 ROS2 siemens Unity technologies Robotec.AI https://github.com/siemens/ros-sharp https://github.com/UnityTechnologies/ROS-TCP-Connector https://github.com/RobotecAI/ros2-forunity カスタムメッセージの追加 開発元 URL
ros-sharp 通信方式 ROS-TCP-Connector ros2-for-unity Ros bridge 独自TCPプロトコル ROS2 native C#/Msg Generator C#/Msg Generator Msg Generator ライセンス Apache 2.0 Apache 2.0 Apache 2.0 ROS1/ROS2 ROS1 ROS1/ROS2 ROS2 siemens Unity technologies Robotec.AI https://github.com/siemens/ros-sharp https://github.com/UnityTechnologies/ROS-TCP-Connector https://github.com/RobotecAI/ros2-forunity カスタムメッセージの追加 開発元 URL
AWSIMで使用 ros-sharp 通信方式 ROS-TCP-Connector ros2-for-unity Ros bridge 独自TCPプロトコル ROS2 native C#/Msg Generator C#/Msg Generator Msg Generator ライセンス Apache 2.0 Apache 2.0 Apache 2.0 ROS1/ROS2 ROS1 ROS1/ROS2 ROS2 siemens Unity technologies Robotec.AI https://github.com/siemens/ros-sharp https://github.com/UnityTechnologies/ROS-TCP-Connector https://github.com/RobotecAI/ros2-forunity カスタムメッセージの追加 開発元 URL
using UnityEngine;
public class HellowWorldPublisher: MonoBehaviour
{
void Start()
{
var stringPublisher = SimulatorROS2Node.CreatePublisher<std_msgs.msg.string>(“hello topic”);
stringPublisher.Publish(“hello world”);
}
}
using UnityEngine;
public class HellowWorldPublisher: MonoBehaviour
{
void Start()
{
var stringPublisher = SimulatorROS2Node.CreatePublisher<std_msgs.msg.string>(“hello topic”);
stringPublisher.Publish(“hello world”);
}
}
最小のコードはたった2行!
LTE roter CP Trans OD perception OD perception NW Switch SUB ECU NW Switch OD perception Signage ECU OD perception NW Switch Outer Speaker ECU SUB ECU FOA ECU Display NW Switch NW Switch
• • • • • • Simulated data of a Velodyne Puck in a small room using Unity Sensor SDK https://www.youtube.com/watch?v=ZXzTvtxx1bw&t=45s
• • • • • Unity SystemGraph: Mechatronics systems simulation https://www.youtube.com/watch?v=ZXzTvtxx1bw&t=45s
• Examples : Cut-In • https://releases.asam.net/OpenSCENARIO/1.0.0/ASAM_OpenSCENARIO_BS-1-2_User-Guide_V1-0-0.html • • • • • Examples : Double Lane Changer https://releases.asam.net/OpenSCENARIO/1.0.0/ASAM_OpenSCENARIO_BS-1-2_User-Guide_V1-0-0.html