Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Raspberry Pi Mouse を Nerves で動かしてみた

pojiro
December 10, 2023

Raspberry Pi Mouse を Nerves で動かしてみた

pojiro

December 10, 2023
Tweet

More Decks by pojiro

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 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

    View full-size slide

  7. デモ動画

    View full-size slide

  8. 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とゲームパッド

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  11. 宣伝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/

    View full-size slide

  12. 宣伝2
    ● 現場で使える VPN Box, Pocket LANcher 👉

    👇LTE対応版を試作してます
      ※12/10 AM, 必要機能の確認できました
    ハード:Seeed製 EdgeBox RPI 200
    ※DIN レールに取付可能

    View full-size slide

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

    View full-size slide