簡易GUIパネルで家電制御
概要
このシステム例は、SUITを使った(またはeSEATと同時に使った)簡単例ですが、学習リモコンRTCと組み合わせることで、赤外線リモコンで動作している色々な家電、ロボット等を操作することができます。学習リモコンRTCに関しては、バッファロ社から販売されていたRemoteStationを使っています。
あいにく現在ではすでに生産終了になっていますので、代替の製品(キット)として、http://bit-trade-one.co.jp/BTOpicture/Products/005-RS/を検討しています。
この製品用のRTCが完成次第公開する予定です。
この製品用のRTCが完成次第公開する予定です。

動作環境および必要なハードウェア
このシステム例で使用するハードウェア等は、下記の通りです。
- OpenRTM-aist-1.1以降の動作するPC(Linux化したAndroidスティック端末MK808でも動作確認済み)
- 赤外線学習ユニット(Buffalo社RemoteStation PC-OP-RS1)
- 赤外線で操作される家電(エアコン、テレビ、DVD等)またはロボット(ISOBOT, RQ HUNO等)
- 音声認識やジェスチャ認識をユーザインタフェースとして利用する場合は、KINECT for Windowsが利用可
このシステムで利用するコンポーネント等については、Windows用のバイナリのみ添付しています。また、ここで利用しているコンポーネントは、C++とPythonで実装されていますので、両方のRTCが動作する環境が必要です。
ソースコードからコンパイル等を行う場合には、OpenRTM-aist-1.1.0-Release(C++版)とOpenRTM-aist-1.1.0-RC1(Python版)をあらかじめインストールをお願いいたします。また、赤外線リモコンRTCは、PythonからRS232Cを利用しますので、pySerialという拡張パッケージが必要です。
コンポーネント構成
このシステムでのコンポーネント構成を下に示します。

このシステム例は、一番単純な例で、SUITと赤外線リモコンRTCのみの構成になっています。SUITのスクリプトファイルは、下のように2つの状態(赤外線コードの記憶と送信)を持っています。
<?xml version="1.0" encoding="UTF-8"?>
<suitml>
<general name="guicommand">
<agent name="command" type="rtcout" datatype="TimedString" />
<agent name="send" type="rtcout" datatype="TimedLong" />
</general>
<state name="ir_send_mode">
<label text="RS:" color="#ffffff"/>
<button label="Channel" >
<command host="command">NextChannel</command>
</button>
<button label="LED" >
<command host="command">LED</command>
</button>
<brk />
<label text="再生モード"/>
<button label="学習モードへ" bg_color="#aaaaff">
<command host="command">LearnMode</command>
<statetransition>ir_learn_mode</statetransition>
</button>
<button label="LoadFile" >
<command host="command">Load ir.dat</command>
</button>
<brk />
<button label="電源" bg_color="#ffaaaa">
<command host="send">1</command>
</button>
<space length="1" />
<button label="入力切替" bg_color="#000000" color="#ffffff">
<command host="send">2</command>
</button>
<brk />
<button label="1" >
<command host="send">5</command>
</button>
<button label="2" >
<command host="send">6</command>
</button>
<button label="3" >
<command host="send">7</command>
</button>
<brk />
<button label="4" >
<command host="send">8</command>
</button>
<button label="5" >
<command host="send">9</command>
</button>
<button label="6" >
<command host="send">10</command>
</button>
<brk />
<button label="7" >
<command host="send">11</command>
</button>
<button label="8" >
<command host="send">12</command>
</button>
<button label="9" >
<command host="send">13</command>
</button>
<brk />
<button label="10" >
<command host="send">14</command>
</button>
<button label="11" >
<command host="send">15</command>
</button>
<button label="12" >
<command host="send">16</command>
</button>
<brk />
<button label="音量+" >
<command host="send">17</command>
</button>
<space length="1" />
<button label="チャンネル+" >
<command host="send">19</command>
</button>
<brk />
<button label="音量-" >
<command host="send">18</command>
</button>
<space length="1" />
<button label="チャンネル-" >
<command host="send">20</command>
</button>
</state>
<state name="ir_learn_mode">
<label text="RS:" color="#ffffff"/>
<button label="Channel" >
<command host="command">NextChannel</command>
</button>
<button label="LED" >
<command host="command">LED</command>
</button>
<brk />
<label text="学習モード"/>
<button label="再生モードへ" bg_color="#aaaaff">
<command host="command">SendMode</command>
<statetransition>ir_send_mode</statetransition>
</button>
<button label="SaveFile" >
<command host="command">Save ir.dat</command>
</button>
<brk />
<button label="電源" bg_color="#ffaaaa">
<command host="send">1</command>
</button>
<space length="1" />
<button label="入力切替" bg_color="#000000" color="#ffffff">
<command host="send">2</command>
</button>
<brk />
<button label="1" >
<command host="send">5</command>
</button>
<button label="2" >
<command host="send">6</command>
</button>
<button label="3" >
<command host="send">7</command>
</button>
<brk />
<button label="4" >
<command host="send">8</command>
</button>
<button label="5" >
<command host="send">9</command>
</button>
<button label="6" >
<command host="send">10</command>
</button>
<brk />
<button label="7" >
<command host="send">11</command>
</button>
<button label="8" >
<command host="send">12</command>
</button>
<button label="9" >
<command host="send">13</command>
</button>
<brk />
<button label="10" >
<command host="send">14</command>
</button>
<button label="11" >
<command host="send">15</command>
</button>
<button label="12" >
<command host="send">16</command>
</button>
<brk />
<button label="音量+" >
<command host="send">17</command>
</button>
<space length="1" />
<button label="チャンネル+" >
<command host="send">19</command>
</button>
<brk />
<button label="音量-" >
<command host="send">18</command>
</button>
<space length="1" />
<button label="チャンネル-" >
<command host="send">20</command>
</button>
</state>
</suitml>
このSUITのスクリプトで生成されるGUIパネル(状態)は下図のようになります。

