SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説Hironori Washizaki
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例Yoshitaka HARA
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)Toru Tamaki
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解Koji Terada
 
Cartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAMCartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAMYoshitaka HARA
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Modelscvpaper. challenge
 
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発Developers Summit
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat ModelsDeep Learning JP
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミングNorishige Fukushima
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
 
リーン開発の本質 公開用
リーン開発の本質 公開用リーン開発の本質 公開用
リーン開発の本質 公開用ESM SEC
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
 

Tendances (20)

CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
Cartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAMCartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAM
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
リーン開発の本質 公開用
リーン開発の本質 公開用リーン開発の本質 公開用
リーン開発の本質 公開用
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 

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

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

Similaire à 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活用紹介
 

Plus de Hideki Takase

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 ElixirHideki Takase
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓くHideki Takase
 
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^2Hideki Takase
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつHideki Takase
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはHideki Takase
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentHideki Takase
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Hideki Takase
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計するHideki Takase
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてHideki Takase
 
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 ElixirHideki Takase
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANHideki Takase
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?Hideki Takase
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~Hideki Takase
 
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介Hideki Takase
 
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...Hideki Takase
 
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 KyotoHideki Takase
 
BeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzBeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzHideki Takase
 
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価Hideki Takase
 

Plus 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

Notes de l'éditeur

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