SlideShare uma empresa Scribd logo
1 de 20
組込みデバイス向けの
ROS1ノード軽量実行環境
高瀬 英希・森 智也
(京都大学)
emb@lab3.kuis.kyoto-u.ac.jp
SlideShare仕様に
対応するための無駄ページです
P.4以降の下線と枠付き画像には
ハイパーリングが付いています
SlideShare仕様に
対応するための無駄ページです
P.4以降の下線と枠付き画像には
ハイパーリングが付いています
自己紹介
@takasehideki
− 京都大学 情報学研究科 助教
− SWEST20 プログラム委員長
− IPSJ-SIGEMB 運営幹事
− TOPPERSプロジェクト 特別会員
− ROS Japan UG 関西勉強会 主催
10/27に大阪ATCで開催予定!
ROSCon2018@Madrid参加報告やります
ROS歴:2.5年程度
− C原理主義者の組込み屋さん
− 最近はElixir推し
4
まずはじめに
皆さま
使ってますよね!?
5
まずはじめに
もう時代は
でしょうか??
組込みでも使えるし,,,
6
まずはじめに
やっぱりまだ
でしょうか!?
既存資産が豊富だし,,,
7
. / - .
今回の提案
8
組込みデバイス上でROS1ノードを実行
ROS1
豊富なパッケージ資産が流用可
分散システムを容易に実現可
組込みデバイス
消費電力・リアルタイム性に優位
資源制約が厳しい
. / - .
mROSの全体像
9
• 分散システムのエッジの省電力化に繋がる
• リアルタイム性の保証が期待できる
• 既存パッケージ資産の再利用が可能となる
mROSが提供する機能
ROSマスタとの通信
ノード間のpub/sub通信
ROS
ノード
ROS
ノード
ROS
mROS
ROSの関数を使って
プログラミング可能ミッドレンジ
組込みデバイス
貢献
. / - .
mROSのソフトウェア構成
10
ハードウェア
mbed
TOPPERS/ASPカーネル
mROS通信ライブラリ
アプリケーションアプリケーション
ROSのAPIを
そのまま使える
資源管理を担当
リアルタイム性の向上も実現可能
lwIPを使用
mbedライブラリでの
デバドラ開発も可能
. / - .
ITRONタスクによるROS通信機能
それぞれのタスク設計は
ITRON仕様に則る
サブスクライブタスク・
XMLスレーブタスクは
周期的に実行
11
タスク間通信は
共有メモリ+デーキュー
. / - . 12
トピック購読のフロー
• subscribe() の呼び出し
(1)-(3):xmlマスタタスクによるroscoreへのノード登録
(4):サブスクライブタスクによるmROSサブスクライバの初期化
(5)-(7):ROSパブリッシャノードへのトピック購読リクエストの送信
• サブスクライブタスクの周期実行によるデータ購読
(8):サブスクライブタスク内でコールバック関数の実行
(9):共有メモリからの結果の取得
. / - .
トピック出版のフロー
13
• 出版:advertise() によってユーザタスクをROSノードとして登録
− publish() 呼び出しによりデータ出版が可能となる
(1):共有メモリに出版データを書き込み
(2):パブリッシュタスクへの出版通知
(3):共有メモリから出版データの読み込み
(4):対応するTCPソケットからパブリッシュタスクがデータを出版
. / - .
デバイス内のノード間通信方式
14
publish() 内で
出版相手を判断して
メッセージIDを生成
トピックの
購読要求は
行わない
• 共有メモリを介してタスク間でデータを通信
(1)-(3):ROSマスタにユーザタスク1をサブスクライブノードとして登録
(4):サブスクライブタスクにて通知されたIPアドレスを判断
(5)-(6):ユーザタスク2からデータを出版
(7)-(8):サブスクライブタスクでデータを受け取ってコールバック関数を実行
. / - .
mROSの現在の開発対象
• Renesas GR-PEACH
−mbed対応/Arduino互換ピン
−純正カメラシールドあり
OpenCVも使える
15
http://gadget.renesas.com/ja/product/peach.html
搭載マイコン RZ/A1H
(Cortex-A9 400MHz)
ROM/RAM 外部FLASH 8MB
内蔵10MB
動作電圧 3.3V/1.18V
画像処理ROSノードが
きびきび動く,かも!?
. / - .
mROSのメモリサイズ
• 合計で2.6MB程度:GR-PEACHにとっては軽量
• さらなる軽量化は可能
−共有メモリの容量を静的に確保しているため
−タスク間通信用のメモリ領域を除けば600KB程度
−不使用のmbedライブラリの除去 or そもそも生lwIPの使用も検討中
16
ライブラリ text data bss 合計
カーネル 99,676 0 16,408 116,084
mbed 264,477 52,940 45,711 363,128
mROS 57,950 28 2,097,310 2,155,288
合計 422,103 52,968 2,159,429 2,634,500
. / - .
mROSの活用事例
• 特徴点抽出を行うROSパッケージ*1を対象として分散システムを構成
• エッジデバイス上でシステムの一部を実行
• image_converter をmROS上に移植
17*1:宇都宮大学の大川猛先生からご提供
画像データの
圧縮処理
カメラのデバイス
ドライバノード
デバイス内通信は
共有メモリ方式
. / - .
活用事例:カメラ画像から特徴点抽出
18
特徴点
抽出結果
元画像
mROSで
実行されて
いるノード
ROSで
実行されて
いるノード
mROSノード化によって
通信量を75%削減
. / - .
おわりに
• 組込みデバイス向けROS1ノードの軽量実行環境
−既存ROSパッケージをそのまま使える!
−ROS1ノードの省電力化に使える,かも!?
−リアルタイム性能の向上に使える,かも!?
• ユーザ様募集中!!
−ROS1を使っているけど資源制約が厳しい方
−開発済みのROS1資産を組込み化したい方
−結局ROSマスタ必要やん?時代はROS2!!という方
一緒にROSマスタ組込み化/ROS2対応に取り組みませんか!?
19
. / - . 20
CPU+FPGA
SoC対応
ASP3対応
mbed最新ver.化
(multicast,DHCP)
保護機能強化
(HRP対応)
⾞載向け
(ATK2対応)
マルチコア化
(FMP対応)
LYCHEE対応
ROS協調設計
(SWORDS対応)
mROS
ASP+mbed
on PEACH
lwIP
⽣移植
mROSノード間
通信最適化
FreeRTOS
ROSノード移植
(デモアプリ開発)
マスタ/roscore
機能の組込み化
MessageType
対応
ROS2ブリッジ機能
server/client
通信
リアルタイム性
保証・機能強化
普及促進
多機能化
付加価値向上
機能強化
多デバイス移植
HW ROS
・凡例( 橙>⻘>緑>灰)
枠線︓研究要素の強いもの
⽂字⾊︓実⽤性が出るもの
mbedOS対応
catkin_make
対応
完
完
STM32対応
WiP
WiP
WiP
WiP
WiP

