2013/10/22

操縦テストプログラムの仕様

こんばんはKです。いろいろなロボットを制御するにあたって、ひとまずPC上からコントローラーなど使って動かせるように汎用的なプログラムを作る予定です。できれば今週中に仕上がるといいな

仕様は以下の通り :

自由操作プログラム仕様

1. 本ソフトの目的
本ソフトはPC上からマイコンに対してデータを送るプログラムである。
即ち、ある入力x_nに対して出力y_n = f(x_n)を出力するプログラムである。

例えば、コントローラAの○ボタンを押すことにより、内部の制御データa1の値をα1にセットする、
その結果、y_1 = βα1γを出力するといった具合である。

2. 入力インタフェース
・マウス
・キーボード
・ジョイスティック
を想定する。これらの入力データは内部の別の記号σ_nに割り当てられる。

デジタル入力に対しては、
・長押し
・単押し
が存在する。内部ではσ_nがそれらを判定できる。

アナログ入力に対しては、
・数値読み取り
が存在する。内部ではσ_nがデータを担う。

3. 出力データ
出力データ列βα_nγは、入力σ_nに対して適切なデータ列α_nを生成し、その他デバイスの要求するプロトコル
に変換したものである。
βα_nγ = d_n(αn)となる写像d_nをデバイス設定と称する。

今回は簡単のため、デバイスは最大で1つまで同時に使用可能ということにしよう。

4. プログラム全体の流れ
(1) PCに接続されているジョイスティックを全て取得
(2) ジョイスティックを識別する設定ファイルを読み込み、関連づける
(3) デバイスの設定を読み込み、ジョイスティックの各ボタンに関連づける
(4) ジョイスティックの入力に対して、デバイスが関連づけられていればデバイスに挙動を委ねる
(5) 操作が終了したらデバイスの設定に基づき、データを生成してデバイスに送る。

4-1. システム上の課題
(1) ジョイスティックの認識と取り扱いが必要
(2) 設定ファイルの形式やその取り扱いが必要
(3) (2)と同様
(4) 特になし
(5) COMポートを用いた通信が必要

4-2. より汎用的にするためには
デバイスとの通信は究極の所、内部の持つ生の設定値α_nを変換して出力データ列βα_nγにすることである。
この変換するプログラムをプログラム中に書いては任意のデータ処理が出来ない。
従って何らかのスクリプトにして外部に追いやることが必要である。
即ち本ソフトのなすべきことは、GUI上でコントローラーやキーボードなどを用いて
データを送りつけることである。

これを実現するためにはWSHを利用したプログラムを書く必要がある。
今回はWSHを利用する。

5. GUI
メイン画面はデータの出力状況を表示する。データとは、例えばPWMを出力するボードなら各ポートの値である。
究極的には数値データしかないのだが、要望があればよりわかりやすい表現を用いる。

設定画面は、ジョイスティックとそれに対する関連づけ画面と、デバイスの設定画面に大別される。

・ジョイスティックとそれに対する関連づけ画面
現在接続されているジョイスティックが一覧で表示され、使用する場合その設定を行う。
まず、ジョイスティックに名前を付ける。この名前を用いて他の設定をする。
次にボタンに名前を付ける。正確には、ボタンに名前を付けて使用リストに追加する。
directinputを使って、使用リストの中を常に監視し、ボタンが押されたり長押しされたり値が変更されたりしたときに、関連づけられたデバイスにメッセージを投げつける。

・デバイスの設定画面
デバイスの入力に対して出力をするスクリプトを指定する。
そのほか、デバイスの通信設定だとか、デバイス名だとかも取得できる。

本ソフトを使用するデバイスとしては、
データ8bitストップ1bitパリティなしの他に、
・デバイスIDの取得
・起動回数の取得
が出来ることを推奨している。


6. クラス
Input 入力を担う
    GameController コントローラー。使用ボタンを管理する
        Button ボタン。ここにデバイスが関連づけられる
    Keyboard キーボード。ここにもデバイスが関連づけられる。
    Mouse マウス。ここにもデバイスが関連づけられる。

Device
    BasicDevice スクリプトを利用しないシンプルなデバイス
                # 出力データは8bitを1つとして、任意バイト数送りつける。フレーム単位*で送る。
    AdvancedDevice スクリプトを利用するデバイス

Script スクリプト処理を管理する。
Setting 設定データの管理



0 件のコメント:

コメントを投稿