Suche senden
Hochladen
Jetson活用セミナー ROS2自律走行実現に向けて
•
4 gefällt mir
•
2,319 views
Fixstars Corporation
Folgen
2021年11月4日開催「Jetson活用セミナー ROS2自律走行実現に向けて ~自律移動ロボット用-自己位置推定のCUDA高速化~」セミナー資料です
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 80
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
Visual slam
Visual slam
Takuya Minagawa
Cartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAM
Yoshitaka HARA
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
Yoshitaka HARA
20190307 visualslam summary
20190307 visualslam summary
Takuya Minagawa
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介
miyanegi
Empfohlen
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
Visual slam
Visual slam
Takuya Minagawa
Cartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAM
Yoshitaka HARA
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
Yoshitaka HARA
20190307 visualslam summary
20190307 visualslam summary
Takuya Minagawa
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介
miyanegi
SLAMチュートリアル大会資料(ORB-SLAM)
SLAMチュートリアル大会資料(ORB-SLAM)
Masaya Kaneko
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
Masaya Kaneko
ORB-SLAMの手法解説
ORB-SLAMの手法解説
Masaya Kaneko
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
Yoshitaka HARA
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
Hideki Takase
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Masaya Kaneko
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Takuya Azumi
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Kitsukawa Yuki
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
HitoshiSHINABE1
ORB-SLAMを動かしてみた
ORB-SLAMを動かしてみた
Takuya Minagawa
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
Yoshitaka HARA
Optimizer入門&最新動向
Optimizer入門&最新動向
Motokawa Tetsuya
LiDAR-SLAM チュートリアル資料
LiDAR-SLAM チュートリアル資料
Fujimoto Keisuke
G2o
G2o
Fujimoto Keisuke
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
MobileRoboticsResear
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
Mori Ken
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
UnityとROSの連携について
UnityとROSの連携について
UnityTechnologiesJapan002
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
Fixstars Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
Weitere ähnliche Inhalte
Was ist angesagt?
SLAMチュートリアル大会資料(ORB-SLAM)
SLAMチュートリアル大会資料(ORB-SLAM)
Masaya Kaneko
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
Masaya Kaneko
ORB-SLAMの手法解説
ORB-SLAMの手法解説
Masaya Kaneko
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
Yoshitaka HARA
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
Hideki Takase
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Masaya Kaneko
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Takuya Azumi
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Kitsukawa Yuki
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
HitoshiSHINABE1
ORB-SLAMを動かしてみた
ORB-SLAMを動かしてみた
Takuya Minagawa
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
Yoshitaka HARA
Optimizer入門&最新動向
Optimizer入門&最新動向
Motokawa Tetsuya
LiDAR-SLAM チュートリアル資料
LiDAR-SLAM チュートリアル資料
Fujimoto Keisuke
G2o
G2o
Fujimoto Keisuke
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
MobileRoboticsResear
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
Mori Ken
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
UnityとROSの連携について
UnityとROSの連携について
UnityTechnologiesJapan002
Was ist angesagt?
(20)
SLAMチュートリアル大会資料(ORB-SLAM)
SLAMチュートリアル大会資料(ORB-SLAM)
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
ORB-SLAMの手法解説
ORB-SLAMの手法解説
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
ORB-SLAMを動かしてみた
ORB-SLAMを動かしてみた
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
Optimizer入門&最新動向
Optimizer入門&最新動向
LiDAR-SLAM チュートリアル資料
LiDAR-SLAM チュートリアル資料
G2o
G2o
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
UnityとROSの連携について
UnityとROSの連携について
Mehr von Fixstars Corporation
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
Fixstars Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
Fixstars Corporation
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
Fixstars Corporation
株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズの会社説明資料(抜粋)
Fixstars Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
Fixstars Corporation
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
Fixstars Corporation
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
Fixstars Corporation
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
Fixstars Corporation
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
Fixstars Corporation
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
Fixstars Corporation
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
Fixstars Corporation
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
Fixstars Corporation
第8回社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 結果発表会
Fixstars Corporation
第8回社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第1位 taiyo
Fixstars Corporation
第8回社内プログラミングコンテスト 第2位 fy999
第8回社内プログラミングコンテスト 第2位 fy999
Fixstars Corporation
Mehr von Fixstars Corporation
(20)
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズの会社説明資料(抜粋)
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
第8回社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第2位 fy999
第8回社内プログラミングコンテスト 第2位 fy999
Jetson活用セミナー ROS2自律走行実現に向けて
1.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation Jetson活用セミナー ROS2自律走行実現に向けて 自律移動ロボット用-自己位置推定のCUDA高速化
2.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 本日のアジェンダ • フィックスターズ会社紹介 • 会社概要と各種サービス • テクニカルセッション • ros1_brigeを用いた搬送ロボットメカナムローバーのROS2対応 • 自己位置推定アルゴリズムamclの高速化(プロファイリング、CUDA化) • Q&A 2
3.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 発表者紹介 • 山田真介 (Shinsuke Yamada) • ディレクター • 博士 (工学) • 主に自動運転関係のプロジェクトマネジメントを担当 • 深層学習における量子化 • 車両運動制御プログラムの高速化 • 坂本浩平 (Kohei Sakamoto) • シニアエンジニア • プロトタイプ自律ロボットのアルゴリズム開発や CUDA 高速化、自動運転システム の構築を担当 • 高速化に興味 • アルゴリズム/SIMD/CUDA/高速コード実装 3
4.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation フィックスターズのご紹介
5.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 5 フィックスターズは、コンピュータの性能を最大限に引き出し大量データの高速処理を実現する、 高速化のエキスパート集団です。 低レイヤ ソフトウェア技術 アルゴリズム 実装力 各産業・研究 分野の知見 フィックスターズの強み
6.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation ソフトウェア高速化サービス概要 6 お客様のソースコードをご提供いただき、 ソフトウェアの最適化やアルゴリズムの改良を行い高速化したコードをお返しします。 当社 お客様 オリジナルソースコードのご提供 高速化したソースコード コンサルティング 高速化 サポート 性能評価 ボトルネックの特定 アルゴリズムの改良・開発 ハードウェアへの最適化 レポート作成 レポートやコードへのQ&A 実製品への組込み支援
7.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 7 ソフトウェア高速化サービス領域 大量データの高速処理がお客様の製品競争力の源泉となる、 様々な領域でソフトウェア開発・高速化サービスを提供しています。 ・NAND型フラッシュメモリ向けファー ムウェア開発 ・次世代AIチップ向け開発環境基盤開発 Semiconductor ・デリバティブシステムの高速化 ・HFT(アルゴリズムトレード)の高速化 Finance ・自動運転の高性能化、実用化 ・次世代パーソナルモビリティの研究開発 Mobility ・ゲノム解析の高速化 ・医用画像処理の高速化 ・AI画像診断システムの研究開発 Life Science ・Smart Factory化支援 ・マシンビジョンシステムの高速化 Industrial
8.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Fixstars Autonomous Technologies 8 高速化技術のフィックスターズと豊田通商グループのネクスティ エレクトロニクスによる合弁会社 並列化・最適化・機械学習・コンピュータビジョン技術を駆使し、自動運転社会の実現を加速する 会社名: Fixstars Autonomous Technologies 設立:2018年2月1日 資本金:3,000万円 (株)フィックスターズ 66.6% (株)ネクスティ エレクトロニクス 33.4% 所在地:東京都港区芝浦3-1-1 代表取締役会長 : 蜂須賀 利幸 代表取締役社長:羽田 哲
9.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 画像処理・アルゴリズム開発サービス 9 • お客様の課題 • 高度な画像処理、深層学習等のアルゴリズム開発を行える人材が社内に限られている • 考案中のアルゴリズムで機能要件は満たせそうだが、ターゲット機器上で性能要件まで クリアできるか不安 • 研究開発の成果が製品化にうまく結びつかない • 弊社の支援内容 • 課題に応じたアルゴリズム調査 • 深層学習ネットワーク精度改善、推論高速化手法調査 • 論文調査、実装 https://www.cs.toronto.edu/~frossard/post/vgg16/
10.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation AI・深層学習関連サービス 10 • ディープラーニングの包括的開発技術 • ネットワーク設計からターゲットデバイスでの高速化のノウハウ • 大規模システムからエッジコンピューティングまでの開発実績 ネットワーク設計 データの前処理、データ拡張 精度改善 分散処理による学習高速化 各種DLフレームワーク クラウド・サーバ エッジ モデル圧縮 - 量子化 - 枝刈り - 蒸留 ターゲットデバイスへの ポーティング及び推論高速化 ◼ Visconti, ARM, GPU, DSP ◼ SIMD,NEON,CUDA,TensorRT
11.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation GPU向け高速化サービス 11 • お客様の課題 • GPU 高速化の知見がない • 自力で GPU に乗せてみたものの望む性能が出ない • 弊社の支援内容 • GPU 高速化に関するコンサルティング • ボトルネック調査、GPU プログラムの高速化 • CPU/GPU が混在するヘテロジニアス環境での最適化 10~150 倍の 高速化事例あり
12.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation AGV / AMR 開発における課題と当社サービス 12 量産機を見越して… • 製造原価を抑えたい • 組込み規模の限られた計算資源の中で 性能を出したい • 複数台のロボットにも対応したい 後継機に向けて… • 実製品向けの開発プラットフォームに 変更したい • 計算資源はそのまま性能を落とさずに 機能追加したい • 計算機資源の選定 • ロボット試作品の組み上げ • ロボットの動作確認・評価 • ロボット開発プラットフォームの適用・移植 • アルゴリズム開発・改良 • 処理時間短縮・高速化 開発課題 当社サービス 本セミナーで紹介
13.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation テクニカルセッション
14.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation 1. はじめに
15.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 1. はじめに 「ROS2上でナビゲーション処理を行う車両型ロボット開発環境を整備し、ROS2のナ ビゲーション処理を高速化したい」という動機から、今回、以下のような取り組みを行 った。 • メカナムローバーのROS2対応 • ros1_bridgeによってROS1資産を活用しながらのROS2対応 • 自己位置推定パッケージamclのCUDA高速化 • ROS2ノードのプロファイリング(perf、NVIDIA Nsight Systems) • amclのCUDA実装およびプロファイリング(nvprof、NVIDIA Visual Profiler) 15
16.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation 2. メカナムローバーの ROS2対応
17.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2. メカナムローバーのROS2対応 アウトライン • 2.1 メカナムローバーとは • 2.2 メカナムローバーのROS対応状況 • 2.3 メカナムローバーのROS2対応 17
18.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.1 メカナムローバーとは • ヴイストン株式会社が販売する4輪のメカナムホイールを搭載した全方位移動台車ロ ボット[1] • 可搬重量約40kg、最高速度1.3m/s • 2021/11/1時点でROS1に対応 • 今回の一連の取り組みではメカナムローバーVer2.0を用いた 18 [1] https://www.vstone.co.jp/products/wheelrobot/ver2.0.html
19.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.1 メカナムローバーとは • ハード構成は以下の通り(購入時オプションよって構成が異なる)。 19 PC Arduino互換 CPUボード モーター ドライバ 2D LiDAR DCモーター エンコーダ [2] https://www.hokuyo-aut.co.jp/search/single.php?serial=17 USB USB I2C URG-04LX-UG01[2] 測距範囲:0.02~5.6m 走査角度:240° メカナムローバー本体
20.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.1 メカナムローバーとは • LiDARをVelodyne VLP-16に変更した • Jetson AGX Xavierを用いた 20 PC Arduino互換 CPUボード モーター ドライバ 3D LiDAR DCモーター エンコーダ [3] https://velodynelidar.com/products/puck Ethernet USB I2C メカナムローバー本体 Velodyne VLP-16[3] 測距範囲:0.5~100m 水平FOV:360° 垂直FOV:30°(±15°) ✓ 測距範囲を広くし、広域のフィールドで も自己位置推定を行いやすくしたい ✓ 今後、3D SLAM検討もできるようにしたい Jetson AGX Xavier
21.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.2 メカナムローバーのROS対応状況 • 2021/11/1時点でROS1のみサポートされている • 公式で動作検証されているナビゲーション時のROS1ノード構成は以下の通り。 21 amcl urg_node pub_odom move_base dwa_local_ planner map odom rover_odo rover_twist map_server scan odom amcl_pose 経路生成、走行制御 自己位置推定 地図配信 2D LiDAR キャプチャ オドメトリ 変換
22.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.2 メカナムローバーのROS対応状況 • 2021/11/1時点でROS1のみサポートされている • 公式で動作検証されているナビゲーション時のROS1ノード構成は以下の通り。 22 amcl urg_node pub_odom move_base dwa_local_ planner map odom rover_odo rover_twist map_server scan odom amcl_pose geometry_msgs/Twistから nav_msgs/Odometryに変換
23.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.2 メカナムローバーのROS対応状況 • Velodyne VLP-16に変更したことで以下のようなノード構成となった 23 amcl velodyne_driver pub_odom move_base dwa_local_ planner map odom rover_odo rover_twist map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan velodyne_packets scan points_raw 経路生成、走行制御 自己位置推定 地図配信 オドメトリ 変換 3D LiDARキャプチャ 3D点群、2Dスキャン変換
24.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.2 メカナムローバーのROS対応状況 • Velodyne VLP-16に変更したことで以下のようなノード構成となった 24 amcl pub_odom move_base dwa_local_ planner map odom rover_odo map_server odom amcl_pose velodyne_packets scan points_raw velodyne_driver velodyne_pointcloud pointcloud_to_ laserscan rover_twist
25.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.2 メカナムローバーのROS対応状況 • 速度指令(rover_twistトピック)からモーター制御指令までの処理の流れ 25 PC Arduino互換 CPUボード モーター ドライバ DCモーター エンコーダ ① rover_twistトピックを配信 ②(ROS1の) rover_twistトピックを 購読し、モータードライバを介して 制御指令を出す ※Arduinoのスケッチ実装 rover_twist ③モーターを回転させる メカナムローバー本体
26.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.2 メカナムローバーのROS対応状況 • エンコーダ情報からオドメトリ(rover_odoトピック)を算出する処理の流れ 26 PC Arduino互換 CPUボード モーター ドライバ DCモーター エンコーダ ③rover_odoトピックを購読 ④pub_odomノードでodomトピックに変換 ②モータードライバ経由で得られる モーター回転数からオドメトリを計算し、 (ROS1の)rover_odoトピックを配信 ※Arduinoのスケッチ実装 rover_odo ①モーター回転数を取得 メカナムローバー本体
27.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 今回、以下のような方針でROS2対応を行った • メカナムローバーのROS2対応のファーストステップとして「amclを用いた自己位 置推定まで」を行う(=ナビゲーションまではやらない) • ros1_bridge[4]を用いることで既存のROS1資産を使いつつ、センサ関連や自己位 置推定処理をROS2化する • 自己位置推定に関連する主な処理をROS2 Galactic上で動作させる • Galacticより前のROS2ディストリビューションでは使いたい機能が使えないことが 多かったため 27 [4] https://github.com/ros2/ros1_bridge
28.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 各ノードが動作するROS1、ROS2ディストリビューション • A:ROS1 Noetic、B:ROS2 Foxy、C:ROS2 Galactic 28 amcl velodyne_driver pub_odom map odom rover_odo map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan scan ros1_bridge initial_pose rviz2 velodyne_packets points_raw メカナムローバー内蔵のArduinoスケッチ実装 はROS1のままで動かす A C B
29.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 各ノードが動作するROS1、ROS2ディストリビューション • A:ROS1 Noetic、B:ROS2 Foxy、C:ROS2 Galactic 29 amcl velodyne_driver pub_odom map odom rover_odo map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan scan ros1_bridge initial_pose rviz2 velodyne_packets points_raw Velodye関連のROS2パッケージはROS2 Foxy対応済なのでFoxyで動かす A C B
30.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 各ノードが動作するROS1、ROS2ディストリビューション • A:ROS1 Noetic、B:ROS2 Foxy、C:ROS2 Galactic 30 amcl velodyne_driver pub_odom map odom rover_odo map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan scan ros1_bridge initial_pose rviz2 velodyne_packets points_raw ROS1、ROS2間の通信の相互変換 自己位置推定関連は ROS2 Galiacticで動かす A C B
31.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 各ノードが動作するコンピュータ • A:Jetson AGX Xavier、B:ノートPC(Intel CPU) 31 amcl velodyne_driver pub_odom map odom rover_odo map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan scan ros1_bridge initial_pose rviz2 velodyne_packets points_raw Jetson AGX Xavier 可視化用ノートPC A B
32.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 各ノードが動作するコンピュータ • A:Jetson AGX Xavier、B:ノートPC(Intel CPU) 32 amcl velodyne_driver pub_odom map odom rover_odo map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan scan ros1_bridge initial_pose rviz2 velodyne_packets points_raw rviz2による可視化及び 初期位置指定を行うため に別PCを用意 可視化用ノートPC A B
33.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 • 複数ディストリビューションがあるためDockerコンテナ化した • A:ROS1 Noetic、B:ROS2 Foxy、C:ROS2 Galactic、D:ROS2 Galactic(CUDA) 33 amcl velodyne_driver pub_odom map odom rover_odo map_server odom amcl_pose velodyne_pointcloud pointcloud_to_ laserscan scan ros1_bridge initial_pose rviz2 velodyne_packets points_raw A C B D
34.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 このDocker環境を構築するにあたり、以下のようなハマりポイントがあった • 扱うDockerコンテナが多いため手順が煩雑 • 背景:様々なROS1、ROS2ディストリビューションが混在するため • 対応:docker-composeを使うことで簡単に起動できるようした • Jetson AGX Xavier、ノートPC間でROS2の通信ができない • 課題 • 今回のハードウェア構成では、有線LAN、Wi-Fiといった複数のNICを同時に使用す るが、 CycloneDDS側で複数NICを適切にハンドリングしてくれない • 対応 • CycloneDDS設定で明示的にNICを設定することで対応[5] 34 [5] http://www.robotandchisel.com/2020/08/12/cyclonedds/ export CYCLONEDDS_URI="<CycloneDDS><Domain><General><NetworkInterfaceAddress>wlan0</NetworkInterfaceAddress></General></Domain></CycloneDDS>" 設定例(wlan0となっている箇所はネットワークインターフェース名)
35.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 Jetson AGX Xavier上で動作するCUDA、ROS2 Galactic環境構築 • 課題 • ROS2公式のDockerイメージ (ros:galactic)[6]だとROS2 Galacticは使えるが、 CUDAを使えない • NGC(NVIDIA GPU CLOUD)配布のDockerイメージ(nvcr.io/nvidia/l4t-base)[7] だとCUDAは使えるが、Ubuntu 18.04ベースであるため、ROS2 Galacticをソースコ ードから入れる必要あり[8] 35 [6] https://hub.docker.com/_/ros [7] https://ngc.nvidia.com/catalog/containers/nvidia:l4t-base [8] https://docs.ros.org/en/galactic/Installation/Ubuntu-Development-Setup.html
36.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.3 メカナムローバーのROS2対応 Jetson AGX Xavier上で動作するCUDA、ROS2 Galactic環境構築 • 今回の対応 • NGC配布Dockerイメージ(nvcr.io/nvidia/l4t-base)をベースにROS2 Galacticを インストールしたDockerイメージ(dustynv/ros:galactic-ros-base-l4t-r32.6.1) [9]を活用 • amclおよび依存ROS2パッケージをソースコードからビルド • ROS2 Galacticをソースコードからインストールしている都合上、aptでROS2 Galacticパッケージのインストールができないため 36 [9] https://github.com/dusty-nv/jetson-containers
37.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 2.4 実機デモ 37
38.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation 3. amclパッケージの CUDA高速化
39.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3. amclパッケージのCUDA高速化 アウトライン • 3.1 背景 • 3.2 amcl とは • 3.3 amcl のプロファイリング • 3.4 amcl の CUDA 化による高速化 39
40.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.1 背景 • ナビゲーション処理に関わるROS2パッケージをCUDA実装することで、処理の高速 化およびCPU負荷低減を実現したい • 以下の理由から今回はamclパッケージ(自己位置推定処理)[10]に着目した • パーティクル毎に処理が独立しており、並列度が高く、GPUと相性がよい(amclの アルゴリズム詳細は後述) • GPUにオフロードできれば自己位置推定精度を改善するためにパーティクル数を増や しやすい • navigation2でもGPU、CPU高速化対象アルゴリズムの候補として挙がっている • https://github.com/ros-planning/navigation2/issues/1391 • https://github.com/ros-planning/navigation2/issues/1781 • https://navigation.ros.org/2021summerOfCode/projects/multithreading.html 40 [10] https://github.com/ros-planning/navigation2/tree/galactic/nav2_amcl
41.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.2 amcl とは • Adaptive Monte Carlo Localization • 自己位置推定アルゴリズム • 内界センサ、外界センサの情報からロボットの現在位置を推定する • 特徴 • パーティクルフィルタをベースとしたアルゴリズム • 位置姿勢の候補とその尤度をパーティクルで表現する • パーティクルの散布範囲と数を動的に変更する • 自己位置が不確かな場合大域的リセットを行う 41 赤い点群: パーティクル 外周の点群: LiDAR によるスキャン
42.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.2 amcl とは • amcl のおおまかな処理の流れ 42 パーティクルの初期化 (初期の位置姿勢が取り得る範囲に パーティクルをランダム散布) 予測 (ロボットの移動分を内界センサで取得し、 ノイズを混ぜてパーティクルを移動させる) 更新 (各パーティクルについて、外界センサ情報 との合致度に基づき尤度を更新) 推定 (各パーティクルの情報から 位置姿勢を一意に推定) リサンプリング (尤度の低いパーティクルを除去し、尤度の 大きいパーティクル付近にランダムに散布)
43.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3 amcl のプロファイリング • プロファイリング • 目的のプログラムを分析し、計算時間が大きい箇所を特定する ⇒ amcl の処理のうち、どこを高速化すべきか目星をつける 43 amcl プロファイリング amcl 〇〇[%] 〇〇[%] 〇〇[%] 〇〇[%] 〇〇[%] 重い処理
44.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3 amcl のプロファイリング • 実際に amcl のプロファイリングを実施 • 説明内容 • 3.3.1 プロファイリングの実行環境 • 3.3.2 プロファイリング時のノード構成 • 3.3.3 プロファイリング方法 • 3.3.4 プロファイリング結果 44
45.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.1 プロファイリングの実行環境 • ハードウェア • NVIDIA® Jetson AGX Xavier™ • CPU: ARMv8 Processor rev 0 (v8l)、64bit 8コア • GPU: NVIDIA Volta™, CUDAコア512基 • RAM: 32GB • 動作モード: 30W 8コア • 動作周波数(Max) … CPU: 1.2GHz、GPU: 905 MHz • ソフトウェア • NVIDIA® JetPack SDK 4.6 (L4T 32.6.1) (*) • OS: Ubuntu18.04 • CUDA: 10.2 • コンパイラ: gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 45 (*) JetPack : Jetson用の開発キット.L4T 32.6.1を含む L4T (NVIDIA® Jetson™ Linux Driver Package) : Jetson向けのサポートパッケージ
46.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.1 プロファイリングの実行環境 • ROS2の動作環境 • ROSディストリビューション : ROS2 Galactic • 2021年11月現在の最新バージョン • Dockerコンテナ内にROS2環境を構築 • Linux 18.04 (L4T 32.6.1) 上にROS2 Galacticをビルドしたコンテナ[11]を使用 46 Galactic Geochelone リリース: 2021/5/23 [11] https://github.com/dusty-nv/jetson-containers Jetson AGX Xavier Linux 18.04 (L4T 32.6.1) Docker コンテナ (L4T 32.6.1) ROS2 Galactic ハードウェア ホストOS ゲストOS アプリケーション
47.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.2 プロファイリング時のノード構成 • 以下のノード構成でamclを実行 47 nav2_amcl nav2_map_ server nav2_lifecycle _manager rosbag2 ROS2 Galactic 各種センサ情報、 オドメトリ情報など 地図情報 ステート管理 amclの処理結果の再現性を確保するため、 rosbag2 で記録したデータを入力に使用する
48.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.3 プロファイリング方法 今回実施したプロファイリングの流れ (1) amclノード (ROS2)のビルド・実行 (2) perf[12]、FlameGraph[13]を使用して分析 (3) 分析結果から計算負荷の高い関数を特定する 48 [12] perf … Linuxカーネルで使用可能な性能分析ツール [13] FrameGraph … 性能解析結果を階層図で可視化できるツール https://www.brendangregg.com/flamegraphs.html amcl::funcA1_1 (…) { ……… ; ...... ; ……… ; …………… ; ………… ; } ⇒高速化の余地あり ビルド amcl ノード 実行 amcl ソースコード 実行 ファイル ROS2 Galactic FlameGraph 分析 perf amcl::funcA1_1 amcl::funcA1 cpu utilization [%] amcl::funcA funcB amcl A2 B2
49.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.3 プロファイリング方法 (1) amcl ノード (ROS2) のビルド・実行 • Dockerコンテナを起動する • Dockerコンテナ内でのプロファイリングを有効にするため、 --privileded オプションを付与して起動する • amclを含む ROS2パッケージをビルドする • プロファイリングに必要な情報を実行ファイルに付与するため、以下のオプションを指定 -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -funwind-tables -g3" 49 $ docker run --gpus all --rm -it –-privileged container:latest $ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release ¥ -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -funwind-tables -g3" ビルド (colcon) amcl ノード 実行 amcl ソースコード 実行 ファイル ROS2 Galactic
50.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.3 プロファイリング方法 (1) amcl ノード (ROS2) のビルド・実行 • amclノードの実行方法について • 後述のperfによる分析において分析対象を絞り込むため、amclノード単体で起動する ビルドされたamclのバイナリを直接実行することで可能 (ros2 run や launch を使わない) 50 $ install/nav2_amcl/lib/nav2_amcl/amcl --ros-args [options] ビルド (colcon) amcl ノード 実行 amcl ソースコード 実行 ファイル ROS2 Galactic ビルドされたamclノードのバイナリを 実行することでamclノードのみ起動できる
51.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.3 プロファイリング方法 (2) perf、FlameGraphを使用して分析 実行手順 1. Dockerコンテナにperfをインストール 2. perfによる分析を有効にする 3. perfの引数にamclの実行コマンドを指定して実行 perf record –g: perf によるデータ採取コマンド (-g: 関数の階層構造を読み取る) 51 $ apt-get install linux-tools-generic $ /usr/lib/linux-tools-4.15.0-161/perf record –g ¥ install/nav2_amcl/lib/nav2_amcl/amcl --ros-args [options] sudo sysctl -w kernel.perf_event_paranoid=-1
52.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.3 プロファイリング方法 (2) perf、FlameGraphを使用して分析 実行手順 4. FlameGraphのスクリプト[14]を使用し、 perfの分析結果を可視化 52 $ perf script | ./stackcollapse-perf.pl ¥ | ./flamegraph.pl > output.svg FrameGraph [14] https://github.com/brendangregg/FlameGraph
53.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.3 プロファイリング方法 (3) 分析結果から計算負荷の高い関数を特定する • FlameGraphから計算負荷が高い関数を特定する • FlameGraphにより、関数構造と処理負荷の比率が分かる • タイマの埋め込みにより処理時間を計測する • FlameGraphで判明した処理負荷の大きい関数周辺に タイマを埋め込み、具体的な処理時間を計測する 53 処理負荷 関数の呼び出し順序
54.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.4 プロファイリング結果 • FlameGraphから計算負荷が高い関数を特定する • amclの主処理の中で、sensorFunction関数の計算負荷が最も高い 54 laserReceived関数 : amclノードによる自己位置推定処理の本体となる関数 ロボットの動作中、VLP-16からのセンサ情報を繰り返し受け取り、処理し続ける sensorFunction関数 : amclノードによる自己位置推定処理の中で、 最も計算負荷が高い関数
55.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.3.4 プロファイリング結果 • タイマの埋め込みにより処理時間を計測する 55 laserReceived: 41.761 msec getOdomPose: 0.083 msec shouldUpdateFilter: 0.016 msec odometryUpdate: 2.504 msec updateFilter (≒ sensorFunction): 33.179 msec pf_update_resample: 4.875 msec publishParticleCloud: 0.472 msec getMaxWeightHyp: 0.526 msec publishAmclPose: 0.128 msec calculateMaptoOdomTransform: 0.194 msec sendMapToOdomTransform: 0.175 msec odometryUpdate 6% updateFilter 79% pf_update_resample 12% laserReceived関数処理時間内訳 getOdomPose shouldUpdateFilter odometryUpdate updateFilter pf_update_resample publishParticleCloud getMaxWeightHyp publishAmclPose calculateMaptoOdomTransform sendMapToOdomTransform
56.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4 amclのCUDA化による高速化 アウトライン • 3.4.1 NaiveなCUDA化処理の実装 • 3.4.2 CUDA実行モデル • 3.4.2 CUDA化処理プロファイリング • 3.4.3 CUDA化処理最適化 • 3.4.4 Jetson上における性能測定の留意点 56
57.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4 amclのCUDA化による高速化(sensorFunction CPU処理時間) • CPU処理での処理時間を計測 • amclでは適応的にパーティクル 数を変化させる • rosbagファイルを流して一連の 自己位置推定を行った時の パーティクル数と処理時間の 関係を測定 • 結果 • 処理時間はパーティクル数に比例 • 最大パーティクル数で 約40msec • LiDARの入力周期が10Hzなので 最大レイテンシが約半周期 57
58.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.1 NaiveなCUDA化処理の実装 – 検討 • sensorFunctionの処理 • 各パーティクルに対して LiDAR観測の尤度を求めて重みを更新する • amclデフォルトではパーティクル数 (500-2000)、走査方向 (60) の計算が必要 • 計算はパーティクルで並列となる 58 各パーティクル処理 各走査方向に対する尤度の和を 観測の尤度とする : 走査線
59.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.1 NaiveなCUDA化処理の実装 – 結果 • まずはCPU処理をそのままCUDA化 • CUDAの各スレッドで 各パーティクルを処理 • CUDAで必要なメモリ領域は cudaMallocで確保 • CUDA処理前にデータを cudaMallocで確保した領域にコピー • 高速化の効果が見える • パーティクル数、走査方向数を 増やして自己位置推定精度を 確保することが可能 • レイテンシが低くなる • CPU負荷の削減 • 削減分を他処理にまわせる 59 cpu : CPU処理時の処理時間 gpu-naive : NaiveなCUDA実装の処理時間
60.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.2 CUDA実行モデル 60 Warp (32Threds) … Block (~1024Threds) … タスク … GPU コア レジスタ キャッシュ 命令ユニット SM … • CUDAの内部には複数のSMがある • SM : Streaming Multiprocessor • 独立して実行できるプロセッサー • Jetson AGX Xavierでは20個 • カーネルの実行スレッドはBlockで区切 られる • Block 内部は32スレッド単位のWarp で区切られる • Block単位でSMに割り当て • 同じタスクが違うSMで処理される • Warpごとに処理される • Warpに所属する32スレッドが同時に 処理を行う Block を割り当て、Warpごとに処理
61.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.3 CUDAプログラムのプロファイリング • プロファイリング実行環境 61 Jetson AGX Xavier ROS2 Galactic (Docker コンテナ) デスクトップPC(Ubuntu 18.04) プロファイリングツール (Nsight Systems、nvvp) SSH 分析データ amcl ノードは Docker コンテナ内で実行 amcl ノード 分析
62.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation amcl ノード ROS2 Galactic 3.4.3 CUDAプログラムのプロファイリング • NVIDIA® Nsight™ Systems • NVIDIA社製のプロファイリングツール • プロファイリング結果をGUIで可視化 • GPU、CPUの処理どちらも分析可能 • GPUはCUDA API/カーネル実行時間をプロファイリング可能 62 Nsight Systems (分析) 分析 Nsight Systems (可視化) デスクトップPC Jetson AGX Xavier
63.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.3 CUDAプログラムのプロファイリング • NVIDIA® Nsight™ Systems 実行手順 ① Jetson上でDockerコンテナを起動 Nsight Systems プロファイリングで使う一時ディレクトリをマウント ② Dockerコンテナ上で環境変数を設定 ③ Dockerコンテナ上で実行 ④ デスクトップPC上で Nsight Systems を立ち上げ Jetson に SSH 接続し docker 内で実行したプロセスを指定してプロファイリング 63 $ docker run --gpus all --rm -it --privileged --shm-size=1024m ¥ -v /opt/nvidia:/opt/nvidia -v /tmp/nvidia:/tmp/nvidia cuda-galactic:root LD_PRELOAD=“/opt/nvidia/nsight_systems/libToolsInjectionProxy64.so” ¥ install/nav2_amcl/lib/nav2_amcl/amcl --ros-args [options] export CUDA_INJECTION64_PATH="/opt/nvidia/nsight_systems/libToolsInjection64.so“ export QUADD_INJECTION_PROXY="OSRT, $QUADD_INJECTION_PROXY"
64.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation • NVIDIA Visual Profiler (nvvp) • NVIDIA社製のプロファイリングツール • CUDA カーネル内部のプロファイリング結果をGUIで可視化 • nvprof • NVIDIA社製のプロファイリングツール • プロファイリングのメトリクス取得 amcl ノード ROS2 Galactic 3.4.3 CUDAプログラムのプロファイリング 64 nvprof 分析 nvvp Linux 18.04 デスクトップPC Jetson AGX Xavier
65.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.3 CUDAプログラムのプロファイリング • nvvp 実行手順 ① Jetson上でDockerコンテナ起動 ② Dockerコンテナ上でnvprof実行 ③ 生成したプロファイル結果をscpコマンド等でデスクトップPCにコピー ④ デスクトップPCでnvvpを起動してプロファイリング結果を可視化 65 $ docker run --gpus all --rm -it --privileged --shm-size=1024m cuda-galactic:root nvprof --analysis-metrics -o amcl_cuda.nvvp ¥ ../install/nav2_amcl/lib/nav2_amcl/amcl --ros-args [params] sudo /usr/local/cuda/bin/nvvp ¥ -vm /usr/lib/jvm/java-8-openjdk-amd64/bin/java amcl_cuda.nvvp
66.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.3 CUDA化処理プロファイリング 66 NVIDIA® Nsight™ Systems メモリコピーの消費時間が大きい
67.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.3 CUDA化処理プロファイリング 67 nvvp – kernel analysis 自動変数の扱いに問題? Occupancy(*) が低い 計算資源をフルに使えていない (*) Occupancy: CUDA へのWarp充填度 GPU 処理はレイテンシが高いので それを隠すためにSMに多数のWarp を投入する必要がある
68.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.3 CUDA化処理プロファイリング 68 nvvp – latency analysis nvvp – compute analysis Divergence に問題を抱えたコードが存在 Divergence(*) に問題を抱えた箇所がある パーティクル数が1280以下だと SM を全部(20 個)使い切らない (*) Divergence: 命令を実行したスレッドの割合。条件分岐があると一部のスレッドしか 実行を行わないことがあり、実行を行わないスレッドが多いほどこの値が低くなる
69.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation • cudaMemcpyで時間がかかる • Integrated GPU なのでコピーは本来不要 • ⇒ Unified Memory を使用してコピーを削除する 3.4.4 CUDA化処理最適化 – 方針 (1) 69 CPU (Host) GPU DRAM GDRAM PCIe CPU (Host) iGPU SoC DRAM Jetson での Unified Memory Discrete GPU での Unified Memory ※ Unified Memory: ホスト, GPU から同一のメモリアドレスでアクセスできるマネージドメモリ cudaMemcpy での明示的なメモリ転送を行わなくてよい Discrete GPU では DRAM, GDRAM 間で暗黙的にメモリ転送される Jetson では同一の SoC DRAM にアクセスするため転送が不要 暗黙的に転送 同一メモリアドレスでアクセス 同一メモリアドレスでアクセス
70.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.4 CUDA化処理最適化 – 方針 (2) • Divergence • 全パーティクルの重み合計をatomicAddでReduce計算している箇所が原因 • ⇒ ワープ内シャッフル命令によりReduce • ⇒ ワープ間の Reduce は CPU で計算 • Occupancy • Blockのスレッド数は32まで引き下げられる • ⇒ 64 から 32 に変更 70 samples[global_thread_num].weight *= p; // atomicAdd の実装は NVIDIA ドキュメント[5]参照 atomicAdd(total_weight, samples[global_thread_num].weight); for (int i = 16; i >= xdim; i >>= 1) { current_weight += __shfl_down_sync(0xffffffff, current_weight, i); }
71.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.4 CUDA化処理最適化 – 効果 71 cpu : CPU 処理時の処理時間 gpu-naive : Naive な CUDA 実装の処理時間 gpu-optimived : 最適化 CUDA 実装の処理時間
72.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.4 CUDA化処理最適化 – プロファイリング 72 NVIDIA® Nsight™ Systems cudaMemcpy は消えている CUDAカーネルの実行時間も短い
73.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.4 CUDA化処理最適化 – プロファイリング 73 nvvp – kernel analysis 演算ユニットはほぼ使い切っている メモリ帯域はまだまだ空きがある メモリの使用効率はよくない Occupancy は低いが 演算ユニットを使い切っているので 影響は低い
74.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.4 CUDA化処理最適化 – プロファイリング 74 nvvp – compute analysis 強烈な Divergence はなくなった nvvp – latency analysis Occupancy は改善していないがこれ以上 Warp を詰め込んでも 演算ユニットが詰まるだけ
75.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.4 CUDA処理最適化 – さらなる検討 • 演算ユニットの負荷削減 • ⇒ 演算強度を軽減する (double -> float) • Occupancy改善 • ⇒ 内側のループ (各パーティクル内の処理) も並列処理する • メモリ使用効率、Divergence軽減 • ランダムアクセスが必要なアルゴリズムのため難度が高い ただし他の処理と比較して十分高速なため、これ以上の最適化は効果が薄い 75
76.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 3.4.5 Jetson上における性能測定の留意点 • Jetsonにはいくつかの性能モードがあるので測定時には性能モードをあわせる • 下記例ではモード3 (30W、8 CPU) • CPU/GPU動作周波数を固定する • デフォルトだと、処理負荷、CPU温度に応じて動的に動作周波数が変わり、処理時間 がばらつく • jetson_clocksコマンドで動作周波数を固定する • 同時にファンも最大まで回しておく 参考 : NVIDIA 公式ドキュメント 76 $ sudo /usr/bin/jetson_clocks --fan $ sudo /usr/sbin/nvpmodel -m 3
77.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation 4 今後の課題 • メカナムローバーでの ROS2 navigationによる自律走行 • amcl高速化によるnavigationへの効果測定 • navigation2内の他パッケージのCUDA高速化 • amclのさらなるCUDA高速化 • オドメトリ更新 • リサンプリング (KD木構築のCUDA化が必要) 77
78.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Copyright © Fixstars Corporation Q&A time
79.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation フィックスターズでは仲間を募集しています! さまざまな専門性を持つエンジニアを募集しています 詳細は https://www.fixstars.com/ja/recruit/ まで 79
80.
Fixstars Corporation www.fixstars.com Copyright
© Fixstars Corporation Thank You お問い合わせ窓口 : contact@fixstars.com
Jetzt herunterladen