mrubyと micro-ROSが繋ぐロボットの世界
by
Katsuhiko Kageyama
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
mrubyと micro-ROSが繋ぐ ロボットの世界 2025/6/28 関西Ruby会議08 影山勝彦
Slide 2
Slide 2 text
自己紹介 普段は @kishima で活動 (株)アプトポッド所属 組み込み系エンジニア プレイングマネージャ mruby好き 電子工作好き 2
Slide 3
Slide 3 text
最近のお仕事 3 四足歩行ロボを利用した ソリューション開発 自立走行ロボットの管理
Slide 4
Slide 4 text
最近のお仕事 4 ロボットで自社 サービスにデータ 集めてWebアプリ で可視化したり
Slide 5
Slide 5 text
5 仕事の経験も活かしたい ロボット関係の経験も積めた 最近、Ruby触れてないな・・・ Ruby x ロボット・・・!?
Slide 6
Slide 6 text
“ Rubyと作ろう!
Slide 7
Slide 7 text
“ Rubyと作ろう! ロボット制御
Slide 8
Slide 8 text
これ動かしたい 8 myCobot280 安価な6軸ロボットアー ム ROS対応
Slide 9
Slide 9 text
ロボット制御? 9 ● HWリアルタイムな世界 ○ 1msecやもっと短い間隔で正確にモータなどを制 御しないと行けない世界 ● もうちょっとゆるい世界 ○ SWリアルタイム ○ 制御計画や、上位のアプリケーションとの間を取り 持つ処理
Slide 10
Slide 10 text
ロボット制御? 10 ● HWリアルタイムな世界 ○ 1msecやもっと短い間隔で正確にモータなどを制 御しないと行けない世界 ● もうちょっとゆるい世界 ○ SWリアルタイム ○ 制御計画や、上位のアプリケーションとの間を取り 持つ処理 👉
Slide 11
Slide 11 text
巨人の背中に乗りたい ロボット開発の世界で よく使われてるのは・・・ 11
Slide 12
Slide 12 text
ロボット開発でよく使われるROS 12 ROSとは Robot Operating System。一般的な意味のOSではなく ロボット向けの通信ミドルウェアを中心とした ツール、ロボット向けOSSのエコシステム 12
Slide 13
Slide 13 text
1から作るのは大変 ● ROSはロボットの開発初期~に広く使われ ている ● 色々なOSSパッケージがあり、組み合わせ ることで独自のロボット制御を構築できる ● 私も仕事でお世話になってる ▶Rubyでも使いたい! 13
Slide 14
Slide 14 text
ROSの紹介 ROSの基本的な機能など 14
Slide 15
Slide 15 text
主な特徴 ● ノードを基本とした分散型アーキテクチャ ● Topic(Publish/Subscribe型のメッセージ通信) ● Service(Server/ClientのRPC的な通信) ● Actionという目標と過程を管理する仕組み ● 高速、低遅延、大容量な通信も想定 ● 実行環境は基本的にLinux ● 公式開発言語は、 C++、Python 15 ROSの特徴
Slide 16
Slide 16 text
ROSのソフトウェアレイヤー 16
Slide 17
Slide 17 text
ROSのプロセス構成のイメージ図 17
Slide 18
Slide 18 text
Topicの定義 sensor_msg/Joy 18 IDLで定義、コンパイル時に構造体に
Slide 19
Slide 19 text
ツールやライブラリ類も充実 19 rviz ロボットの状態 可視化、GUI操 作 Gazebo シミュレータ
Slide 20
Slide 20 text
ツールやライブラリ類も充実 20 rqt ノード間のメッ セージ送受関係 可視化など rosbag メッセージ通信の ロガーCLIツール
Slide 21
Slide 21 text
Rubyで書きたい すでにあった! ● rclrb (ROS Client Library for Ruby) ○ CRubyでROSの基本機能にアクセスできる ○ 昨年あたり公開されていた 21
Slide 22
Slide 22 text
好きなデバイスでROS動かしたい PC/Linuxで開発するときはrclrbを使うのがよ い マイコンでもROSを動かしたい! 22
Slide 23
Slide 23 text
ROSをマイコンで動かすプロジェクト 23
Slide 24
Slide 24 text
micro-ROSの特徴 ● リアルタイムOS上での動作を想定 ● 各種マイコンサポート(ESP32、Raspi Pico等) ● WiFi以外にUART等にも対応 ● 母艦PC上のROSとmicro-ROSデバイスの通信 を中継するAgentが必要 ● 開発言語:C言語 24 …mrubyから使えそう
Slide 25
Slide 25 text
micro-ROSアーキテクチャ 25
Slide 26
Slide 26 text
micro-ROS x mrubyで作ってみよう mrubyからmicro-ROSのAPIが使えるようにな ると、ROS対応のデバイス制御コードをRubyで 書けるようになる! 26
Slide 27
Slide 27 text
開発 今回作るものについて 27
Slide 28
Slide 28 text
全体の構成 28
Slide 29
Slide 29 text
コントローラ 29 JoyC: M5StickC&I2C接続のジョイスティック M5StickC Plus2: コアはESP32。PSRAM 2MB搭載
Slide 30
Slide 30 text
開発内容 ● mrubyとmicro-ROSを同時にビルドできる 環境構築 ● 最新のESP32ビルド環境への適合 ● mruby_esp32_i2c 必要な部分自前で作る ● mruby_esp32_microrosの実装 ● myCobot280をJoyトピックに反応するよう にする 30
Slide 31
Slide 31 text
mruby-esp32-microros micro-ROSのmrubyラッパー 31
Slide 32
Slide 32 text
デモ サンプルのスクリプトの説明とデモ動画を 32
Slide 33
Slide 33 text
I2Cの利用 33 ● I2Cの初期化 ● I2Cでデータを読み出すメソッド定義
Slide 34
Slide 34 text
コントローラ状態を読んでROSトピックを送信 34 ● 10Hz程度の周期でコント ローラの信号Read ● ROS Topic 送信
Slide 35
Slide 35 text
35 基本動作確認:亀をROSで制御する
Slide 36
Slide 36 text
myCobot280をROSで制御するデモ 36
Slide 37
Slide 37 text
37 パフォーマンス しっかりチェックできてないが、30Hzくらいで送信で きているのは1度確認した (ros2 topic hz /joyコマンド) 30Hzはコントローラ操作としても問題ない周期(ゲー ムのフレームレート) 100Hzくらいで動けると、ある程度細かいモータ制御 等にも使えるはず
Slide 38
Slide 38 text
38 課題はたくさん ● myCobot280思った通りに動かしたい ● rcl APIをどうRubyらしく使えるようにするか ○ Subscription:コールバックに素早く応答 ○ メッセージ型をどうダイナミックに扱うか ● ROSのパッケージ群活かしたい ○ navigation, moveit ● Raspi Pico - PicoRubyでも使いたい ● mruby-esp32もう少しメンテしたい
Slide 39
Slide 39 text
これも動かしたい 39
Slide 40
Slide 40 text
最後に ● Rubyでも物理的に動きのあるものを制御で きる! ● CRubyでROSを使う方法(rclrb)もあるので、 興味を持つ方が増えたら嬉しい 40 ハードがなくても、 シミュレーションから試す手もある!
Slide 41
Slide 41 text
41 Thank you! 何か聞きたいことあればお気軽に X, github : @kishima