Sotaに自作のjarを登録する方法
こんにちは。ヤマロボエンジニアの鵜澤です。
この記事では、ヴィストン株式会社が販売しているコミュニケーションロボットSotaに、Javaで作ったアプリケーションを登録する方法を紹介します。
Sotaにアプリケーションを登録する。
公式ではSotaに自作のアプリケーションを登録する方法が二つ紹介されています。
これらの方法には以下の特徴があります。
1の方法はアプリケーションの起動を、Sotaの設定モード > アプリの実行(背中の上下ボタン同時押し)から行えます。
アプリケーションはGUIでの作成になりますが標準で定義されている命令ブロックを使用すればかなりのことができるようです。
(例えばTCP/IPサーバー、クライアントの両方が用意されているみたいです 参考)
ただし、ある程度制約があることは許容しないといけません。
2の方法はアプリケーションをJavaで記述できるためかなり自由に作成できます。
しかしアプリケーションの実行は、ssh
で接続し、エントリポイントとなるスクリプトを実行しないといけません。
ちょっと気軽に起動といった風にはできないです。
こういった経緯から、Javaで書いたアプリケーションをSotaのボタン操作だけで実行する方法を探してみました。
(補足)SotaManager.jar
Sotaを起動するとデフォルトでSotaManager.jar
というプログラムが起動しています。
このプログラムはSotaの設定モードなどの機能を提供しており、
今回行いたいアプリケーションの登録もこのプログラムにjar
を認識させることで可能になります。
SotaManager.jar
はSotaが起動した時に
/home/vstone/vstonemagic/app/jar/app.properties
を読み込みます。
この中にjar
の登録情報を追加してあげれば良いと推測できます。
SotaManager.jar
によるjar
の起動はjava -jar
で行われます。
プロパティの記述にオプションを指定できる箇所があるみたいなので、それを利用することもできますが、今回は使いません。
またアプリケーションの選択時に再生される音声は、jar
を配置したディレクトリにあるtitle.wav
というwav
ファイルが使用されるのでそれも準備します。
これはウェブでテキストをwav
に変換してくれるサイトがあるのでそれを利用しました。
準備
サンプルソースはGitHub
からクローンしてきてください。
このリポジトリは次のものが含まれています;
-
make_jar.sh
: ソースをコンパイルするためのシェルスクリプト -
src
: サンプルのソース -
sound
: アプリで使う音声ファイル -
title.wav
:SotaManager
がアプリ起動時に呼び出す音声ファイル
手順
まずはmake_jar.sh
実行してjar
ファイルを作成してください。必要なライブラリ群のダウンロードも含まれますので1分くらい時間がかかります。
アプリケーションをSotaに登録するために必要なことは、
Sotaへのjarファイルの転送と必要なファイルの展開、設定ファイルに追記することです。
まずは転送と展開を行います。
転送と展開
Sotaにファイルを転送します。接続するためのユーザ、パスワード、IPなどの調べ方は公式から確認してください。
scp
等でファイルを送信します。
Sota内の/home/vstone/vstonemagic/app/jar
以下にHelloSota
というディレクトリを作成し、その中にjar
を配置してください。
/home/vstone/vstonemagic/app/jar/HelloSota
に移動し、HelloSota.jar
の中からtitle.wav
、sound
を展開しておきます。
jar xvf HelloSota.jar title.wav sound
次に設定ファイルに追記します。
設定ファイルの記述
/home/vstone/vstonemagic/app/jar/app.properties
に次の設定を追加します。
...
app1.title=HelloSota
app1.workingdir=HelloSota/
app1.jar=HelloSota.jar
app1.type=app
app1.trigger=
app1.triggeroption=
注意: app1
の番号はすでにapp1
の設定が存在する場合はapp2
、という感じで適宜ずらしてください。
以上で登録が完了です。
Sotaを再起動し、背中のボタンを操作して「設定モード > アプリの実行」から登録したアプリケーションを起動してみてください。
感想
以下のことが嬉しいな、と思いました。
- アプリの起動がボタン操作なので、javaで作ったある程度複雑なアプリをエンジニア以外の人に使ってもらえる。
- ウェブに接続したり可能性が広がる気がする。
以上です、お付き合いいただきありがとうございます。