LoginSignup
1
2

More than 5 years have passed since last update.

sotaを対話的に開発する(jRuby)

Last updated at Posted at 2016-10-11

前提と目的

Sota のプログラミングは、通常VstoneMagic、もしくはEclipseによるJavaでの開発になります。

しかし、Javaで開発して転送して実行してーというプロセスを踏むのがめんどくさそうだなと考え、REPL的に動作確認をできるようにjRubyからsota君を動作させます

これによってjRubyのreplであるjirbで1行づつSotaに処理を実行させることができるので、対話的に動作が可能になるので理解が進みやすくなるかなと思います。

環境構築

Sota/RaspberryPi 版

### sotaにsshでログインしてから
$ sudo apt-get install jruby
$ jruby --version
jruby 1.5.6 (ruby 1.8.7 patchlevel 249) (2012-12-11 6586) (Java HotSpot(TM) Client VM 1.8.0) [arm-java]
$ jirb --version
irb 0.9.5(05/04/13)

なんかjruby異様に古いですね。(いまは気にしない)

私の利用しているsotaはJava8にしてあります、必要であれば入れてください。(jRubyを入れる前にinstallしてしまったので必須かよくわからない)

動いた環境のjavaは以下の状態

$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

動作確認

jirbで動作確認します。
javaのexampleをもとにjRubyで動くコードを用意します。
以下の2つのExampleをもとにLED/モータ/スピーチの動作確認をしてみます。
https://github.com/vstoneofficial/SotaSample/blob/master/src/jp/vstone/sotasample/MotionSample.java
https://github.com/vstoneofficial/SotaSample/blob/master/src/jp/vstone/sotasample/TextToSpeechSample.java

以下をコピーしてsshでsotaに接続してjirbで動作させてみましょう。

example.jrb
require 'java'
require "/home/vstone/lib/core-2.2.jar"
require "/home/vstone/lib/sotalib.jar"
require "/home/vstone/lib/SRClientHelper.jar"
require "/home/vstone/lib/jna-4.1.0.jar"
require "/home/vstone/lib/javase-2.2.jar"
require "/usr/local/share/OpenCV/java/opencv-310.jar"
require "/home/vstone/lib/gson-2.6.1.jar"

java_import "java.awt.Color"
java_import "jp.vstone.RobotLib.CRobotUtil"
java_import "jp.vstone.RobotLib.CRobotMem"
java_import "jp.vstone.RobotLib.CSotaMotion"
java_import "jp.vstone.RobotLib.CRobotPose"
java_import "jp.vstone.RobotLib.CPlayWave"

CRobotUtil.Log("log", "Servo On")
mem = CRobotMem.new
motion = CSotaMotion.new(mem)
mem.Connect
motion.InitRobot_Sota

CRobotUtil.Log("log", "Rev. " + mem.FirmwareRev.get.to_s)

motion.ServoOn
pose = CRobotPose.new
pose.setLED_Sota(Color.new(255,255,255), Color.new(255,255,255), 255, Color.new(255,255,255))
pose.SetPose([1,2,3,4,5,6,7,8].to_java(:Byte), [0,900,0,-900,0,0,0,0].to_java(:Short))

motion.play(pose,5000)
motion.waitEndinterpAll()

pose.setLED_Sota(Color.new(255,0,0), Color.new(0,255,0), 255, Color.new(255,0,0))
pose.SetPose([1,2,3,4].to_java(:Byte), [500,-900,-500,900].to_java(:Short))
motion.play(pose,1000)
motion.waitEndinterpAll()

java_import "jp.vstone.sotatalk.TextToSpeechSota"
CPlayWave.PlayWave(TextToSpeechSota.getTTS("やっほー"),true)

というわけでこの程度で動きました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2