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.

九州工業大学の田中先生の研究室の学生さんの記事。対象はNoetic。

【Ruby】RubyでROSを動かしてみた - Qiita
九州工業大学 田中和明研究室の大学院生です。Rubyと産業用ロボットに関する研究に携わっています。背景ROSでロボットを動かす場合、一般的にはPythonやC++を使用したプログラムが基本です。…

ROS 2対応のrclrb

やはり今ならROS 2使いたいので、調べてみると1つだけ見つかった。

2024年5月の記事。

rclrb: bindings for using ROS2 with Ruby
Hi everyone, I am happy to announce here bindings to use ROS2 RCL with the Ruby programming language. The bindings have been stable for a few months now and are ready for more wide spread usage. Feel free to report any issue on the gitlab tracker. The bindings can be installed as a gem or as a colcon package. Instructions can be found in the readme of the repository: Documentation is sparse, but the API is generally similar to Python/C++ one. The main difference is that the only available ex…

リポジトリ

rosrb / rclrb · GitLab
GitLab.com

FFIでrclをラップしてRubyから使えるようにしてある実装で、コードもシンプルで素敵です。

動かしてみる

サンプルコードを動かしてみる。Pythonで書いたような雰囲気でROSのノードが書けている。

Publisher

require 'rclrb'

require 'std_msgs/msg'

class MinimalPublisher < Rclrb::Node
  def initialize()
    super("publisher_node")
    string_msg = StdMsgs::Msg::String.new
    string_msg.data = "Hello World!"
    pub = self.create_publisher(StdMsgs::Msg::String, "topic", 1)
    @timer = self.create_timer(1.0) do |time|
      pub.pub(string_msg)
    end
  end
end

def main(args)
  Rclrb.init(arguments: args)

  Rclrb.spin(MinimalPublisher.new)
end

if $0 == __FILE__
  main(ARGV)
end

Subscriber

require 'rclrb'

require 'std_msgs/msg'

$stdout.sync = true

class MinimalSubscriber < Rclrb::Node
  def initialize
    super("subscriber")
    self.create_subscription(StdMsgs::Msg::String, "topic", 1) { |msg| puts msg.data }
  end
end

def main(args)
  puts "start subscriber node"
  Rclrb.init(arguments: args)
  Rclrb.spin(MinimalSubscriber.new)
end

if $0 == __FILE__
  main(ARGV)
end

ROSのインストールとか大変なので、Dockerで簡単に試してみる環境を準備しました。

GitHub - kishima/try-rclrb
Contribute to kishima/try-rclrb development by creating an account on GitHub.

実行結果

$ docker compose up
[+] Running 1/1
 ✔ Container try-rclrb-ros-nodes-1  Created                                                                                     0.2s
Attaching to ros-nodes-1
ros-nodes-1  | run publisher node
ros-nodes-1  | ros2 node list
ros-nodes-1  | /publisher_node
ros-nodes-1  | ros2 topic list
ros-nodes-1  | /parameter_events
ros-nodes-1  | /rosout
ros-nodes-1  | run subscriber node
ros-nodes-1  | start subscriber node
ros-nodes-1  | Hello World!
ros-nodes-1  | Hello World!
ros-nodes-1  | Hello World!

細かいところ対応してなさそうだが、シンプルな使い方なら普通に使えそうと感じた。必要があれば、自力でrcl叩いて拡張することもできそう。

こちらも踏まえて、mruby絡めたり、いろいろ可能を探っていきたいと思って色々試しているところです。

Read more

2025年の振り返りと2026年の抱負

2025年の振り返りと2026年の抱負

明けましておめでとうございます。今年も無事新年を迎えられてありがたい限りです。 昨年は色々対外的な活動も増やしたり、自分の趣味プロジェクトも新しく始めたりしたので、活発な一年だったと思います。 今年は仕事始めて20周年でもありますし、色々頑張り時な年だと思うので、抱負と合わせて、昨年の振り返りを残しておきたいと思います。 2025年振り返り 2025年は、4月までは仕事のほうがかなり忙しく、日々仕事で忙殺される日々でした。 2/2 Tokyu.rb新年会2025 まだ忙しい季時期でしたが、地方出張前に荷物抱えて参加した記憶があります。 Tokyu.rbは、みんなで美味しいもの(主に肉)をいただく集まりなのですが、そこで関西Ruby会議のことを聞いたことが、この後の動きの伏線になりました。 5月になって仕事が落ち着いてきたので、一念発起して久しぶりに地域Ruby会議へのプロポーザルを送ったのでした。 5/26 PicoPicoRuby #1 待望のmruby関連の勉強会!ということでウキウキで参加しました。 以降も月イチで安定して開催されており、私の活動のモチ

By kishima
電子工作遍歴をたどる(2)

電子工作遍歴をたどる(2)

前回の話のつづきです。 作例5 ラズパイとGroveによる音楽プレーヤ 2017/08ごろ ラズパイで遊び始めて、そろそろ単なるミニPCとしてではなく、いろいろ電子工作っぽいことをやってみたくなってきました。 そのころSeeedのGroveというものを知って、これなら初心者でも色々電子デバイス試せる!となって色々買ってきて作ったのがこちらです。 A first step to Raspberry Pi project | Kishima blogThis was a first step to Raspberry Pi project done in last year. RaspiMusicServer This an…Kishima blogkishimaGitHub - kishima/RaspiMusicServer: An music server on Raspberry pi and ArduinoAn music server

By kishima
Family mruby OS:FreeRTOSベースのMicroRubyマルチVM構想

Family mruby OS:FreeRTOSベースのMicroRubyマルチVM構想

この記事は、mrubyファミリ (組み込み向け軽量Ruby) Advent Calendar 2025の12/25の記事です。25日の枠が空いていたので、滑り込ませていただきました。 今日は私が最近取り組んでいる個人プロジェクトであるFamily mrubyとそこから発展したFamily mruby OSについて紹介したいと思います。 開発に至る経緯 Family mrubyは2019年から開発着手したプロジェクトです。2020のRubyKaigi Takeoutでも初期型について発表しました。 Family mrubyとは? Family mrubyKishima’s projectsKishima Craft Works 今は昔、子供が最初に触れるプログラミング言語といえば、BASICという時代がありました。 制約は多いですが、パソコン以外にも、MSXやファミコンでBASICができるFamily BASICという製品もあり、そこからプログラミングの面白さを知り、プログラマーになった方もたくさん居られると思います。 そして現在は無料で大抵のプログラミング言語の開発環境

By kishima