SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
関数型⾔語Elixirの
IoTシステム開発への展開
⾼瀬 英希
(京都⼤学/JSTさきがけ)
PPL 2021
2021/03/09
2
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
① 関数型⾔語ElixirとIoTフレームワークNervesの紹介
② “包括的な”IoTシステム開発環境
③ FPGAを積極活⽤する協調設計
④ 分散型処理配置と通信ミドルウェア
• おわりに︓Elixir for/with 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
研究対象︓組込みシステム
情報通信
メディア機器
情報家電
OA機器
産業機械
ロボット
⾃動⾞
航空機
様々な状況に
対応する
複雑な制御
AI/ML処理の
ための処理性能
多品種展開
への対応
限定された
計算資源と
電⼒量
実世界との
膨⼤なデータの
やりとり
厳しい
品質要求
5
組込みからのIoTコンピューティングへ
AI/ML技術との
密接な統合
あらゆるモノ・コトの
ネットワーク接続によって
新たな社会的価値を創造
各構成要素における
計算機特性の結集
⼤量のデバイスとデータ
「デバイスレベル並列化」
による最適化の時代へ︕
6
⾼瀬の研究テーマ
あらゆる
モノ・コトと
ヒトを繋げる
設計基盤の
確⽴
最適化 設計技術
良いモノ を 誰でも楽に
つくることができる世界へ
組込み/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
どうやってIoTをつくるのか︖
ものづくりの根幹=プログラミング⾔語
※各⾔語・フレームワークのロゴの権利は
それぞれの作成者に帰属しています
9
今⽇やりたいこと
• Elixir/NervesのセカイをPPLな皆さまにご案内します
• Elixir for/with IoTの取り組みを紹介します
• 「プログラミング⾔語の観点からのIoT研究」について,
みなさんと考えたいです(教えてください :D
おてやわらかによろしくどうぞですm(_ _)m
10
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
① 関数型⾔語ElixirとIoTフレームワークNervesの紹介
② “包括的な”IoTシステム開発環境
③ FPGAを積極活⽤する協調設計
④ 分散型処理配置と通信ミドルウェア
• おわりに︓Elixir for/with IoTの最新動向と研究の展望
Elixir??
11
※各⾔語・フレームワークのロゴの権利は
それぞれの作成者に帰属しています
12
Elixir!!
2012年に登場した新たな関数型⾔語
Erlang VM上で動作
• ⾼い並列性能を誇る
• 軽量かつ頑強なプロセスモデル
• 耐障害性が極めて⾼い
Rubyを基にした⾔語設計
• 習得しやすく⽣産性が向上する
• WebフレームワークPhoenixを持つ
Ø応答性が極めて⾼い
Programming should be
about transforming data
Elixir Zen Style
Zen(禅) とは本質美である
• プログラミングの本質とはデータの流れである
­ Elixirではデータフローと並列処理を
Enum Flow |> で直感的に記述できる
※各⾔語・フレームワークのロゴの権利は
それぞれの作成者に帰属しています
13
Elixirの気持ちよさ
• Zen Style!!
• (やや)強い動的型付けとイミュータブル性
• 処理のモジュール化と制御の抽象化
­関数とパイプ/プロセスとメッセージ
• メモリ軽量かつ堅牢なプロセスモデル
­プロセス単位でのメモリ管理と障害復旧
• バイナリ操作とパターンマッチ
Shared Data
Core #1 Core #2
3.14
ダッシュ
ボード
Link
Super
Visor
one_for_one
App
液晶
データ
ロガー
Link
センサ
監視
制御
Link
ボタン
{:ok, ref} = Circuits.I2C.open(@i2c_bus)
Circuits.I2C.write(ref, @i2c_addr, <<0xBE, 0x08, 0x00>>)
Circuits.I2C.write(ref, @i2c_addr, <<0xAC, 0x33, 0x00>>)
{:ok, val} = Circuits.I2C.read(ref, @i2c_addr, 7)
<<_state::8, raw_humi::20, raw_temp::20, _crc::8>> = val
14
• ElixirによるIoTフレームワーク
­極⼩規模のファームウェア (~>30 MB)
­堅牢性の⾼いファイルシステム
­機能の取捨選別が容易 (Buildrootの利⽤)
• Elixirと完全互換で習熟性が⾼い
­アクターベースの並⾏プログラミング
­IoT向けになにかを気にする必要なし
• 有⽤なIoTライブラリとツール
­NervesHub: Device to the Cloud!!
Bootloader A
Linux kernel (Buildroot)
Master Boot Record
Root Filesystem A
(Read-only)
Application Data
(Read-Write)
C libraries
Erlang VM
Bootloader B
Root Filesystem B
(Read-only)
C libraries
Erlang VM
CQ出版Interface
2020年6⽉号〜
2021年1⽉号
15
Nervesのリアルタイム性
ü最⼩の構成で⼗分なリアルタイム性を提供する
üSoC性能がリアルタイム性にも直結する
1. GCの設定
­ ローカルデータを消費するもの
にはminor GCの抑⽌が効果的
­ 最⼩のヒープサイズを適切に
設定することも効果がある
2. プロセス優先度の設定
­ 最悪実⾏時間の改善には
high の設定は有⽤
­ さらなる調査が不可⽋
3. CPU周波数の制御
­ 周波数の固定化はリアルタイム性の
改善に寄与する
­ IoTデバイスでは消費エネルギーの
最適化も重要となる
4. カーネルのカスタマイズ
­ 有意な効果は⾒られなかった
­ I/O処理が断続的かつ⼤量な
場合には効果がある可能性がある
https://www.verypossible.com/insights/is-
nerves-a-real-time-embedded-system
• ⾼瀬,河上,菊池︓関数型⾔語ElixirのIoTフレームワークNervesに関するリアルタイム性の評価およびその改善の試み,
情報処理学会研究報告,Vol. 2020-EMB-55,No. 7, 2020. [paper]
• Hideki Takase: An Evaluation of Real-Time Performance for Nerves, Nerves in Action Web Series [slide]
Custom
Boards
Unofficial Target
16
主な対応デバイス
x86_64
BeagleBone
https://youtu.be/DvwgGz_5D5I
ラズパイ OSD32MP1
17
ElixirとNervesの採⽤事例
画像クリックで
詳細ページに
• 8 Companies That Use Elixir in Production
https://serokell.io/blog/elixir-companies
• ⽇本で Erlang/OTP や Elixir を利⽤している会社⼀覧
github: voluntas/japanese-erlang-elixir-companies
https://www.nerves-project.org/case-studies
Le Tote:
⾐料品倉庫のRFIDと
キオスクによる在庫管理
Hop:
顔認証機能付きの
キオスクビールサーバ
FarmBot:
スマートファームの実現
18
(時間があれば)論よりRUN!!
• 必要な環境︓Elixir, Erlang, nerves_bootstrap, hex, rebar
­macOS, Linux (Ubuntu) 向け︓ ElixirでIoT #4.1
­Windows (WSL 2) 向け︓ ElixirでIoT #4.1.1
­VSCode + dev-container: ElixirでIoT #4.1.2
• デモの内容
1. Nervesプロジェクトの作成・各種設定
2. ファームウェアのビルドとmicroSDへの書き込み
3. OTAでのファーム更新とGPIOデバイス操作
4. Phoenixとの連携で温湿度表⽰
19
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
① 関数型⾔語ElixirとIoTフレームワークNervesの紹介
② “包括的な”IoTシステム開発環境
③ FPGAを積極活⽤する協調設計
④ 分散型処理配置と通信ミドルウェア
• おわりに︓Elixir for/with IoTの最新動向と研究の展望
20
“包括的な”IoTシステム開発環境
SoCアーキテクチャ
コンパイラ
汎⽤カーネル
通信ミドルウェア
AI/MLライブラリ
SoCアーキテクチャ
コンパイラ
リアルタイムOS
通信ミドルウェア
デバイスライブラリ
SoCアーキテクチャ
コンパイラ
インタプリタ
通信ミドルウェア
数値演算ライブラリ
構成要素を横断するIoTシステム開発技術
設計階層を縦断する最適化・実⾏環境
デバイス エッジサーバ クラウド
Elixirの記述”だけ”で
IoTシステム全体を
設計開発できるようにする
21
設計階層の縦断
SoCアーキテクチャ
コンパイラ
実⾏環境
通信ミドルウェア
ライブラリ
1. FPGAを積極活⽤する協調設計
• 関数型⾔語からの⾼位合成
• 並列HWの調停IPの設計
2. ElixirのIoT向け軽量実⾏環境
• インタプリタ⽅式/コンパイラ⽅式
• 静的解析によるデータ活⽤の最適化
• リアルタイム性能の強化
3. ⾼性能統計エンジン
• ビッグデータ対応数値演算ライブラリ
• 並列分散処理AI/MLエンジン
22
構成要素の横断
5. 開発フレームワークの実証的検証
• 適⽤事例による有効性と実⽤性の⽴証
• 被験者実験の実施による開発⽣産性の評価
4. 分散型処理配置と通信ミドルウェア
• データ中⼼型による⼀気通貫のシステムレベル設計
• ⼀体のElixir記述からの処理分割と適切配置
• スケーラブルなデータ通信を実現する通信機構とミドルウェア
Rclex
23
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
① 関数型⾔語ElixirとIoTフレームワークNervesの紹介
② “包括的な”IoTシステム開発環境
③ FPGAを積極活⽤する協調設計
④ 分散型処理配置と通信ミドルウェア
• おわりに︓Elixir for/with IoTの最新動向と研究の展望
FPGA (Field Programmable Gate Array)
• ハードウェアを⾃由に形成可能なLSI
• GPUよりも電⼒効率に優れる
• プロセッサと密結合されたSoCが
最近の主流になっている
­柔軟性の必要な逐次処理はSWで
­並列性のある⾼負荷処理はHWで
24
IOB
SB
CB LB
IOB
IOB
SB
IOB LB
SB
CB CB
SB
CB
SB SB
CB CB
LB IOB
IOB LB
SB SB SB
IOB IOB
CB
CB
CB
CB
CB
CB
⼊出⼒ブロック
コネクションブロック
LB 論理ブロック
IOB
SB スイッチブロック
CB
プロセッサ
通信バス
FPGA
HW
SW
SW
25
⾼位合成 (HLS: High Level Synthesis)
• 抽象度の⾼い動作記述からRTLを⽣成する技術
­汎⽤プログラミング⾔語によって振る舞いを定義
­「なに」を⾏うかに重点を置いて設計する
ü多くの商⽤ツールはC/C++またはその拡張⾔語
­ソフトウェア志向の協調設計との親和性が⾼い
プロセッサ
通信バス
FPGA
HW
SW
SW
int_t main () {
a = func1(xxx);
b = a + func2(yyy);
}
int func1(int x) {
…
return val;
}
int func2(int x) {
int a[N];
int i;
for(i=0;i<N;i++){
a[i] = ・・・;
:
}
}
x
func
i
a
SW
26
⾼位合成からみたプログラミング⾔語
R. Nane, et al.: A Survey and Evaluation of FPGA
High-Level Synthesis Tools, IEEE T-CAD, 2015.
M. W. Numan, et al.: Towards Automatic High-Level Code
Deployment on Reconfigurable Platforms: A Survey of High-
Level Synthesis Tools and Toolchains, IEEE Access, 2020.
27
Elixirによる⾼位合成︓アイデア
input_list
|> Flow.from_enumerable(stages: 4)
|> Flow.map(& foo(&1))
|> Flow.map(& bar(&1))
|> Enum.to_list
|> Enum.sort
from_
enumerable
input_list
foo
foo
foo
foo
sort
to_list
arbitrator
bar
bar
bar
bar
input
_list from_
enume
rable
to_list
sort
foo bar
foo bar
foo bar
foo bar
arbitrator
foo bar
foo
bar
foo bar
foo
bar
foo
bar
foo
foo bar
foo
bar
foo bar bar
foo bar
foo bar
foo bar
foo bar
• H. Takase, et al. “WiP: A concept of a hardware design environment with the functional language Elixir,” in CODES+ISSS, 2019.
• H. Takase, “Cockatrice: A Hardware Design Environment with Elixir,” ElixirConf US 2019. [video] / [slide]
• H. Takase, “Towards a Hardware Synthesis Environment from the Functional Language Elixir,” ASP-DAC 2021 Designersʼ Forum.
• H. Takase, et al. “WiP: A concept of a hardware design environment with the functional language Elixir,” in CODES+ISSS, 2019.
• H. Takase, “Cockatrice: A Hardware Design Environment with Elixir,” ElixirConf US 2019. [video] / [slide]
• H. Takase, “Towards a Hardware Synthesis Environment from the Functional Language Elixir,” ASP-DAC 2021 Designersʼ Forum. 28
設計記述と合成フロー
設計記述の
解析
設計記述
Elixir
ライブラリIP・
テンプレート
HDL+DSL
構⽂⽊
AST
Elixir関数対応
HWモジュール⽣成
HW IPモジュール
HDL
データフロー合成 データフロー型
HW回路 HDL
HW回路
bitstream
IFドライバ
C
論理合成
(HW回路合成)
アプリ記述
Elixir+C(NIF)
IF回路
ドライバ合成
SWコンパイル
Elixirライブラリと機能等価な
モジュールをIPとして提供
(HW屋さん的にはIPベース設計)
無名関数の演算⼦・関数や
並列度等のパラメータを
テンプレートのDSLに適⽤
SW/HW間のインタフェース機構を⽣成
29
機能等価なHDL IPの設計
• Enumライブラリ関数の処理パターンを分類
1. 各要素に対して独⽴して結果を出⼒する演算・関数
2. 複数要素を受け取って単⼀要素を出⼒する演算・関数
ü処理に結合性があればHWモジュールは集約可能
3. 複数要素を受け取って複数要素を出⼒する演算・関数
• H. Takase, et al. “WiP: A concept of a hardware design environment with the functional language Elixir,” in CODES+ISSS, 2019.
• H. Takase, “Cockatrice: A Hardware Design Environment with Elixir,” ElixirConf US 2019. [video] / [slide]
• H. Takase, “Towards a Hardware Synthesis Environment from the Functional Language Elixir,” ASP-DAC 2021 Designersʼ Forum.
30
SW/HW通信インタフェース機構
SWの関数呼び出しと
同じ記述でHWを起動
ErlangのNIF機能で
C実装デバドラをラッピング
Elixirのリストと
Cの配列を相互変換
Xilinx Zynq搭載の
AMBA AXI4に準拠して通信
Xilinx Zynq搭載の
AMBA AXI4に準拠して通信
Elixirライブラリ関数と
機能等価なHDL IP
• H. Takase, et al. “WiP: A concept of a hardware design environment with the functional language Elixir,” in CODES+ISSS, 2019.
• H. Takase, “Cockatrice: A Hardware Design Environment with Elixir,” ElixirConf US 2019. [video] / [slide]
• H. Takase, “Towards a Hardware Synthesis Environment from the Functional Language Elixir,” ASP-DAC 2021 Designersʼ Forum.
31
現状と⽅向性
• Cockatrice︓Elixirの⾼位合成系
­ 9種類のEnum関数をHDL IP化
­ 組込みボード Zybo 向けに通信機構を
実装して実機動作を確認
ü AXI4では性能が出ない
­ Vivado HLS以外との連携を模索中
• 狙いどころ︓AI/MLアプリ
ü 少なくとも組込み向けではなさそう
­ IoT向けビッグデータのストリーム処理
­ 柔軟に機能を変えたいクラウドサーバ処理
• H. Takase, et al. “WiP: A concept of a hardware design environment with the functional language Elixir,” in CODES+ISSS, 2019.
• H. Takase, “Cockatrice: A Hardware Design Environment with Elixir,” ElixirConf US 2019. [video] / [slide]
• H. Takase, “Towards a Hardware Synthesis Environment from the Functional Language Elixir,” ASP-DAC 2021 Designersʼ Forum.
Elixirはリアルタイムアプリには向いているが,
データ量が⼤きくなると性能が出ない
32
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
① 関数型⾔語ElixirとIoTフレームワークNervesの紹介
② “包括的な”IoTシステム開発環境
③ FPGAを積極活⽤する協調設計
④ 分散型処理配置と通信ミドルウェア
• おわりに︓Elixir for/with IoTの最新動向と研究の展望
33
(Robot Operating System)
• Plumbing: 出版購読型の通信ミドルウェア
• Tools: プロジェクト管理,デバッグ,可視化,等
• Capabilities: 膨⼤なライブラリ・パッケージ
• Ecosystem: 世界規模の強⼒なOSSコミュニティ
ロボットソフトウェアの開発を加速化するプラットフォーム
http://www.ros.org/about-ros/
34
通信ミドルウェアとしての
• Publish / Subscribe messaging infrastructure
­ROSノード︓ロボットシステムを構成する機能単位
­Topicを介した出版購読型通信︓基本的に⾮同期・疎な通信⽅式
üノードの登録・変更・削除・配置が容易に実現できる
ü障害時にはノード単位で再起動と復旧ができる
node1
node2
node3
node4
Topic1
Topic2
node5
出版(Publish) 購読(Subscribe)
msg
msg
msg
msg
• その他の通信⽅式
­ Service: 同期式
­ Action: 同期と⾮同期の組合せ
­ Parameter: 多変量辞書
35
再利⽤性の⾼い⾞輪としての
• ROSパッケージ︓有⽤な機能がまとめられたライブラリの集合
­2,000以上のパッケージが公開されている(ROSの最⼤の⻑所︕)
https://index.ros.org/packages/
­利点︓既存資産として活⽤できる・パッケージ単位で差替えできる
üコンポーネント指向開発を実現できる
パッケージ名 内容
tf ロボットの3次元座標と連鎖関係,時間の管理
teleop ロボットの移動⽅向の操作
usb_cam USBカメラの画像の取り込み
ros_control ハードウェアを抽象化したアクチュエータの制御
MoveIt マニピュレーションの制御アルゴリズム
Navigation 地図ベースの⾃⼰位置推定と経路計画のアルゴリズム
36
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
for Elixir
37
ROS x Elixirの⽬指す貢献 Rclex
Publisher
・
・
Topic1
Subscriber
・
・
Publisher
・
・
Topic1 Subscriber
・
・
Topic2
Topic3
...Erlangプロセスに実⾏させる処理
ØElixirでErlangプロセスを
同時かつ⼤量に⽣成
Øプロセスで出版購読処理と
付随するコールバックを実⾏
l 軽量プロセスの並⾏処理で
スケーラビリティを向上
l アクターモデルの
ROSプログラミングへの融合
tlk-emb/rclex
38
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
39
ElixirからのRCL層の呼び出し Rclex
tlk-emb/rclex
defmodule RclEx do
@on_load :load_nifs
def load_nifs do
:erlang.load_nif(‘rclex',0)
end
def node_init do
end
def publish do
end
def subscription do
end
...
end
RCL,RMW
Elixirコードから渡された
Erlangリソースオブジェクト
(= 構造体分のメモリブロック)
RCL内の対応する構造体
変換
→RCL APIを呼び出す
Erlang NIFを介して
.so をロード
40
Rclex API(⼀部) Rclex
tlk-emb/rclex
関数名/引数の数 引数 機能
rclexinit/0 - 初期化
コンテキストを有効化
create_nodes/3,4 コンテキスト, ノード名,
[名前空間,] ノード数
ノード名を作成
create_publishers/3 ノードリスト, トピック,
トピックの作成⽅法
パブリッシャ⽣成
publish/2 パブリッシャリスト,
メッセージリスト
データ出版開始
create_subscribers/3 ノードリスト, トピック,
トピックの作成⽅法
サブスクライバ⽣成
subscribe/3 サブスクライバリスト,
コンテキスト, コールバック
データ購読開始
create_timer/3 ノードリスト, 時間,
コールバック
コールバック関数を
周期的に実⾏
基本的な出版購読通信を(とりあえず)サポート
41
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”, :string)
end)
Rclex.Publisher.publish(publisher_list,msg_list)
end
end
ノード数
設定されたノード名にインデックスを
付けてノードを⽣成
トピックの作成
:single->1つのトピック
:multi-> 複数のトピック
実⾏周期と実⾏する関数の設定
ノード数に応じた
メッセージリストを⽤意
トピックへの出版
42
現状と結果・⽅向性
• 実装環境・対象
­ROS 2 Dashing Diademate / Ubuntu 18.04
­Elixir 1.9.4-otp-22 / Erlang OTP 22.0.3
• 現状の評価結果
­1対1通信では Rclcpp には敵わない
­1対多/多対多では Rclex のスケールメリットがある
üノード数/データサイズが⼤きくなっても性能/メモリ量が影響を受けない
• 今後の⽅向性
­機能拡充 (executor, service, action) とテストの⾃動化/容易化
­IoT/クラウドロボティクス環境への適⽤評価
Rclex
tlk-emb/rclex
43
⽬次・内容︓
• はじめに︓⾃⼰紹介とやりたいこと
① 関数型⾔語ElixirとIoTフレームワークNervesの紹介
② “包括的な”IoTシステム開発環境
③ FPGAを積極活⽤する協調設計
④ 分散型処理配置と通信ミドルウェア
• おわりに︓Elixir for/with IoTの最新動向と研究の展望
44
Nx: Numerical Elixir!!
Introducing Nx - José Valim | Lambda Days 2021
https://youtu.be/fPKMmJpAGWc
https://dashbit.co/blog/nx-numerical-
elixir-is-now-publicly-available
45
JIT is coming to OTP!!
KEYNOTE: JIT Compiler for Erlang OTP - Lukas Larsson | Code BEAM V
https://youtu.be/lM7UV95Rpyo
https://github.com/erlang/otp/pull/2745
https://github.com/erlang/otp/
releases/tag/OTP-24.0-rc1
46
Nervesアプリ開発の効率化
栗林, 他︓IoTデバイス内アプリケーションの開発効率向上のためにコード
の変更を動的に適⽤する⽅式の提案と実装,情報処理学会研究報告,
Vol. 2021-SE-207,No. 32, 2021. [paper] [slide]
菊地︓超個体性をもったエッジコンピューティング実現に向けElixir/Nerves
環境の適合性評価,ITRC RICC-PIoT workshop 2021 [slide]
47
おわりに
• Elixir/Nervesのセカイへのご案内
• “包括的な”IoTシステム開発環境
­FPGAを設計活⽤する協調設計
­分散型処理配置と通信ミドルウェア
üまだまだ志半ば,また来年に︕︖
• Elixirの研究,やっていきませんか︖︖
­なにをやっても新しい︕まさにblue ocean!!
­ただし「それElixirじゃなくてもよくね︖」との闘いではある
※各⾔語・フレームワークのロゴの権利は
それぞれの作成者に帰属しています
SoCアーキテクチャ
コンパイラ
汎⽤カーネル
通信ミドルウェア
AI/MLライブラリ
SoCアーキテクチャ
コンパイラ
リアルタイムOS
通信ミドルウェア
デバイスライブラリ
SoCアーキテクチャ
コンパイラ
インタプリタ
通信ミドルウェア
数値演算ライブラリ
構成要素を横断するIoTシステム開発技術
設計階層を縦断する最適化・実⾏環境
デバイス エッジサーバ クラウド
codeで社会を変えていく
https://nerves-jp.connpass.com/
48
Sapporo.beam
れっつじょいなす︕︕
49
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
さんくす︕︕
@takasehideki
#NervesJP