Mais conteúdo relacionado

Mais procurados

画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
takaya imai
 

Mais procurados (20)

LiDAR-SLAM チュートリアル資料
LiDAR-SLAM チュートリアル資料LiDAR-SLAM チュートリアル資料
LiDAR-SLAM チュートリアル資料
 
SLAMチュートリアル大会資料(ORB-SLAM)
SLAMチュートリアル大会資料(ORB-SLAM)SLAMチュートリアル大会資料(ORB-SLAM)
SLAMチュートリアル大会資料(ORB-SLAM)
 
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチMIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
 
[DL輪読会]Whole-Body Human Pose Estimation in the Wild
[DL輪読会]Whole-Body Human Pose Estimation in the Wild[DL輪読会]Whole-Body Human Pose Estimation in the Wild
[DL輪読会]Whole-Body Human Pose Estimation in the Wild
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
 
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
 
20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
 
SLAM入門 第2章 SLAMの基礎
SLAM入門 第2章 SLAMの基礎SLAM入門 第2章 SLAMの基礎
SLAM入門 第2章 SLAMの基礎
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
 
【メタサーベイ】Video Transformer
 【メタサーベイ】Video Transformer 【メタサーベイ】Video Transformer
【メタサーベイ】Video Transformer
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
 
CVPR 2019 速報
CVPR 2019 速報CVPR 2019 速報
CVPR 2019 速報
 

Semelhante a mROS:組込みデバイス向けのROS1ノード軽量実行環境

Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
Hideki Takase
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
 

Semelhante a mROS:組込みデバイス向けのROS1ノード軽量実行環境 (20)

mROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみるmROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみる
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+α
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!
 
