つくばチャレンジ説明会 2020-08-01
Virtual Tsukuba Challenge
シミュレー タ
吉田智章
千葉工業大学 未来ロボット技術研究センター
つくばチャレンジ説明会 2020-08-01
VTCの紹介
•問題意識
•構成
•シミュレートするもの
•想定ユースケース
•対象としないこと
•今後の予定
つくばチャレンジ説明会 2020-08-01
問題意識
リアルワールドは難しい
なぜ難しいのか?
実験室/シミュレータで代用できない本質は?
つくばチャレンジ説明会 2020-08-01
問題意識 リアルワールドの難しさ
•環境が複雑
•何が起こるかわからない
•実物を扱う
•再現性を確保しにくい
•試行回数を増やしにくい
つくばチャレンジ説明会 2020-08-01
問題意識 リアルワールドの難しさ
•環境が複雑
•何が起こるかわからない
•実物を扱う
•再現性を確保しにくい
•試行回数を増やしにくい
人間の想像力の限界
つくばチャレンジ説明会 2020-08-01
問題意識 リアルワールドの難しさ
•環境が複雑
•何が起こるかわからない
•実物を扱う
•再現性を確保しにくい
•試行回数を増やしにくい
人間の想像力の限界
実際に試してみる
という手法を制限
つくばチャレンジ説明会 2020-08-01
問題意識 リアルワールドの難しさ
•環境が複雑
•何が起こるかわからない
•実物を扱う
•再現性を確保しにくい
•試行回数を増やしにくい
人間の想像力の限界
実際に試してみる
という手法を制限
十分に複雑な環境
過去につくばチャレンジで経験した失敗事例を再現する能力
これらを備えたシミュレータなら
システム開発の役に立つのではないか
つくばチャレンジ説明会 2020-08-01
VTC利用シーン
• 3D-LIDAR:
Velodyne VLP-16
• IMU:
Xsens MTi-3
• Drive Units:
fuRo 独自開発
8
Drive Units
(Motor Encoders)
IMU
3D-LIDAR
Laptop
Computer
シミュレータPC
ロボット搭載PC
つくばチャレンジ説明会 2020-08-01
動作環境
シミュレータ側PC
• Windows10
• 速いCPU
Core i7 7700HQ等で確認
• Unreal Engine4 が動く速いGPU
GTX1050, GTX1060等で確認
• 十分なRAM
• 有線LAN
ロボット側PC
• 基本的にはロボットに乗せる
PCそのものが良い
• Linux
Ubuntu 18.04, 20.04 等で確認
• 実機用Velodyne受信機
• ROS Bridge [cage_ros_stack]
ROS melodic, noeticで確認
• もしくはCageClient ライブラリを使った
仮想車両インタフェース
つくばチャレンジ説明会 2020-08-01
VTCがシミュレートするもの
確認走行区間を模擬した環境
PhysXで駆動する
車輪型移動ロボット
目標回転数
回転数
加速度
角速度
スキャンベクトル生成姿勢補間/トレース
PhysX Scene
PhysX Visual Debugger
Scan方位/時刻列Velodyne相当のプロトコル 距離/方位/時刻列
VeloView
点群
Intensity付き3D Lidar (VLP16相当)
つくばチャレンジ説明会 2020-08-01
VTCがシミュレートするもの
必ずしも水平な平面ではない地面 複雑な形状の植生 市役所内と歩行者
つくばチャレンジ説明会 2020-08-01
つくばチャレンジ説明会 2020-08-01
rvizで可視化しながら操縦
つくばチャレンジ説明会 2020-08-01
VTCが想定するユースケース
•各種上位アルゴリズムの検討検証デバッグ
• 経路走行, 障害物回避, 位置推定, 地図なし走行
•確認走行区間ナビゲーションシステム開発
• 地図作成, 走行経路指示作成, 動作確認
• これらワークフローの改善
•視野や分解能の異なるLidarでの挙動変化の検証
•オドメトリだけじゃ無理、という事実の体験
• (多様な環境での検証)
つくばチャレンジ説明会 2020-08-01
VTCでできないこと/対象としないこと
•実世界での現象を扱うための
具体的なパラメータ決定
• 速度指示に対する車体の挙動を精密に観測したい
• 物体検出のためのLidar Intensityの閾値を決定したい
•実世界を走るための地図等の構築
• 確認走行区間を走るためのWaypoint座標列を決めたい
• Lidar点群を記録して実世界走行用地図構築したい
• 短い周期の応答を必要とする制御等
• 30~100Hz程度で動作するので、例えば1KHzで何かしたい場合そのままでは無理
つくばチャレンジ説明会 2020-08-01
今後の予定
• 国土地理院基盤地図を利用した環境
• そのワークフロー
• ロボット位置の緯度経度取得
• CLIの拡充
• その他センサの実装
国土地理院基盤地図情報を利用して作成中の環境のスクリーンショット
[国土地理院コンテンツ利用規約に基づく表示]
出典: 国土地理院ウェブサイト(https://fgd.gsi.go.jp/download/menu.php)
つくばチャレンジ説明会 2020-08-01
付録
つくばチャレンジ説明会 2020-08-01
公開ページURL
• VTC 本体
https://github.com/furo-org/VTC
• ROS 対応
https://github.com/furo-org/cage_ros_stack
• クライアントライブラリ
https://github.com/furo-org/CageClient
• UE4用移動ロボット関連機能プラグイン
https://github.com/furo-org/CagePlugin
• UE4用ZeroMQプラグイン
https://github.com/furo-org/ZMQUE
• UE4用PhysX Articulation プラグイン
https://github.com/yosagi/PxArticulationLink
つくばチャレンジ説明会 2020-08-01
参考文献
• 吉田 智章, 原 祥尭: "移動ロボットシミュレータにおける 3D Lidar
の受光強度シミュレーション", ROBOMECH 2020.
• 吉田 智章, 入江 清, 原 祥尭, 鈴木 太郎, 西村 健志, 大和 秀彰, 友納
正裕: "つくばチャレンジ2019の事前検証が困難な環境のための
移動ロボットシミュレータ", SI 2019.
• 吉田 智章, 入江 清, 原 祥尭, 西村 健志: "Unreal Engine4 を利用し
たつくばチャレンジシミュレータ", ROBOMECH 2019.
つくばチャレンジ説明会 2020-08-01
参考動画URL
• VTC (Virtual Tsukuba Challenge) with lidar intensity
enabled (x2)
https://youtu.be/gb9t7RFmgpc
• Lidar simulation with intensity response used in VTC
(Virtual Tsukuba Challenge) [short version]
https://youtu.be/1deEoRJNBL4
つくばチャレンジ説明会 2020-08-01
シミュレータの限界/制限
•PCの能力に起因
• 同時に運用するLidar個数 (PCの能力によるが、VLP16数台か?)
• 初回ヒット以降の光線追跡はない
• 世界の更新頻度が30~100Hz程度(PCの能力による)
•PhysXの実装に起因
• リンク質量比を大きくできない
• タイヤ形状(現在は球)
• タイヤ駆動トルクを大きくできない
• これらにより実機の正確な表現は難しい
• 脚型はおそらく無理 PhysXで駆動する
車輪型移動ロボット
目標回転数
回転数
加速度
角速度
つくばチャレンジ説明会 2020-08-01
シミュレータの限界/制限
•リファレンス不足に起因
• 地面の形状
• その他環境形状や物体配置の精度
•必要な手間に起因
• 各種センサ実装
• カメラ, バンパ, GPS, 超音波, Velodyne以外のLidarのプロトコル
• 複数台ロボットの同時運用
• 環境中の物体のバリエーション
• 確認走行区間外の領域の環境
• その他つくばチャレンジ以外の環境
• その他
• センサ応答の精度及び誤差分布
• Windowsのみ。Linuxではまだ実用的には動かない。
つくばチャレンジ説明会 2020-08-01
今のところVTCでできないこと
•多様なロボット
• Velodyne Lidar以外のセンサ : その他のLidar, カメラ, GNSS, 距離画像カメラなど
• 小型の車輪型以外のロボット
• 複数のロボット共存
•より複雑な環境
• つくばチャレンジコース全体、過去のつくばチャレンジ環境
• 信号機や交通標識
• 自転車、自動車、遊んでいる子供、ベビーカー
• 降雨、落ち葉、水たまり
•非インタラクティブなユースケース
• DRLへの応用
• 自動テストへの組み込み
• 複数インスタンスの同時起動
つくばチャレンジ説明会 2020-08-01
カスタマイズと拡張
• ロボットを変えたい
• Unreal Editorで以下編集できます (PhysXでうまく動くかは別問題)
• メッシュ入れ替え
• Lidar位置変更、Lidar追加
• タイヤ位置変更、タイヤ径変更
• 本体、タイヤ質量変更
• ROS以外から操作したい
• CageClient ライブラリを利用し、実機の代わりにシミュレータと通信するレイヤを用意すれば
できます。あまり難しくないはず。
• 環境を編集したい
• Unreal Editorで好きに編集できます
• 新しい環境を作りたいor使いたい
• UE4で扱えるマップはCollisionの設定が適切ならば基本的には使えます
つくばチャレンジ説明会 2020-08-01
カスタマイズと拡張
• Velodyne以外のLidar (URG等)
• データ送信コンポーネントをC++で書く必要があります。スキャン部分は大
抵のLidarならば現在の実装を再利用できます。
• Lidar以外のセンサ
• C++ or BluePrint で新規実装が必要です。
• カメラ
• 途中まで検討し、通信プロトコルをどうするかで止まってます
• GNSS
• 誤差のない緯度と経度を出すだけならもう間もなく
• バンパ
• おそらく簡単に実装できます。データ送信部に一部C++が必要かもしれません。
• その他環境にあるもの(車などの移動物体、信号機等)
• おそらくBlue Printでも実装できるでしょう。
• その他のシミュレータとの互換性 (urdfとか?)
• あまり簡単ではなさそうです
つくばチャレンジ説明会 2020-08-01
つくばチャレンジで見かける失敗要因
⚫ 自己位置推定
⚫ 開けた場所で乏しい特徴により自己位
置推定失敗
⚫ 大きな角速度で旋回しスキャンが歪ん
で位置推定失敗
⚫ 群衆に囲まれて自己位置推定失敗
⚫ 落ち葉等でスリップして自己位置推定
失敗
⚫ 走行
⚫ 経路走行パラメータの問題でスピンや
振動的挙動が発生し失敗
⚫ 縁石に乗り上げて失敗
⚫ 落ち葉等でスリップして自己位置推定
失敗
⚫ 地図データ
⚫ 古いバージョンの地図をロードして失
敗
⚫ 狭い環境において適切に経路が引けて
なくて走行不能
⚫障害物
⚫ Lidar至近に障害物が入り見えなくなり衝突
⚫ 障害物で停止する機能しか作ってなく、
静止障害物に正対して失敗
⚫ 障害物回避経路が障害物至近に設定され衝突
⚫ 障害物に接近しすぎて回避経路を生成できず
失敗
⚫ 回避経路が歩道外に設定され失敗
⚫システム, オペレーション
⚫ (メモリ周りの)バグでクラッシュ
⚫ システムの一部の起動を忘れ走行不能
⚫ 古いバージョンの地図をロードして失敗
⚫ ノートPCがバッテリ駆動でCPUクロックが低
下し、処理間に合わず
⚫ 振動でコネクタの接続不良が発生
⚫ センサが故障
⚫ 直射日光でセンサが動作不良
⚫ 雨でセンサデータのノイズが増える
つくばチャレンジ説明会 2020-08-01
VTCが想定する主な失敗要因
⚫ 自己位置推定
⚫ 開けた場所で乏しい特徴により自己位
置推定失敗
⚫ 大きな角速度で旋回しスキャンが歪ん
で位置推定失敗
⚫ 群衆に囲まれて自己位置推定失敗
⚫ 落ち葉等でスリップして自己位置推定
失敗
⚫ 走行
⚫ 経路走行パラメータの問題でスピンや
振動的挙動が発生し失敗
⚫ 縁石に乗り上げて失敗
⚫ 落ち葉等でスリップして自己位置推定
失敗
⚫ 地図データ
⚫ 古いバージョンの地図をロードして失
敗
⚫ 狭い環境において適切に経路が引けて
なくて走行不能
⚫障害物
⚫ Lidar至近に障害物が入り見えなくなり衝突
⚫ 障害物で停止する機能しか作ってなく、
静止障害物に正対して失敗
⚫ 障害物回避経路が障害物至近に設定され衝突
⚫ 障害物に接近しすぎて回避経路を生成できず
失敗
⚫ 回避経路が歩道外に設定され失敗
⚫システム, オペレーション
⚫ (メモリ周りの)バグでクラッシュ
⚫ システムの一部の起動を忘れ走行不能
⚫ 古いバージョンの地図をロードして失敗
⚫ ノートPCがバッテリ駆動でCPUクロックが低
下し、処理間に合わず
⚫ 振動でコネクタの接続不良が発生
⚫ センサが故障
⚫ 直射日光でセンサが動作不良
⚫ 雨でセンサデータのノイズが増える現状のままではできないが、多少の
作業で対応できると思われる項目
つくばチャレンジ説明会 2020-08-01
システム構成例 (実機)
28
LIDAR
UDP
IMU
UART-USB
Motor,
Encoder
Motor,
Encoder
USB-CAN
(CANopen)
Linux PC
LIDAR
Handler
IMU
Handler
Vehicle
Controller
Localizer
3D Cloud
Map
Obstacle
Detector
Path-Motion
Planner
Waypoint
Route
Behavior
Script
scan3d
imu_motion wheel_speed
odom
cmd_vel
est_pose
obst
launch
つくばチャレンジ説明会 2020-08-01
システム構成例 (VTC利用)
29
LIDAR
Ethernet
IMU
UART-USB
Motor,
Encoder
Motor,
Encoder
USB-CAN
(CANopen)
Linux PC
LIDAR
Handler
IMU
Handler
Vehicle
Controller
Localizer
3D Cloud
Map
Obstacle
Detector
Path-Motion
Planner
Waypoint
Route
Behavior
Script
scan3d
imu_motion wheel_speed
odom
cmd_vel
est_pose
obst
launch
Cage Client Library
もしくは ROS Bridge
UDP
ZeroMQ
(Json)

VTC: Virtual Tsukuba Challenge