Mais conteúdo relacionado

Mais procurados

PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Kenjiro Kubota
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfTakumi14
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかShunsukeNakamura17
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Yusuke Fujimoto
 
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~SSII
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたTakahiro Miyaura
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)Mikiya Okuno
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...Preferred Networks
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 Yugo Shimizu
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていることonozaty
 
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use ToolsDeep Learning JP
 
基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座SEGADevTech
 

Mais procurados (20)

PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdf
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
 
基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座
 

Semelhante a 関数型言語ElixirのIoTシステム開発への展開

CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1Computational Materials Science Initiative
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価Hideki Takase
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key泰 増田
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosTomohiro Kumagai
 
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化幸雄 村上
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングRyohei Kamiya
 
ファイブソリューションズデベロッパーネットワーク
ファイブソリューションズデベロッパーネットワークファイブソリューションズデベロッパーネットワーク
ファイブソリューションズデベロッパーネットワークMasayuki Isobe
 
20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデートKazumasa Ikuta
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Hideki Takase
 
【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~
【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~
【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~日本マイクロソフト株式会社
 
Python languageupdate (2004)
Python languageupdate (2004)Python languageupdate (2004)
Python languageupdate (2004)泰 増田
 
OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?Hiroshi Ouchiyama
 

Semelhante a 関数型言語ElixirのIoTシステム開発への展開 (20)

CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
関数型言語ElixirのIoTシステムへの導入に向けた基礎評価
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
Parallel Technology
Parallel TechnologyParallel Technology
Parallel Technology
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhios
 
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
ファイブソリューションズデベロッパーネットワーク
ファイブソリューションズデベロッパーネットワークファイブソリューションズデベロッパーネットワーク
ファイブソリューションズデベロッパーネットワーク
 
20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート
 
IOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデートIOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデート
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!
 
Kaleidox
KaleidoxKaleidox
Kaleidox
 
【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~
【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~
【de:code 2020】 AI on IA 最新情報 ~ CPU で AI を上手に動かすための 5 つのヒント ~
 
Python languageupdate (2004)
Python languageupdate (2004)Python languageupdate (2004)
Python languageupdate (2004)
 
OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 

Mais 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
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング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
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはHideki Takase
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク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
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αHideki Takase
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計するHideki Takase
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜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
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームHideki Takase
 
mROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみるmROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみるHideki Takase
 
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介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
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
 
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なすごいやつ
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
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ハードウェアが作れちゃう,かも!!?
 
オースティンから見えてきた「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のご紹介
 

関数型言語ElixirのIoTシステム開発への展開