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で作ったある程度複雑なアプリをエンジニア以外の人に使ってもらえる。
- ウェブに接続したり可能性が広がる気がする。
以上です、お付き合いいただきありがとうございます。