SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
ROS (Robot Operating System) の紹介と
IoT/IOT分野への展開
⾼瀬 英希
(京都⼤学/JSTさきがけ)
RICC-PIoT workshop 2021
2021/03/05
2
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアの構成とプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
3
⾃⼰紹介
本務・兼務
­京都⼤学 情報学研究科 准教授
­JSTさきがけ 兼任研究者
­理研R-CCS 客員研究員
­TOPPERSプロジェクト 運営委員
学会活動
­IPSJ-SIGEMB 運営幹事
­IEICE-RECONF 専⾨委員
­SWEST ステアリング委員
コミュニティ活動
­ROS Japan Users Group
­ROSCon JP 実⾏委員
­IoT ALGYAN (あるじゃん) 運営委員
­NervesJP : Elixir for IoT
@takasehideki
箱 庭
4
研究対象︓組込みシステムからのIoTへ
AI/ML技術との
密接な統合
あらゆるモノ・コトの
ネットワーク接続によって
新たな社会的価値を創造
各構成要素における
計算機特性の結集
⼤量のデバイスとデータ
「デバイスレベル並列化」
による最適化の時代へ︕
5
⾼瀬の研究テーマ
あらゆる
モノ・コトと
ヒトを繋げる
設計基盤の
確⽴
最適化 設計技術
良いモノ を 誰でも楽に
つくることができる世界へ
組込み/IoTコンピューティング基盤を⽀える
プラットフォーム技術と設計⽅法論
これまでの取り組み
2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
task
arrival
task is
running
MM-SPM
copy
Execution time
Task1
Task2
Task3
SPM
region
メモリ配置最適化
ΗΑ΅
ΗΑ΅
ΗΑ΅
ΗΑ΅
ΗΑ΅
ΗΑ΅
ΗΑ΅
Εή Π̻ ̼ ̰
R N B ̰ Ѓ ; Ξ΅ Ιμ㌸廷
ʹ ό ΙΛΰ ΦΛΠψЃ ΅ ㌸廷
Ή ό Ϊ ̹ ς ㌸廷
Q S N R ㌸廷
剰堽⒔
ς ό Θι
φΐ Λ΅
κλσ̰ Ѓ ; Ξ΅ Ιμ㌸廷
ΰ φΓΛΌ ̰ Ѓ ; Ξ΅ Ιμ㌸廷
徳從㝡㏆㌸廷 G V ̰ τΊ σΒι
κλσ'; μΛΏ ξ(
✆咩G V ΰ φΓΛΌ κλσ
ΰ φΓΛΌ
ʹ ό ΙΛΰ
ΦΛΠψЃ ΅
ΰ φΓΛΌ
κλσ ΰ φΓΛΌ ✆咩G V
設計階層に跨る
消費エネルギー
統合的最適化
RTOS
FPGA
ROS
Elixir
Power-
Efficient
High-
Performance
Power-
Efficient
High-
Performance
τ1
CP1 CP2
τ2 τ3
High-
Performance
Power-
Efficient
τ1
τ2 τ3		
τ3		
DEPS for
hetero SoC
SW志向協調設計
ZytleBot
SoCアーキテクチャ
コンパイラ
汎⽤カーネル
通信ミドルウェア
AI/MLライブラリ
SoCアーキテクチャ
コンパイラ
リアルタイムOS
通信ミドルウェア
デバイスライブラリ
SoCアーキテクチャ
コンパイラ
インタプリタ
通信ミドルウェア
数値演算ライブラリ
デバイス エッジサーバ クラウド
箱 庭
Cockatrice
HLS最適化
包括的IoT
開発環境
組込み向けROS
Rclex
7
突然のElixir!!
2012年に登場した新たな関数型⾔語
Erlang VM上で動作
• ⾼い並列性能を誇る
• 軽量かつ頑強なプロセスモデル
• 耐障害性が極めて⾼い
Rubyを基にした⾔語設計
• 習得しやすく⽣産性が向上する
• WebフレームワークPhoenixを持つ
Ø応答性が極めて⾼い
Programming should be
about transforming data
Elixir Zen Style
IoTの本質をなすビッグデータを柱に据えて
プログラミング⾔語の
新たな可能性を開拓
8
“包括的な”IoTシステム開発環境
SoCアーキテクチャ
コンパイラ
汎⽤カーネル
通信ミドルウェア
AI/MLライブラリ
SoCアーキテクチャ
コンパイラ
リアルタイムOS
通信ミドルウェア
デバイスライブラリ
SoCアーキテクチャ
コンパイラ
インタプリタ
通信ミドルウェア
数値演算ライブラリ
構成要素を横断するIoTシステム開発技術
設計階層を縦断する最適化・実⾏環境
デバイス エッジサーバ クラウド Elixirの記述”だけ”で
IoTシステム全体を
設計開発できるようにする
9
今⽇やりたいこと
• ROSのセカイをIoT/IOTな皆さまにご紹介します
­(でも触んないっすよね^^;
• 「クラウドロボティクス」の現状を共有します
­(でもなんか縁遠いっすよね:D
• ROSとIoT/IOTが連携することでどんな展開があるか,
みなさんと考えたいです(教えてください^^;
­ロボット/ROSが地域間相互接続の広域分散網と連携されると,
どのような展開がありえるでしょうか︖
• ROSのセカイをIoT/IOTな皆さまにご紹介します
• 「クラウドロボティクス」の現状を共有します
• ROSとIoT/IOTが連携することでどんな展開があるか,
みなさんと考えたいです(教えてください^^;
­ロボット/ROSが地域間相互接続の広域分散網と連携されると,
どのような展開がありえるでしょうか︖
10
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアの構成とプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
11
ロボットシステムと取り巻く課題
様々な状況に
対応する
複雑な制御
AI/ML処理の
ための処理性能
多品種少量⽣産の
展開への対応
限定された
計算資源と電⼒量
実世界との
膨⼤なデータの
やりとり
厳しい品質要求
への対応
12
ロボットの開発の進め⽅
• 開発の加速化のためには,,,
­モジュールの再利⽤性の促進
ü便利なものは使い回したい
ü「⾞輪の再発明」は避けたい
­プロセス間通信の効率的な管理
ü通信=部品間とロボット間の両⽅
üモジュールごとに開発・保守したい
ü組み合わせを簡単に試したい
­サービスの向上に注⼒したい
統⼀的な開発フレームワークによる
設計開発の加速化に期待
13
(Robot Operating System)
• ROS (ROS 1)︓2007年11⽉に最初の正式リリース
­ OSS資産や情報,対応ロボットが豊富にある
­ 最終版 Noetic の EOL は2025年3⽉まで
• ROS 2︓絶賛成⻑中の次世代版
­ ROSのコンセプトを引き継いで再設計されたバージョン
ロボットソフトウェアの開発を加速化するプラットフォーム
http://www.ros.org/about-ros/
14
Plumbing: 通信モデルとミドルウェア
• ROSノード (機能単位) の疎な結合⽅式
­登録・変更・削除・配置が容易にできる
­障害時にはノード単位で再起動を⾏える
­基本はTopicを介した⾮同期・出版購読型の通信
node1
node2
node3
node4
Topic1
Topic2
node5
出版(Publish) 購読(Subscribe)
msg
msg
msg
msg
詳細は
のちほど,,,
15
Tools: 開発促進のためのツール群
• catkin_tools: プロジェクト構成/ビルドシステム
• rqt: Qtベースのデバッグフレームワーク
• gazebo: 3D物理シミュレーションツール
• rviz: 可視化ツール
­他にもroslaunch, rosbagなど,,,
16
Capabilities: 再利⽤性の⾼い⾞輪
• ROSパッケージ︓有⽤な機能がまとめられたライブラリの集合
­2,000以上のパッケージが公開されている
https://index.ros.org/packages/
­利点︓既存資産として活⽤できる
üコンポーネント指向開発を実現できる
パッケージ名 内容
tf ロボットの3次元座標と連鎖関係,時間の管理
teleop ロボットの移動⽅向の操作
usb_cam USBカメラの画像の取り込み
ros_control ハードウェアを抽象化したアクチュエータの制御
MoveIt マニピュレーションの制御アルゴリズム
Navigation 地図ベースの⾃⼰位置推定と経路計画のアルゴリズム
17
Ecosystem: 世界規模のコミュニティ
• オンライン
­ROS Wiki: パッケージ・⽂書の公開
­ROS Answers: Q&Aページ
­ROS Discourse: リリースやイベントの告⽰
üTSC, SIG-WGsの議事録も全て公開
• オフライン
­ROSCon: 世界規模の開発者会議
ü最近はlocal conf.も
­SIG meetups, workshop,
local events, etc.,,,
18
ROSの歴史と開発体制の変遷
2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
1st commit to SourceForge (Nov. 2007)
https://sourceforge.net/p/ros/code/1/log/?path=
http://www.ros.org/news/
2017/11/ros-turns-10.html
ROS 1.0 released
ROS 2 Alpha released
http://wiki.ros.org/Distributions
https://docs.ros.org/en/
rolling/Releases.html
ROS 2 TSC
19
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアの構成とプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
20
ROSの通信⽅式
• トピック topic
­ROS通信の基本
­⾮同期型の出版購読通信
(Publish/Subscribe)
• サービス service
­1対1・同期型のRPC通信
(Request/Response)
• アクション action
­フィードバック付きRPC通信
­⾮同期と同期の組み合わせ
node
service
action
node
node
node
node
topic
publish
subscribe
node
node
node
node node
request
response
goal
feedback
result
node
service
action
node
node
node
node
topic
publish
subscribe
node
node
node
node node
request
response
goal
feedback
result
21
ROSの通信型
• ロボット通信に頻出する型が定義されている
­Primitive Type: Bool / Byte / Char / Duration / String / Time /
Float32, 64 / Int8, 16, 32, 64 / UInt8, 16, 32, 64 / Empty
­Array Type: Header / ByteMultiArray / ColorRGBA /
MultiArrayDimension / MultiArrayLayout / Float32, Float64MultiArray /
Int8, Int16, Int32, Int64MultiArray / UInt8, UInt16, UInt32, UInt64MultiArray
• 独⾃の型のメッセージを定義することができる
­例︓両⾞輪の⾓速度と回転量,現在位置の3次元座標,など
­階層構造や配列を含むこともできる
­*.msg, *.srv ファイルで定義する
­パッケージ化して流⽤もできる
requestの設定
(serviceへの送信値)
responseの設定
(serviceからの返送値)
22
ROS 1の通信プロトコル
• roscore (ROS Master)︓
­ノードの登録と名前空間の管理
• XML-RPC︓
­roscoreへのノードの登録
­ノード間の接続関係の確⽴
• TCPROS
­TCP/IP上での⾮同期通信
­UDPROSもある
23
ROS 2のソフトウェア階層構造
node.cpp
rclcpp
node.py
rclpy
RCL(ROS Client Library)
RMW(ROS MiddleWare)
DDS A
Operating System
node.rs
rclrs
・・・
DDS (Data Distribution Service)
• OMG標準仕様として規定
• 出版購読通信を提供
• ノード⾃動検出 など
• 共通の基盤機能
• 実装はC⾔語
• 各⾔語から呼び出すことで
ライブラリを開発可能
DDS B ・・・
• DDSの通信機能を抽象化するAPI層
• 複数のDDS実装から選択可能
24
ROS 2に(公式)対応しているDDS実装
Middleware Library Provider Support ライセンス・備考等
rmw_fastrtps_cpp eProsima
Fast-RTPS
Tier 1 Apache 2.0,現時点のROS 2デフォルト,
軽量実装
rmw_connext_cpp RTI Connext Tier 1 商⽤/研究(機能制限)ライセンス,
No.1ベンダ,PF/Arch.サポートは限定的
rmw_cyclonedds_cpp Eclipse
Cyclone DDS
Tier 1 Eclipse Public License 2.0(Open),
⾼性能・⾼信頼な評価結果,
次のdistributionからROS 2デフォルトに
rmw_fastrtps_
dynamic_cpp
eProsima
Fast-RTPS
Tier 2 Apache 2.0,型の実⾏時の解釈・変換
(type introspection)をサポート
REP-2000 を基に
作成・整理
• 実装機能やライセンス形態で複数のDDSから通信層を選択できる
• 異種DDSを選択したノード間で通信できる(rmw層で抽象化)
­ Tier 1: Open Robotics公式の⼿厚いサポート
­ Tier 2: 公式だが限定的なサポート
25
QoS Control
• 通信経路の品質を指定する(Pub/Sub間で互換性が必要)
• 指定できるパラメータの例 (下線はデフォルト設定)
­History (履歴): Keep last (任意の値数を保持) or Keep all
­Depth (深さ): Size of the queue (Keep lastの個数 10)
­Reliability (信頼性): Best effort or Reliable (リトライ試⾏)
­Durability (耐久性): Transient local or Volatile (遅延⾮許容)
https://index.ros.org/doc/ros2/Concepts/About-Quality-of-Service-Settings/
Profile History policy Reliability Durability
Default Keep last 10 Reliable Volatile
Services Keep last 10 Reliable Volatile
Sensor data keep last 5 Best effort Volatile
Parameters keep last 1000 Reliable Volatile
26
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアの構成とプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
27
閑話休題︓組込み技術のROSへの統合
• 様々な状況に対応する複雑な制御
• 限定された計算資源と電⼒量
• AI/ML処理を実現する処理性能
• 多品種少量⽣産の展開への対応
組込み技術
Ø⾼機能・多機能化
Ø省電⼒化
Ø並列性能向上
Ø設計柔軟性向上
通
信
バ
ス
アナログ回路
プロセッサ
SW
FPGA
HW
通
信
IF
IF
レイヤ
IF
レイヤ
driver
HW
SW
RTOS
SW
SW
IF
レイヤ
SW
28
ROS 1ノードの軽量実⾏環境
• ロボットアプリのリアルタイム性の確保を容易化
• ROSとのAPI互換による既存資産の移植性の向上
• 分散ロボットシステムの省電⼒化を実現
貢献
組込みデバイスでROS 1を活⽤する技術
H. Takase, et al., “mROS: A Lightweight Runtime Environment of ROS 1 nodes for Embedded
Devices,” Journal of Information Processing, Vol. 28, No. 2, pp. 150-160, Feb 2020.
29
ソフトウェア階層と構造
H. Takase, et al., “mROS: A Lightweight Runtime Environment of ROS 1 nodes for Embedded
Devices,” Journal of Information Processing, Vol. 28, No. 2, pp. 150-160, Feb 2020.
inter-task communication
TCP/IP communication
mROS comm. lib
TCPROS
XMLRPC
• ROSと互換性のあるAPIを提供
­ 下回りのスタックは組込み向けの
TCP/IPスタックとカーネルで構成
­ マルチノード化も可能
30
適⽤事例︓特徴点抽出
FPGAのROSへの統合
• ROSはつまるところ通信ライブラリである
• プログラマブルSoCの活⽤︓FPGAをドライバとして扱う
üFPGA︓再構成可能なハードウェア回路・電⼒効率が⾼い
üトピックを外部ノードへのインタフェースに⾒⽴てる
(1) CPUからFPGAにデータを送信して処理をオフロード
(2) FPGAでデータを直接処理してからCPUに送信
31
FPGA
CPU
bus
ROS
data
circuit
node
topic
data
circuit
driver
node
topic
driver
ZytleBot
ROS x FPGA統合開発PF
• Zynq + TurtleBot
­Zynq Ultrascale+ MPSoC
­TurtleBot3
• 開発⼿法とテンプレートを提供
­ROS/FPGA協調設計フロー
­FPGA駆動⽤ROSノード
­PS/PL通信インタフェース
32
ZytleBot
• 新⽥, ⽥村, ⾼瀬 ”ZytleBot: ROSベースの⾃律移動ロボットへのFPGAの統合に向けて“ IEICE-RECONF 201909 (招待講演)
• Y. Nitta, Sou Tamura, Hidetoshi Yugen and Hideki Takase, “ZytleBot: FPGA Integrated Development Platform
for ROS Based Autonomous Mobile Robot,” in ICFPT 2019.
ROSとFPGAの統合を加速化
ロボットの動作品質を向上
ROS x FPGAの適⽤事例
33
ZytleBot
FPGA
CPU
ROS
camera
Image
Preprocessor
driving
motor
webcam
SVM
Classifier
画像処理を
275倍⾼速化
• 新⽥, ⽥村, ⾼瀬 ”ZytleBot: ROSベースの⾃律移動ロボットへのFPGAの統合に向けて“ IEICE-RECONF 201909 (招待講演)
• Y. Nitta, Sou Tamura, Hidetoshi Yugen and Hideki Takase, “ZytleBot: FPGA Integrated Development Platform
for ROS Based Autonomous Mobile Robot,” in ICFPT 2019.
SVM Classification
! "!#!
"
!#$
+ %
Feature Extraction
8x8 BGR 8x8 HSV HOG
34
ElixirのROS 2 Client Library Rclex
RMW (ROS MiddleWare)
node.py
rclpy
RCL (ROS Client Library)
HW
node.cpp
rclcpp Rclex
node.ex
node node node
DDS B
DDS A DDS (Data Distribution Service)
• OMG標準仕様として規定
• 出版購読通信を提供
• ノード⾃動検出 など
• 共通の基盤機能
• 実装はC⾔語
• 各⾔語から呼び出すことで
ライブラリを開発可能
• DDSの通信機能を抽象化するAPI層
• 複数のDDS実装から選択可能
tlk-emb/rclex
35
ROS x Elixir︕の⽬指す貢献 Rclex
Publisher
・
・
Topic1
Subscriber
・
・
Publisher
・
・
Topic1 Subscriber
・
・
Topic2
Topic3
...Erlangプロセスに実⾏させる処理
ØElixirでErlangプロセスを
同時かつ⼤量に⽣成
Øプロセスで出版購読処理と
付随するコールバックを実⾏
軽量プロセスの並⾏処理で
⽣成ノード数に対する
スケーラビリティを向上
tlk-emb/rclex
36
Erlang VM/カーネルとの関係 Rclex
OS
Process Space
rclcpp
node1
rclcpp
node2
Erlang VM
Rclex
node1
Rclex
node2
CPU
process
exec. queue
Pub process1
Sub process1
Sub process2
...
RCL node block =
Erlang resource object
• OSの1プロセスとしてErlang VMが起動
• Erlangスケジューラの中でループ処理とプロセス=ROSノードを実⾏
• プロセスが軽量︓起動時間が数マイクロ秒,メモリはおよそ300ワード
RCL資源をstatic linkした
共有ライブラリをErlang NIFを
介してロード・呼び出し
tlk-emb/rclex
37
Rclexノードの実装例 (topic出版)
tlk-emb/rclex
Rclex
defmodule PubSample do
def pubmain do
num_node = 10
Rclex.rclexinit
|> Rclex.create_nodes(ʻtest_pub_nodeʼ,num_node)
|> Rclex.create_publishers(ʻtesttopicʼ, :single)
|> Rclex.Timer.create_wall_timer(1000,&pub_func/1)
end
def pub_func (publisher_list) do
n = length(publisher_list)
msg_list = Rclex.initialize_msg(:string, n)
Enum.map(0..n-1,fn(index)->
Rclex.setdata_string(Enum.at(msg_list,index),”hello”)
end)
Rclex.Publisher.publish(publisher_list,msg_list)
end
end
ノード数
設定されたノード名にインデックスを
付けてノードを⽣成
トピックの作成
:single->1つのトピック
:multi-> 複数のトピック
実⾏周期と実⾏する関数の設定
ノード数に応じた
メッセージリストを⽤意
トピックへの出版
38
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアの構成とプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
その前に,ROS 2 TSC @2021-02-22
• ロードマップの策定やコア機能などを主導
https://docs.ros.org/en/foxy/Governance.html
• ROS 2開発に貢献する組織(の技術者)により編成
­いわゆるBig Techやロボティクス業界の有名企業
­半導体やOSやDDSのトップベンダ など
­特定トピックに特化したWGsも編成されている
• 品質保証を重視した開発プロセスの採⽤
­アジャイル︓Kanbanによるプロジェクト進⾏の可視化
­テスト駆動︓継続的インテグレーション(CI)の適⽤
40
AWS RoboMaker
• ROS開発環境がすぐに使⽤開始できる
• 知能ロボットの構築を容易化できる
• ⼤規模な並列シミュレーションを実⾏できる
• アプリを⼤量のロボットに対して安全に
管理・デプロイできる(フリート管理)
https://aws.amazon.com/robomaker/
https://youtu.be/_YY0-SdlhNg
41
ROS with Windows and Azure
• Windows 10 Desktop / IoTでのサポート
• MS各種ツール・サービスとの連携
• ROSノード・パッケージの提供
https://aka.ms/ros
42
rapyuta.io by Rapyuta Robotics
https://www.rapyuta-robotics.com/ja/platform/
• 異種・マルチロボットシステムにスケールと
柔軟性を与える分散型インテリジェンス
• すべてのロボットとクラウド上で動作する
分散アプリケーションの構築、デプロイ、監視
• ROSとの互換性を備えた、安全でスケーラブルな
ロボット間およびロボットとクラウド間の通信を実現
• API⼜はWebUIを通し、すべてのロボットから
データを収集、保存、可視化
https://youtu.be/vogOEIwGh50
43
FIWARE with ROS
RoboticBase by TIS micro-ROS and FIWARE by eProsima
https://youtu.be/XJL2_FHcils
44
Webとの︖ブリッジ
• rosbridge_suite
­ROSメッセージのJSON API形式
­UDP, TCP, WebSocketのサーバを提供
­ROS 2版も開発中
• mqtt_bridge
­ROSとMQTTの双⽅向のブリッジ
­JSON (or MessagePack) に変換
• ROSLink
45
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアの構成とプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
IoTシステム開発時の課題 (例: ⾃動運転配⾞システム)
46
• IoT開発には様々な分野の技術領域
=技術者の結集が不可⽋
• 結合テストや検証が困難である
• 問題発⽣時にはその原因と
経路の調査が複雑となる
• 実証実験コストも⼤きくなる
凡例
クラウド
CAN
ECU
⾞載PC
管制サーバ
スマホ
Web系
⾃動運転
制御系
ECU制御系
バックエンド
サーバ系
メカ系
エレキ系
ネットワーク系
IT系エンジニア
交通サービス系
ET系エンジニア
制御系エンジニア
ICTエンジニア
センサ
IoTサービス構築時の課題 (例: ロボットサービス)
ロボットシステム・
開発者
物理
シミュレータ
システム要件
ロボットサービス・提供者
実証実験
設計・実装
作りたいロボットサービス
・ロボットサービスをどう組み合わせると,効果的な新しいサービスを創出できるかわからない
・新しいサービスを検討するにしても,実物のロボットでは準備・⼿間がかかりすぎる
ロボットサービス群
? ??
どう組み合わせればよい︖
実物のロボットは⼿間がかかる
どうやって動かす︖
要件が頻繁に変わる
実証実験時に結合トラブ
ルが頻発する
要件変更適⽤に
時間がかかる
47
『箱庭』とは︖
• 箱の中に,様々なモノをみんなの好みで配置して,いろいろ試せる︕
⇒ 各技術者が開発対象と興味(=アセット)を持ち寄って,机上で実証実験
ECU制御系
エンジニア
バックエンドサーバ
系エンジニア
ネットワーク系
エンジニア
⾃動運転
制御系エンジニア
交通サービス系
エンジニア
48
『箱庭』のアーキテクチャ
Simulink
箱庭アセット・サービス
RTOS
箱庭ドメイン・サービス
⾞載系 家電系
ロボット
サービス
航空・
宇宙系
箱庭コア
サード
パーティ
(クラウド)
サード
パーティ
(可視化)
■箱庭ドメイン・サービス
様々な分野への適応を⽬指す
■箱庭アセット・サービス
シミュレーション内の登場物をアセット化
箱庭アセット数の拡充を⽬指す
■箱庭コア
箱庭固有のシミュレーション技術をコア技術化
Hakoniwa Engine
■サードパーティ
既存のサードパーティ製は積極利⽤
49
Hakoniwa Engine:
複雑なシステムを仮想環境で動作させるためのコア機能
50
箱庭エンジン
(コア機能)
アセット
アセット
スケジューリング
時間管理
物理シミュレータ
シミュレーション時間
マイコン
シミュレータ
シミュレー
ション時間
テスト実⾏管理
シナリオ
可視化ツール
可視化
⾃動化
コンポーネント化
同期・通信
アセット管理
プロトタイプモデルの開発
51
プロトタイプモデル ⽬的
A︓
単体ロボット向け
・シミュレータ間の連携⽅法の検討
・アセット間の時間同期と通信⽅式の確⽴
・広報活動(ユーザ・技術者の獲得)
B︓
ROS・マルチECU向け
・ヘテロ環境(ECU/FPGA/GPU)の机上構築
・通信可視化⽅法の検討(ROS連携含む)
・箱庭アセットの仕組み検討
C︓
ロボット間協調動作向け
・クラウドサービスとの連携
・ロボット間の協調連携⽅法の検討
・箱庭アセットの拡充
マイコン・シミュレータ
制御処理(C/C++)
EV3RT
ASP3/ASP
athrill
⽬的︓箱庭コンセプトの実現可能性の実証と技術研鑽
A︓単体ロボット向けシミュレータ
52
技術研鑽視点での狙い︓
・物理シミュレータと
マイコンシミュレータ間
連携⽅法の検討
・異なるシミュレータ間の
時間同期の検討
その他の狙い︓
・ETロボコンユーザ層に
箱庭を広める(広報活動)
ETロボコンを題材として構築 マイコン・シミュレータ
制御処理(C/C++)
EV3RT
ASP3/ASP
athrill
HackEVのUnityアセットは,ETロボコン実⾏委員会より提供いただいたデータを基に作成しています.
実⾏委員会の皆さまに深く感謝いたします.ただし本アセットはETロボコンの本番環境とは異なりますので,⼤会に
参加予定の⽅はご注意ください.また,本アセットは,個⼈利⽤または教育利⽤に限定してご利⽤ください.
Unityパッケージの設計と作成にあたっては,宝塚⼤学 東京メディア芸術学部 吉岡章夫准教授および
学部⽣の杉﨑涼志さん,⽊村明美さん,千葉純平さんにご協⼒いただきました。
• 1台のロボットが1個の組込みマイコンで制御
• 仮想化対象︓HackEV @ETロボコン
• 組込みマイコン︓athrill
• カーネルとロボット制御⽤プログラムの仮想化
• 実⾏プラットフォーム︓TOPPERS/EV3RT
• ISA︓V850E2M <- ARMv7-A
• カーネル︓TOPPERS/ASP3 <- HRP3
• 制御アプリのレベルでは互換となる
• 可視化・物理演算︓Unity
• センサ値の取得(カラー,超⾳波,ジャイロ)
• モータ制御・LCD表⽰
プロトタイプモデルの構成
53
超⾳波センサ
カラーセンサ
センサ⽤ライト
モータ
ジャイロセンサ
LCD表⽰
マイコン・シミュレータ
制御処理(C/C++)
EV3RT
ASP3/ASP
athrill
プロトタイプモデルの動作例
54
[デモ内容]
Athrill上の制御アプリケーションにより,Unityロボット(HackEV)がライントレースする
⾛⾏路にはカラーコードが配置されており,制御アプリケーションの⾊認識によって加速/減速/停⽌する
⾚︓加速,緑︓減速,⻘︓停⽌
[Unity] [Athrill]
ロボット教育演習への展開の想定
55
• フロアの⾊,障害物までの距離を
各種センサで検出して,ゴールまで
たどり着こう
• ロボットの内部状態でLEDカラーで
変化させてみよう
• 地⾯に落ちているボールを運んで
みよう
ゴール
障害物
⾛⾏ルート ボール
(運べるか?)
LEDカラー
B︓ROS・マルチECU向けシミュレータ
56
技術研鑽視点での狙い︓
・マルチECU/FPGA/GPU間の連携⽅法検討(シミュレーション時間同期等)
・箱庭アセット間の通信可視化⽅法の検討(ROS/ROS2連携含む)
・箱庭アセットの仕組み検討
その他の狙い︓
・ROSユーザ層に箱庭を広める(広報活動)
・その他チャレンジ(つくばチャレンジ/FPGAデザインコンテスト)
物理シミュレータ マルチECUシミュレータ
ROS/ROS2
FPGA/GPU
画像認識
仮想Linux
マシン(QEMU)
ロボット
制御
モーター
病室
シミュレータ
間通信
センサ
仮想マイコン
(athrill/mROS)
モータ
制御
C︓ロボット間協調動作向けシミュレータ
57
物理シミュレータ 仮想サーバー
(RDBOX)
ロボット制御・
シミュレータ
シミュレータ
間通信
技術研鑽視点での狙い︓
・クラウド連携⽅法検討
・ロボット間の連携⽅法検討(より複雑なロボットの動き/⼲渉に挑戦)
・箱庭アセットを増やす仕組みの検討
その他の狙い︓
・RDBOX連携(開発⽀援仮想環境としての箱庭の実績作り)
・RDBOXユーザ層に箱庭を広める(広報活動/ROSCon JP 参加)
プロトタイプモデルの開発状況
58
プロトタイプモデル 技術調査 実装 動作確認 配布
〇 〇 〇 〇
△ △ △ ×
〇 〇 〇 ×
EV3RTの教育向け活⽤に興味のある⽅,
ETロボコンへの参加を検討される⽅向けに公開中
仮想マイコン(docker/athrill/mROS)とUnity間連携完了
FPGA/GPUおよびLinux(QEMU)との連携⽅法を検討予定
ET & IoT Digital 2020のTOPPERS/SESSAMEパビリオンにて
RDBOXとの連携⽅法/デモ等をご紹介中︕︕
59
RDBOX by インテック
①⾃動でロボット実⾏環境を作る・守る、維持する ②ロボットを改良し続ける
③効率的にリソースを使う
Robotics Developers BOX︓ロボット技術者の為の道具箱
RDBOXは、クラウドネイティブとエッジコンピューティング技術を⾼度に統合した、ロボット/IoT開発者のための
先進的なITプラットフォームです。OSSとして公開されており、誰でも簡単に使うことができます。
59
60
RDBOX x 箱庭で実現するこれからの開発スタイル
Logging
CI/CD
• コンテナ作成
• 静的解析
• ユニットテスト
• システムテスト
commit
【箱庭システムテストS】
• 動作を点数化する仕組み
• 録画の仕組み
• 並列実⾏する仕組み
• 倍速で動かす仕組み
Developper
実機へ投⼊
(⾃動で)
差し戻し
Hook
Visualization
Analyze
実⾏ファイル
差し戻し
× RDBOX App Marketで好きなアプリを選んで
RDBOXが供するネットワーク環境下で
クラウドコンピュートリソースを活⽤しながら稼働
Feedback
ログファイル
Cloud
Real
World
OnPre
or
IaaS
Try & Errorを繰り返すことをサポートし、自動化によって属人性を排除
ブラウザからいつでも・どこでも・誰でも開発に参加できる
60
61
61
CI/CD for ROS powered by & 箱 庭
https://twitter.com/fudekunJP/status/1356840768527163394
62
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
• ROSの紹介
­ロボット開発を加速化する4つの側⾯
­通信ミドルウェアとプロトコル
­閑話休題︓mROS, ZytleBot, rclex
• IoT/IOT for/with ROS
­IoT/IOT分野におけるロボット業界の動向
­箱庭とRDBOXによる展開
• おわりに︓IoT/IOT分野への展開
63
おわりに
• ROS (Robot Operating System) の紹介
­特に Plumbing を重点的に
• IoT/IOT for/with ROSの動向の共有
­地域間相互接続の広域分散網と連携されていくと,
どのような展開がありえるでしょうか︖
­強⼒に,協⼒しませんか︕︖︖
https://toppers.github.io/hakoniwa/ 箱 庭
64
ROS Japan Users Group
• Discourse: https://discourse.ros.org/c/local/japan
• connpass: https://rosjp.connpass.com
­勉強会・講習会など 初⼼者から歴戦の猛者まで︕
­関⻄や瀬⼾内・九州でも開催︕
­メンバー数 2,066名 @2021/03/03
üSlack: rosjp
üTwitter: #rosjp
65
参考情報︓書籍
• ⼩倉 崇︓ROSではじめるロボットプログラミング
まずはじめに読むべき書籍︕バージョンと情報は古いので注意
• 表 允皙 ほか︓ROSロボットプログラミングバイブル
TurtleBot3を⽚⼿に進める場合の良書
• 上⽥ 隆⼀︓Raspberry Piで学ぶROSロボット⼊⾨
ラズパイマウスを⽚⼿に進める場合の良書
• ⻄⽥ 健 ほか︓実⽤ロボット開発のためのROSプログラミング
中級向け ロボット開発をなにか実践してから読むのが有⽤
• 近藤 豊︓ROS2ではじめよう次世代ロボットプログラミング
世界初 && 最も充実したROS 2の解説本︕
• 岡⽥ 浩之︓ロボットプログラミングROS2⼊⾨
⼿を動かしながらROS 2を基本から学べる
66
参考情報︓Web Tutorial
• ROS Tutorials http://wiki.ros.org/ROS/Tutorials
• ROS 2 Tutorials https://index.ros.org/doc/ros2/Tutorials/
• ROS講座 (on Qiita) https://qiita.com/srs/items/5f44440afea0eb616b4a
• 5分でワカル!? ROSとはなにか
https://twitter.com/takasehideki/status/1365328482583019523
• 「ROS」の基礎とROS 2プログラミングの実践
https://drive.google.com/open?id=12yDH1WFAyaunIROPaFlo3XULziugxIze

Weitere ähnliche Inhalte

Mehr von Hideki Takase

IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
Hideki Takase
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
Hideki Takase
 

Mehr von Hideki Takase (20)

ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: Elixirで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開発!!
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+α
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
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ハードウェアが作れちゃう,かも!!?
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
 
mROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみるmROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみる
 
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...
 
mROS:組込みデバイス向けのROS1ノード軽量実行環境
mROS:組込みデバイス向けのROS1ノード軽量実行環境mROS:組込みデバイス向けのROS1ノード軽量実行環境
mROS:組込みデバイス向けのROS1ノード軽量実行環境
 
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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

ROS (Robot Operating System) の紹介とIoT/IOT分野への展開