起動手順
このシステム例をこのページに添付しています。このシステムを使う前にRemoteStationのドライバのインストールをお願いいたします。バッファロ社のオフィシャルサイトには、Windows Vistaまでのドライバしかありません。
RemoteStationは、OSからはシリアルアダプタとして認識されており、FTDIチップのドライバで動作します。そこで、FTDIチップのドライバに含まれる INFファイルを修正してWindows7にインストールしてください。ただし、INFを自己責任で修正いたしますので、インストール時に警告のダイアログが表示されます。
Windows8以降では、ドライバの認証に関する機能が強化されており、INFファイルを変更してしまうとそのままでは署名ないのでインストールすることができません。そこで、Windows8以降の場合には、テストモードに変更して、「ドライバー署名の強制」を無効化してインストールしてください。
ドライバのインストールが終了すれば、あとは、本ページに添付されたアーカイブ(PortableRTM.zip)を適当なフォルダに展開して下さい。このアーカイブには、Python2.6,OpenJDK,OpenRTM-aistのランタイムがすべてはいっており、かつ、USBメモリなどにコピーすれば、どのWindowPCでも動作させることができると思います。
- まず、展開後のフォルダの下のPortableRTMに移動し、rtm-naming.batでネームサーバーの起動、RTSE _OpenJDK.batでRTシステムエディタRCP版を起動してください。
- 次に、IrCtrlDemo\00 Demo のフォルダを開きます。このフォルダの下には、下記の6つのバッチファイルがあります。
- 00 StartDemo.bat
- 01 ConnectAll.bat
- 02 ActivateAll.bat
- 11 DeactivateAll.bat
- 12 DisconnectAll.bat
- 13 EndDemo.bat
- 上記のバッチファイルのうち先頭が0のバッチファイルは、起動用のバッチファイルです。番号順に実行するとコンポーネントの起動、コンポーネント間の接続、アクティベーションを行うことができますので順番に起動してください。
操作の詳細
このシステム例では、基本的に2つの操作しかありません。1つが赤外線リモコンのコードを学習するモードでもう1つが記憶した赤外線リモコンコードを送信するモードです。
赤外線リモコンRTCは、リモコンコード送信モードで起動しますので、LoadFileボタンであらかじめ記憶された赤外線リモコンコードを読み込むか「学習モードへ」を押下し、リモコンコード学習モードに移行してください。
リモコンコード学習モードでは、チャンネルボタンを押下すれば、赤外線リモコンの記憶待ち状態になりますので、RemoteStationへリモコンから赤外線リモコンコードを送信してください。
記憶が正常に終了すれば、赤外線リモコンRTCの標準出力に終了したとのメッセージが表示されます。何らかのエラーが発生したときには、リモコンコードは記憶されません。
必要なリモコンコードの学習終了後は、SaveFileボタンでファイルに保存することができます。保存するファイル名は、赤外線リモコンRTCのコンフィグレーションパラメータで変更することができます。
添付ファイル:PortableRTM.zip