Osc tokyo20141019
Osc tokyo20141019Osc tokyo20141019
Osc tokyo20141019
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
ElixirでIoT 第2回 「環境センシングとデータ表示を サクっと?やってみた」
ElixirでIoT 第2回「環境センシングとデータ表示をサクっと?やってみた」ElixirでIoT 第2回「環境センシングとデータ表示をサクっと?やってみた」
ElixirでIoT 第2回 「環境センシングとデータ表示を サクっと?やってみた」
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
ソフトウェアエンジニアと高位合成
ソフトウェアエンジニアと高位合成ソフトウェアエンジニアと高位合成
ソフトウェアエンジニアと高位合成
 
Raspberrypitraining20171027
Raspberrypitraining20171027Raspberrypitraining20171027
Raspberrypitraining20171027
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
 
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
社会人のためのシンポジウム発表入門 リーン論文作法
社会人のためのシンポジウム発表入門   リーン論文作法社会人のためのシンポジウム発表入門   リーン論文作法
社会人のためのシンポジウム発表入門 リーン論文作法
 
EDUPUB Phoenix 2015 報告
EDUPUB Phoenix 2015 報告EDUPUB Phoenix 2015 報告
EDUPUB Phoenix 2015 報告
 
リーマンサット・プロジェクトのBacklog活用紹介
リーマンサット・プロジェクトのBacklog活用紹介リーマンサット・プロジェクトのBacklog活用紹介
リーマンサット・プロジェクトのBacklog活用紹介
 

Mais de Hideki Takase

関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
Hideki Takase
 

Mais de Hideki Takase (20)

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
 
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYAN
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
 
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
 
Design Concept of a Lightweight Runtime Environment for Robot Software Compo...
Design Concept of a LightweightRuntime Environment for Robot SoftwareCompo...Design Concept of a LightweightRuntime Environment for Robot SoftwareCompo...
Design Concept of a Lightweight Runtime Environment for Robot Software Compo...
 
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 KyotoTOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
 
BeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzBeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorz
 
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
 

