PicoRubyを理解する1

PicoRuby
A Ruby interpreter implementation for one-chip microcontrollers - PicoRuby

ちゃんと中身を理解できてなかったので、コードや資料を読んで理解したい。

特にパーサーやVMの周りをどうやって小さくできているのか。

まずは基礎知識から。

公式情報

PicoRuby Documentation
API documentation

羽角さんの資料

2025

MicroRuby: True Microcontroller Ruby
RubyKaigi 2025, #rubykaigi
RubyKaigi 2025 で発表したMicroRubyとはなんだったのか
MicroRuby: True Microcontroller Ruby というタイトルの発表をしました。

MicroRubyとは?

Ruby会議には参加できてないので、詳細はブログの記事からの理解ですが、以下のような、図のような感じなのかと理解しました。コンパイラをカスタムして準備してしまうのが驚くべきところ。パーサーもPrismに置き換わっているらしい。

で、コンパイラの周りやmrbgemの扱いなどは、やはりコードを追っていかないといけない。

2024

Unlock The Universal Parsers: A New PicoRuby Compiler
RubyKaigi 2024, #rubykaigi
令和の隙間産業——PicoRubyはどこから来てどこへ行くのか - HASUMI Hitoshi - Rabbit Slide Show
Presentation slide for 大阪Ruby会議04
Ruby Prize 2021 最終ノミネート者 羽角 均 インタビューRubyPrize
Rubyコミュニティの「個人賞」
Matz:「そっか、256KBあったらmryubyのVMだけなら動くのか。」

ESP32でPSRAM 8M乗ってるとmrubyのパーサ/コンパイラも込みで動かせた実績あるので、Raspi PicoでもPSRAM搭載ボードなら行けるはず。

羽角さん「僕としては、PicoRubyとかmrubyのエコシステムを広げていくのに、PicoRubyコンパイラを作っただけじゃ面白くなくて、使われないと楽しくないわけですよね。」

とても共感。C書けるなら、Cで書いてしまっても良いのだけど、せっかく環境を作るからには他の人に使ってほしい。羽角さんは一人でエコシステムまで作ろうとしててほんとすごい。

n月刊ラムダノート Vol.4, No.1(2024)
計算機好きのための技術解説情報誌 エヌゲッカンラムダノート(不定期刊行)106ページ A5判 紙書籍は1色刷 2024年2月6日 第4巻第1号/通巻7号 発行 目次 #1 手を動かして学ぶストリーム処理入門(中谷翔)#2 WebAssemblyの制約を越える(齋藤優太) #3 PicoRubyといっしょに学ぶ、プログラミング言語が電気回路を動かす仕組み(羽角均)

買って読んでみた。

基本的なところからとても丁寧に書いてあるので、PicoRubyちゃんと使いこなしたい方は必読と思いました。

その他

mruby/c and data-flow programming for small devices
RubyKaigi 2025, #rubykaigi

https://www.slideshare.net/slideshow/mruby-c-and-data-flow-programming-for-small-devices/278614229

mruby/cについて、田中先生のスライドが公開されていた。

Node-REDから使えるようにした、というお話。

次のステップ

PicoRubyのコードを読む。

Read more

RubyとROS 2

普段仕事でROSを触るときはPythonかC++を利用することになるが、Ruby好きとしては、やはりRubyでもノードを書いたりしたくなる。 ということで、すこし調べてみた。 ROS 2以前 調べるとROS 2ではなくて、ROSに関する取り組みはあるようだった。 GitHub - OTL/rosruby: ruby ROS client.ruby ROS client. Contribute to OTL/rosruby development by creating an account on GitHub.GitHubOTL 九州工業大学の田中先生の研究室の学生さんの記事。対象はNoetic。 【Ruby】RubyでROSを動かしてみた - Qiita九州工業大学 田中和明研究室の大学院生です。Rubyと産業用ロボットに関する研究に携わっています。背景ROSでロボットを動かす場合、一般的にはPythonやC++を使用したプログラムが基本です。…Qiitatytymch ROS 2対応のrclrb やはり今ならROS 2使いたいので、調べてみると1

By kishima
JetCobotとJetson Orin NXを迎えた

JetCobotとJetson Orin NXを迎えた

JetCobot 最近本業でロボットアームを扱う機会があり、いろいろ新しく知識も得たので、その経験を生かしてRubyと組み合わせていろいろ試してみたいと思って、個人でも買えるロボットアームを探してみた。 ElephantRoboticsのmyCobot280が手ごろで扱いやすそうなので、こちらを購入してみることにした。単体で買うとグリッパーや台座などついてなかったり、SwitchScience経由で買ったりするとちょっと高くなったりするのだけど、YahboomのJetCobotだと、一式揃って、加えてJetsonも付いて安かったので、そちらをAmazonで注文した。 香港からの発送で、1週間ほどでUPSで届いた(配達はヤマトだった)。 組み立ては難しくなく、JetsonNanoをケースに収めて、本体とUSB接続して、電源を入れると自動で起動する。(付属の無線は使わないでおく) myCobot本体はUSBシリアルで認識されており、それをPythonで制御している。 チュートリアルに従えば、紹介動画にあるような画像認識と制御のデモも簡単に試せそう。 Jetson Orin

By kishima

M5シリーズのESP-IDF開発環境をWSL2&Dockerで作る

この記事は、M5Stack Advent Calendar 2024 に参加してます。 久しぶりのM5、ESP32 いろいろと作ってみたいものはありつつも、なかなか手がつかない日々でしたが、試したいことができたので久しぶりにM5シリーズのデバイスを買ってみました。 買ってみたのは、ESP32 PSRAM Timer Cameraです。こちらを使って、HTTPSでクラウドのサービスにつないでみるのが目的です。 で、今後また色々ビルドしたり、ESP32の機能を使うためにESP-IDF上で開発をしたいと思い準備しました。 ESP-IDFの環境はバージョンによってしばしば互換性が失われるので、昔のコードが最新Verでビルドできないのはしょっちゅうあるかと思います。そのときESP-IDFバージョンを上げ下げするのも大変です。 なので、試行錯誤するにはDockerで環境を作れると何かと便利です。その内容を共有したいと思います。環境はWSL2です。 準備 基本的には、公式の手順を読めばわかる内容ではありますが、すこし躓いた点もあったのでそのあたり説明したいと思います。 ビルド

By kishima