SlideShare a Scribd company logo
ZytleBot
⾃律移動ロボットへのFPGA活⽤のすゝめと
ROS 2移⾏への道
⽥村 爽 新⽥ 泰⼤ ⾼瀬 英希
(京都⼤学)
Agenda
• ROSにおけるFPGAの活⽤
­ FPGA Design competition
­ LinuxによるFPGAの扱い⽅
­ 活⽤事例紹介
• ROS 2への移⾏
­ ROS 2対応のモチベーション
­ ROS 2ツール使ってみた
2
ROSにおけるFPGAの活⽤
• FPGA Design competition
• LinuxによるFPGAの扱い⽅
• 活⽤事例紹介
FPGA Design competition
• FPT2018およびHEART2019
において併催された
⾃律移動ロボット開発コンテスト
• 概要
­ 道路を模したコースを⾛⾏
­ センサ類はCMOSカメラのみ
­ プロセッサは組込みCPUのみ、さらに外部との通信は禁⽌されているため、
FPGAをうまく活⽤することが求められる
­ ⾞体に関しては⾃由︕
ü ロボットは⾃作でも既製品でもOK!
4
FPGAとは︖
• Field Programmable Gate Array
­ 中⾝を改変可能なLSI
­ ハードウェアそのものの
振る舞いを変えられる
­ 独⾃のデジタル回路を
⾃由に何回でも形成できる
5
IOB
SB
CB LB
IOB
IOB
SB
IOB LB
SB
CB CB
SB
CB
SB SB
CB CBLB IOBIOB LB
SB SB SB
IOB IOB
CB
CB
CB
CB
CB
CB
⼊出⼒ブロック
コネクションブロックLB 論理ブロック
IOBSB スイッチブロック
CB
LUT
IN OUT
0000 1
0001 0
0010 0
… …
1110 1
1111 0
D-FF
D Q
FPGAの強み
6
A
C
I
) ( ) (
FPGA vs GPU
• Pros
­ 消費電⼒
­ リアルタイム性
• Cons
­ 開発コスト
• 備考
­ 性能は設計とやりたいこと次第
­ 値段も安いとは⾔い切れない
7
⾼位合成
C, C++
🔻
ハードウェア記述⾔語
FPGA向け統合開発環境
C, C++
🔻
Linuxを含めた実⾏環境
設計ツール・設計⼿法の
開発&改良
プログラマブルSoC
• FPGAのみでは柔軟性に乏しい
• CPUとFPGAを1チップに収めた
プログラマブルSoC
­ Xilinx︓Zynq
­ Intel︓SoC FPGA
• CPUにはRTOSやLinuxを搭載可能
­ もちろんROSも
• デバイスドライバを介して
FPGAをデバイスとして扱うことができる
• FPGAの回路の再書き換えを
Linuxから⾏うことも可能に︕
(Linux kernel 4.10以降)
8
CPU
FPGA
Ubuntu 18.04
IP CoreIP Core
Sensor
/dev/video0
Configuration
画像処理
IP Core
LinuxからFPGAを操作
• FPGAの設計ツールで、CPUとFPGA回路間を配線
­ ツールによりLinuxの物理アドレスへの割り当てが⾏われる
• 物理アドレスを操作
a. メモリマップドIO
­ /dev/memで制御(危険︕)
b. UIO(User space IO)
­ ユーザプロセスから指定範囲のメモリを操作する機能
c. デバイスドライバの作成
­ 安全・⼿間がかかる
­ 再利⽤性◎
9
活⽤事例︓ZytleBot
10
• Zynq + TurtleBot
­ Zynq UltraScale+ MPSoC
­ TurtleBot3 : ROS standard platform robot kit
TurtleBot3 & ZytleBot
11
LiDAR
Raspberry Pi
USBCam
FPGA
board
Pcam 5C
システム構成&開発メンバー
• 学⽣2⼈で開発
­SW担当︓⽥村(本⽇発表)
üGazeboシミュレータ⽤の環境作成
ü⾃律移動アルゴリズム全般
ü3Dモデリングツールによる
パーツ作成・印刷
­HW担当︓新⽥
üFPGAでするべきアルゴリズムの
検討とその実装
üFPGAの回路設計
12
Driving System
FPGAによる⾚信号検出
• スライディングウィンドウ法 + SVM
• ⼊⼒:320pix*240pixフレーム画像
• 出⼒:891個のウインドウの推定結果
­ レイテンシ︓2milisec
­ HW使⽤ ︓6.22milisec = 160fps
SWのみ︓1700milisec = 0.58fps
ü275倍⾼速化
13
SVM Classification
!
"#$
%
𝑤" 𝑥" + 𝑏
Feature Extraction
8x8 BGR8x8 HSV HOG
https://github.com/lp6m/ImageDetectionHW2
https://www.slideshare.net/takasehideki/zytlebot-
rosfpga/takasehideki/zytlebot-rosfpga
コンテスト結果
• 2018年12⽉に沖縄で開催された
FPT2018にて優勝︕
• 14チーム中 3チームがROS
• 半数以上のチームがロボットが
動かなかった中、ROSを使って
いたチームは全て動作、
内2つが決勝進出
• Welcome to ROS × FPGA
14
• 優勝商品はなんと…
TurtleBot3
15
号機につづく
ROS 2への移⾏
• ROS 2移⾏へのモチベーション
• 移⾏の流れ
ZytleBot to ROS 2!
17
車体 TurtleBot3
メインボード Zybo Z7-20
OS Ubuntu 16.04
ROS Distro Kinetic Kame
車体 TurtleBot3
メインボード Ultra96
OS Ubuntu 18.04
ROS Distro Crystal Clemmys
現在はDashingに対応
Why ROS 2?
• とりあえずNodeletをやめたい
• ノートPCをMacBookにしたい
• launchファイルがPythonに…?
18
Why ROS 2?
• とりあえずNodeletをやめたい
• ノートPCをMacBookにしたい
• launchファイルがPythonに…?
19
画像取得
ノード
人検出
ノード
iImage
ノードごとに1プロセス
🔻
通信コストがかかる
Nodelet
複数ノードをまとめて1プロセスで起動
◎スマートポインタによるデータコピー
×保守性 再利⽤性
ROS 2では標準機能
コンポーネントとしての
記法を定めて
保守性 再利⽤性◎
Why ROS 2?
• とりあえずNodeletをやめたい
• ノートPCをMacBookにしたい
• launchファイルがPythonに…?
20
https://index.ros.org/doc/ros2/Releases/
Release-Dashing-Diademata/
Why ROS 2?
• とりあえずNodeletをやめたい
• ノートPCをMacBookにしたい
• launchファイルがPythonに…?
21
※現時点では開発中
xml ➡ Python
Why ROS 2?
• とりあえずNodeletをやめたい
• ノートPCをMacBookにしたい
• launchファイルがPythonに…?
• etc..
22
組込み向け︖
DDS︖
FPGAとの
親和性︖
リアルタイム性︖
とりあえず
やってみよう︕
ROS 2移⾏のための取り組み
• ROS 2のコンポーネント形式にそったパッケージの作成
• Gazeboシミュレータの移⾏
• 実機へのインテグレーション
23
ROS 2 プログラミング
• 2通りの選択肢
­ ROS 1と同様の書き⽅
­ 共有ライブラリとしてノードを実装する(ベストプラクティス)
• 共有ライブラリとしての書き⽅を理解する必要があるため、
プログラミング難易度は上がる
• 同⼀プロセス内で複数ノード実⾏ができる
­ データのゼロコピーや、ノードの実⾏順序を守らせることが可能になる
• Nodeletで不満だった保守性、安全性も◎
24
Gazeboシミュレータの移⾏
25
• Gazeboも⼀部ROS 2対応︕︕
­ ※ros_controlerなど未対応の
コア部分も...
• モデルの記法は変わらずxml
• 重要なのはプラグインが
対応しているかどうか
­ プラグイン移⾏に関しては
gazebo_ros_pkgsのgitのWikiを参考
実機へのインテグレーション
• ロボット動作に必要なパッケージがROS 2に対応しているか
否かで明暗が別れる
• 今回はTurtleBot3がROS 2対応していたため、スムーズに移⾏
­ ロボットベンダー社様、ROS 2パッケージをお願いします…
­ (私たちももちろん頑張ります^^;)
• rosbag2も利⽤可能︕
­ ただし、1で可能だった再⽣速度の変更などは未対応
26
ROS 1 or ROS 2 ?
• ROS 2で⼤変だった点
­ ...特になし︕(先⼈の⽅々のおかげ)
­ コア部分の開発はかなり進んでいる実感
• ROS 2に移⾏するならこれからがチャンス
­ 初の⻑期サポートdistroのDashingがリリース
­ ⽇本語の講習会、書籍、記事なども︕
­ ROS 1のソフトウェア資源も魅⼒的だが、
みんなでしがみ付いていると…
27
ROS 2 コンテスト結果
• HEART2019 @⻑崎
• ROS 2でも優勝︕
Welcome to
28
and FPGA︕
To Be Continued FPT2019

More Related Content

PDF
20220412 IoTLT vol86 kitazaki v1
PPTX
FPGAことはじめ
PPTX
PYNQ 祭り: Pmod のプログラミング
PDF
Pro Git 第2版はじめました
PPTX
Analog Devices の IP コアを使う
PDF
ソフトウェア技術者はFPGAをどのように使うか
PDF
2015RTミドルウエア講習会
PDF
GR-ROSEでroombaを コントロールする
20220412 IoTLT vol86 kitazaki v1
FPGAことはじめ
PYNQ 祭り: Pmod のプログラミング
Pro Git 第2版はじめました
Analog Devices の IP コアを使う
ソフトウェア技術者はFPGAをどのように使うか
2015RTミドルウエア講習会
GR-ROSEでroombaを コントロールする

Similar to ZytleBot: 自律移動ロボットへのFPGA活用のすゝめとROS 2移行への道 (20)

PPTX
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
PDF
GoBGP活用によるSD-WANプラクティス
PDF
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
PPTX
Gpgpu tomoaki-fp16
PPTX
Openstack neutron vtjseminar_20160302
PDF
PDF
GoでEPC作って本番運用している話
ODP
Mbed gps logger_20101105
PDF
20191113 python raspberry_pi_gpio
PPTX
動き検出勉強会リメイク。過去の発表のリメイク版です。動き検出のアルゴリズムとOpencvのオプションについてまとめました
PDF
Rsj2013 sekiyama 1
PPTX
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
PPTX
GPU-FPGA協調プログラミングを実現するコンパイラの開発
PDF
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
PDF
ROBOMECH2017 RTM講習会 第1部・その1
PDF
FPGAスタートアップ資料
PDF
20220525_kobayashi.pdf
PPTX
Fpgax20170924
PDF
Lagopus Project (Open Source Conference)
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
GoBGP活用によるSD-WANプラクティス
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
Gpgpu tomoaki-fp16
Openstack neutron vtjseminar_20160302
GoでEPC作って本番運用している話
Mbed gps logger_20101105
20191113 python raspberry_pi_gpio
動き検出勉強会リメイク。過去の発表のリメイク版です。動き検出のアルゴリズムとOpencvのオプションについてまとめました
Rsj2013 sekiyama 1
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
GPU-FPGA協調プログラミングを実現するコンパイラの開発
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
ROBOMECH2017 RTM講習会 第1部・その1
FPGAスタートアップ資料
20220525_kobayashi.pdf
Fpgax20170924
Lagopus Project (Open Source Conference)
Ad

ZytleBot: 自律移動ロボットへのFPGA活用のすゝめとROS 2移行への道