docker使って,mruby でロボット制御をシミュレーションする(TOPPERS/箱庭)


概要

mruby は,組み込みシステム向けの軽量なRuby言語処理系ですが,ロボットを動かすこともできます.

一方で,TOPPERSの箱庭WGでは,単体ロボットシミュレータをを提供しており,このシミュレータをmrubyで実行できるようになりましたので,ご紹介します.

なお,本実現にあたっては,yamanekkoさん,および軽量Rubyフォーラムさんの技術的なご支援が非常に大きく,大変感謝しております.

特に,以下の記事/gitリポジトリのREADMEが下支えになっております.

インストールおよびシミュレーション実行手順

これまで,箱庭/単体ロボットシミュレータは,Unityおよびマイコンシミュレータ Athrill を実行するようにしておりましたが,インストール手順が煩雑化してきましたので,docker化対応を始めています.docker化により,大分手順がシンプルになってきました.今回のmruby版のシミュレーション環境もdocker化しましたので是非おためしください.

インストール手順および実行方法は,以下で公開しております.

mruby の制御プログラム

mruby の制御プログラムはこんな感じです.

    count = 0
    flag = true
    while flag
      log("count:#{count}\r\n")
      case count
      when 0..200
        leftMotor.power = 5
        rightMotor.power = 5
      when 201..400
        leftMotor.power = -5
        rightMotor.power = -5
      when 401..600
        leftMotor.stop
        rightMotor.stop
        armMotor.power = 4
      when 601..800
        leftMotor.stop
        rightMotor.stop
        armMotor.power = -4
      else
        flag=false
      end
      count+=1
      EV3RT::Task.sleep(20)
    end
    log("mruby end\r\n")

時間経過に従って,ロボット前進⇒後進⇒ロボットアームの上げ下げをやってます.
※ロボットがたったこれだけのコードで制御できてしまうなんて,素敵です.

詳細は,こちらを参照ください.

デモ

では,実際にmrubyでシミュレーションしたデモをお見せします.