mROS:組込みデバイス向けのROS1ノード軽量実行環境

  • 4. 自己紹介 @takasehideki − 京都大学 情報学研究科 助教 − SWEST20 プログラム委員長 − IPSJ-SIGEMB 運営幹事 − TOPPERSプロジェクト 特別会員 − ROS Japan UG 関西勉強会 主催 10/27に大阪ATCで開催予定! ROSCon2018@Madrid参加報告やります ROS歴:2.5年程度 − C原理主義者の組込み屋さん − 最近はElixir推し 4
  • 8. . / - . 今回の提案 8 組込みデバイス上でROS1ノードを実行 ROS1 豊富なパッケージ資産が流用可 分散システムを容易に実現可 組込みデバイス 消費電力・リアルタイム性に優位 資源制約が厳しい
  • 9. . / - . mROSの全体像 9 • 分散システムのエッジの省電力化に繋がる • リアルタイム性の保証が期待できる • 既存パッケージ資産の再利用が可能となる mROSが提供する機能 ROSマスタとの通信 ノード間のpub/sub通信 ROS ノード ROS ノード ROS mROS ROSの関数を使って プログラミング可能ミッドレンジ 組込みデバイス 貢献
  • 10. . / - . mROSのソフトウェア構成 10 ハードウェア mbed TOPPERS/ASPカーネル mROS通信ライブラリ アプリケーションアプリケーション ROSのAPIを そのまま使える 資源管理を担当 リアルタイム性の向上も実現可能 lwIPを使用 mbedライブラリでの デバドラ開発も可能
  • 11. . / - . ITRONタスクによるROS通信機能 それぞれのタスク設計は ITRON仕様に則る サブスクライブタスク・ XMLスレーブタスクは 周期的に実行 11 タスク間通信は 共有メモリ+デーキュー
  • 12. . / - . 12 トピック購読のフロー • subscribe() の呼び出し (1)-(3):xmlマスタタスクによるroscoreへのノード登録 (4):サブスクライブタスクによるmROSサブスクライバの初期化 (5)-(7):ROSパブリッシャノードへのトピック購読リクエストの送信 • サブスクライブタスクの周期実行によるデータ購読 (8):サブスクライブタスク内でコールバック関数の実行 (9):共有メモリからの結果の取得
  • 13. . / - . トピック出版のフロー 13 • 出版:advertise() によってユーザタスクをROSノードとして登録 − publish() 呼び出しによりデータ出版が可能となる (1):共有メモリに出版データを書き込み (2):パブリッシュタスクへの出版通知 (3):共有メモリから出版データの読み込み (4):対応するTCPソケットからパブリッシュタスクがデータを出版
  • 14. . / - . デバイス内のノード間通信方式 14 publish() 内で 出版相手を判断して メッセージIDを生成 トピックの 購読要求は 行わない • 共有メモリを介してタスク間でデータを通信 (1)-(3):ROSマスタにユーザタスク1をサブスクライブノードとして登録 (4):サブスクライブタスクにて通知されたIPアドレスを判断 (5)-(6):ユーザタスク2からデータを出版 (7)-(8):サブスクライブタスクでデータを受け取ってコールバック関数を実行
  • 15. . / - . mROSの現在の開発対象 • Renesas GR-PEACH −mbed対応/Arduino互換ピン −純正カメラシールドあり OpenCVも使える 15 http://gadget.renesas.com/ja/product/peach.html 搭載マイコン RZ/A1H (Cortex-A9 400MHz) ROM/RAM 外部FLASH 8MB 内蔵10MB 動作電圧 3.3V/1.18V 画像処理ROSノードが きびきび動く,かも!?
  • 16. . / - . mROSのメモリサイズ • 合計で2.6MB程度:GR-PEACHにとっては軽量 • さらなる軽量化は可能 −共有メモリの容量を静的に確保しているため −タスク間通信用のメモリ領域を除けば600KB程度 −不使用のmbedライブラリの除去 or そもそも生lwIPの使用も検討中 16 ライブラリ text data bss 合計 カーネル 99,676 0 16,408 116,084 mbed 264,477 52,940 45,711 363,128 mROS 57,950 28 2,097,310 2,155,288 合計 422,103 52,968 2,159,429 2,634,500
  • 17. . / - . mROSの活用事例 • 特徴点抽出を行うROSパッケージ*1を対象として分散システムを構成 • エッジデバイス上でシステムの一部を実行 • image_converter をmROS上に移植 17*1:宇都宮大学の大川猛先生からご提供 画像データの 圧縮処理 カメラのデバイス ドライバノード デバイス内通信は 共有メモリ方式
  • 18. . / - . 活用事例:カメラ画像から特徴点抽出 18 特徴点 抽出結果 元画像 mROSで 実行されて いるノード ROSで 実行されて いるノード mROSノード化によって 通信量を75%削減
  • 19. . / - . おわりに • 組込みデバイス向けROS1ノードの軽量実行環境 −既存ROSパッケージをそのまま使える! −ROS1ノードの省電力化に使える,かも!? −リアルタイム性能の向上に使える,かも!? • ユーザ様募集中!! −ROS1を使っているけど資源制約が厳しい方 −開発済みのROS1資産を組込み化したい方 −結局ROSマスタ必要やん?時代はROS2!!という方 一緒にROSマスタ組込み化/ROS2対応に取り組みませんか!? 19
  • 20. . / - . 20 CPU+FPGA SoC対応 ASP3対応 mbed最新ver.化 (multicast,DHCP) 保護機能強化 (HRP対応) ⾞載向け (ATK2対応) マルチコア化 (FMP対応) LYCHEE対応 ROS協調設計 (SWORDS対応) mROS ASP+mbed on PEACH lwIP ⽣移植 mROSノード間 通信最適化 FreeRTOS ROSノード移植 (デモアプリ開発) マスタ/roscore 機能の組込み化 MessageType 対応 ROS2ブリッジ機能 server/client 通信 リアルタイム性 保証・機能強化 普及促進 多機能化 付加価値向上 機能強化 多デバイス移植 HW ROS ・凡例( 橙>⻘>緑>灰) 枠線︓研究要素の強いもの ⽂字⾊︓実⽤性が出るもの mbedOS対応 catkin_make 対応 完 完 STM32対応 WiP WiP WiP WiP WiP

Notas do Editor

  1. 素晴らしいイベントを開催された実行委員会の皆さまに感謝します
  2. Ubuntuが必要だよね 個人的にはROS2の成熟には2〜3年は必要と考える. rosserialも有効な解決策だけど性能はどうですか?
  3. コード変換のアプローチもあるけども
  4. mROSでは,図のようなタスク構成でROSノードの実行を可能にしています. ROSシステムとの通信を行う4つのタスクが生成され,ユーザタスクに機能を提供しています. タスク間では,共有メモリとデータキューを組み合わせた通信方式を採用しています. また,サブスクライブタスクおよび,xmlスレーブタスクは周期的に実行され,ROSシステムからの通信を受信します
  5. Nodeletと同じ仕組み
  6. 動画を入れるかデモをするか