Slide 1

Slide 1 text

Raspberry Pi Mouse を Nerves で動かしてみた 第16回FA設備技術勉強会

Slide 2

Slide 2 text

自己紹介 ● 衣川 亮太 (きぬかわ りょうた) ● 愛知県岡崎市の個人事業エンジニア ● 屋号:Tombo Works ● twitter: @pojiro3 ● I love Elixir & Nerves ○ 日本のNervesコミュニティであるNerves JPに所属しています

Slide 3

Slide 3 text

Raspberry Pi Mouse とは ● 株式会社アールティ 社製の ROS 2 対応 左右独立二輪方式の小型移動プラットフォームロボット ● 用途:> 教育研究用ロボットにおすすめ ● ROS 2 で動作させるので、 OSは Ubuntu をインストールし開発を行う 今回の発表は、 これをUbuntu ではなく、 Nerves を用いて動かしてみた💡という内容 https://rt-net.jp/products/raspberrypimousev3/

Slide 4

Slide 4 text

Nerves とは関数型プログラミング言語Elixir で組み込みLinux開発ができる OSS ● Elixir, 以下の特徴を持つ動的型付けの関数型言語 ○ Erlang VM上で動作する、高可用・耐障害性のある、並行処理の書きやすい言語 ○ 主にサーバーサイドで使われる ■ Webフレームワーク:Phoenix ● Nerves ○ 組み込みLinux開発をElixirで可能にするOSS ○ 機能の開発をElixirの世界に閉じて行うことができる ■ nginx, apache, /etc/の設定いじり, python でプログラム開発 バラバラ開発不要 ○ Linuxをカスタムしない限り、組み込みLinuxであることを意識せずに 開発を進めることができるのが強み!! ■ Linuxをカスタマイズしたい場合はBuildrootでカスタムすることで可能

Slide 5

Slide 5 text

イメージ ラズパイ4 Ubuntu C++, Python ROS 2 クライアント ラズパイ4 Nerves Elixir ROS 2 クライアント 通常 今回

Slide 6

Slide 6 text

Elixir ROS 2 Client Rclex ● 各ROS 2 クライアントは C 言語で 実装された rcl ライブラリ を利用する ● Rclex は rcl ライブラリを呼び出す Elixir 製の API ※私もコントリビュートしています ● ROS 2 の通信には DDS(Data Distribution Service)が使われている ○ DDS 実装の一つ > RTI Connext DDSは、自動車分 野や、大手FA分野、米国国防省の 潜水艦など大規模ネットワークのリ アルタイム制御を可能とする信頼性 の高いソリューションです。 日新システムズのサイトより抜粋 Rclex (Elixir API) https://docs.ros.org/en/humble/Concepts/Advanced/About-Internal-Interfaces.html

Slide 7

Slide 7 text

デモ動画

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

HW: アールティ製, Raspberry Pi Mouse V3 SW: Linux, Nerves (nerves_system_rpi4_mouse), Erlang VM ノートPC OS: Linux Mint, Ubuntu 派生ディストリ Logicool 製 Gamepad F310 アールティ 製 Python ROS 2 ノード joystick_controller USB Webブラウザ Elixir Webサーバ Phoenix Phoenix LiveView 時雨堂 製 Momo Webサーバ & カメラ /dev/input/js0 /dev/video0 Logicool 製 Camera C270 Elixir デバイス制御 raspimouse2_ex Elixir ROS 2 ノード Rclex で作成 /dev/rt* iframe HTTP WebSocket DDS(UDP) 構成図 点線を挟んで 上段:ラズパイマウス 下段:ノートPCとゲームパッド

Slide 10

Slide 10 text

なぜ Nerves ? ● メリットは? ○ Nerves はシャットダウン処理なしに電源を落とせる(ファイルシステムが ROだから) ■ Ubuntu はシャットダウン処理をしてからでないと電源を落とせない ※シャットダウン処理前に電源を切るとファイルが破損する可能性があるから ○ Nerves は FW サイズが小さいので SSH 転送で FW の書き換えをできる ○ 並行処理を書きやすい Elixir で ROS 2 開発をできる ● 用途は? ○ ラズパイマウス以外にもこの方法は適用できるので、 ロボコンのロボットは良い適用対象かも💡(?) ラズパイ4 Ubuntu C++, Python ROS 2 クライアント ラズパイ4 Nerves Elixir ROS 2 クライアント

Slide 11

Slide 11 text

まとめ?(やってみたの発表だけど      何か気付きを届けられていたら嬉しい) ● アールティ 社製 のラズパイマウスが ROS 2 の入門に使えるかも ● 組み込み Linux の Nerves が面白い ● ROS 2 の通信は UDP ベースの DDS が使われている ● Elixir 製の ROS 2 クライアントに Rclex がある ● Linux で Web サーバを立てると内部状態をブラウザで確認できる ● (対応なしの)Linux を単純に電源落とすとファイルが壊れてよくない ● Web カメラ用のソフトに 時雨堂の Momo という OSS がある

Slide 12

Slide 12 text

宣伝1 ● 最近 Nerves 本が出ました 『ElixirではじめるIoT開発入門  Nervesプラットフォームで組み込み開発にトライ!』 ○ 著者:三宅 泰宏さん (NervesJP メンバー🎉) ○ 出版:インプレス NextPublishing ● Open Source Conference 2024 Osaka に NervesJP 出ます、ので興味があればぜひご参加ください ○ 2024年1月27日 10:00~18:00(展示は16:00まで)@大阪産業創造館 3F,4F(OSC受付:3F) ○ ラズパイマウスなど実機の展示します ○ 前提知識不要のセミナー(45分)もやります! タイトル「関数型言語Elixirで組み込みLinux開発ができるNervesの紹介」 https://nextpublishing.jp/book/17353.html https://event.ospn.jp/osc2024-osaka/

Slide 13

Slide 13 text

宣伝2 ● 現場で使える VPN Box, Pocket LANcher 👉 の 👇LTE対応版を試作してます   ※12/10 AM, 必要機能の確認できました ハード:Seeed製 EdgeBox RPI 200 ※DIN レールに取付可能

Slide 14

Slide 14 text

紹介 ● Nerves いいぞ💡 ○ Nerves JP, Nerves の日本コミュニティ ○ なぜ僕はNervesに期待するのか ● Rclex 0.10.0 開発中🦾 ○ https://github.com/rclex/rclex/tree/0.10.0-dev ● Tombo Works も要チェック👀 ○ 出張の多い現場エンジニアをサポートするデバイス ○ OSSを全面利用して商用プロダクトを作る ○ PocketLANcher, LANでつないで遠隔作業・遠隔支援、出張削減