概要
ここではAquariumのアプリケーション構成ファイルの構造について述べる.
構造
標準的な.NETのアプリケーション構成ファイルであり,次の3つの構成セクションを含んでいる.
-
microsoft.scripting
DLRに関する設定を保持する構成セクション.
現在の所,Aquariumは標準のDLRの設定に依存しているため,変更すべきでない.
-
tpip
TPIPNetに関する設定を保持する構成セクション.
TPIPボードの接続の設定などを保持する.
-
aquarium
Aquarium特有の設定を保持する構成セクション.
次の節からtpipとaquariumの構成セクションに関する詳細を述べる.
tpip構成セクション
構造
tpip構成セクションは,XML Schema TPIPNet.xsdにより定義される.
以下にtpip構成セクションの概略図を示す.
<tpip>
<library baseDirectory="..." />
<connections default="...">
<connection name="..." communicationMode="...">
<driverProperties>
<property name="..." value="..." />
...
</driverProperties>
</connection>
...
</connections>
</tpip>
前述の通り,tpip構成セクションにはTPIPNetに関する設定が含まれている.
次に示す要素が含まれている.
-
library
TPIPLibraryに関する設定を保持する.次の属性値を持つ.
-
baseDirectory
TPIPLibraryの位置を絶対パスまたは,作業ディレクトリからの相対パスで指定する.
-
connections
TPIPボードとの接続の設定のコレクションを保持する.次の属性値を持つ.
-
default
標準で用いる接続設定の名前.各connection要素のname属性のうちのいずれかでなければならない.
また,次に示すconnection要素を0個以上の任意の個数含むことが出来る.
-
connection
TPIPボードとの接続の設定を保持する.次の属性値を持つ.
-
name
接続設定の名前.
-
driver
この接続設定で用いる接続ドライバ名.現在のところ,Null,UART,Builtinの3種類を用いることが出来る.
-
communicationMode
TPIPの通信モード.以下の内のいずれかである.
値 | 意味 |
None | 一切の通信を行わない. |
Video | 動画転送のみを用いる. |
Control | コントロール通信のみを用いる. |
RSIO | リモートシリアル通信のみを用いる. |
VideoAndControl | 動画転送とコントロール通信を用いる. |
VideoAndRSIO | 動画転送とリモートシリアル通信を用いる. |
また,次に示すdriverProperties要素を必ず一つだけ含む.
-
driverProperties
ドライバの構成に必要な設定情報を保持する.
ドライバの設定の詳細は,次の節で詳しく説明する.
次に示すproperty要素を0個以上の任意の個数含む.
-
property
ドライバの設定情報を表す.次の属性値を持つ.
接続ドライバの種類
TPIPNetにはTPIPボードに接続するための標準的なドライバの他に,
デバッグ用として便利ないくつかの接続ドライバが含まれている.
以下に接続ドライバの詳細な説明を示した.
-
Null
通信を一切なにも行わないドライバ.入力周りの構築など,通信が必要ない場合に用いると便利である.
他にも,画像を扱うVideoDataクラスを指定する機能があり,これとFileVideoDataクラスを組み合わせることにより,
指定したJPEG画像をカメラ画像として取り扱うことが出来る.
これは,OpenCVなどによるフィルタのテストを行う際に用いると便利である.
このドライバには次の設定項目がある.
-
videoDataType
実際の動画転送を行うITPIPVideoDataを実装する型の名前を指定する.
なにも行わない場合居は,"TPIPAquarium.Implementation.NullVideoData, TPIPAquarium"にしておくとよい.
指定された型が,TPIPConnectionConfigurationElementを受け取るコンストラクタを持っている場合は,
この接続に指定されたドライバの設定情報が渡される.
-
Builtin
TPIPボードと,TPIPLibraryを用いて通信を行うドライバ.次の設定項目がある.
-
address
通信するTPIPボードのIPアドレス
-
rsioPort
リモートシリアル通信に用いるポートの番号
-
rsioSpeed
リモートシリアル通信のボーレート
-
UART
PCのシリアルポートを用いて,リモートシリアル通信を模擬するドライバ.
リモートシリアル通信を用いる回路をテストする際に便利である.
このドライバには次の設定項目がある.
-
portName
リモートシリアル通信の模擬に用いるシリアルポートの名称.
.NET FrameworkのSerialPortクラスの制限により,COMxという名前のポートしか用いることが出来ない.
-
timeout
通信がタイムアウトするまでの時間をミリ秒単位で指定する.
0を指定すると,無制限となる.
-
rsioSpeed
シリアル通信のボーレートを指定する.
aquarium構成セクション
構造
aquarium構成セクションは,XML Schema TPIPAquarium.xsdにより定義される.
以下にaquarium構成セクションの概略図を示した.
<aquarium>
<assemblies>
<assembly load="..." />
...
</assemblies>
<opencv use="..." baseDirectory="..."/>
<sdl baseDirectory="..." />
<screen width="..." />
<control inputMap="..." />
<videoFilters>
<videoFilter load="..." />
...
</videoFilters>
<scripts scriptPath="...">
<script name="..." />
</scripts>
<i2c>
<deviceFactory>
<device name="..." />
...
</deviceFactory>
<devices>
<device name="...">
<properties>
<add name="..." />
...
</properties>
</device>
...
</devices>
</i2c>
</aquarium>
aquarium構成セクションには,以下の要素が含まれている.
-
assemblies
追加で読み込むアセンブリに関する情報のコレクションを保持する.
次に示すassembly要素を0個以上の任意の個数含むことが出来る.
-
assembly
追加で読み込むアセンブリに関する情報を保持する.次の属性値を持つ.
-
load
このアセンブリを読み込むかどうかを指定する.
読み込む場合はtrue,読み込まない場合はfalseを指定する.
-
name
読み込むアセンブリ名を指定する.
例:DRP.TPIPAquariumアセンブリを起動時に読み込む
<assemblies>
<assembly load="true" name="DRP.TPIPAquarium" />
</assemblies>
-
openCV
OpenCVに関する設定を保持する.次の属性値を持つ.
-
use
OpenCVを読み込むかどうかを指定する.読み込む場合はtrue,読み込まない場合はfalseを指定する.
-
baseDirectory
OpenCVが存在するディレクトリのパスを指定する.
例:..\lib\OpenCVからOpenCVを読み込む.
<opencv use="true" baseDirectory="..\lib\OpenCV" />
-
sdl
SDLに関する設定を保持する.次の属性値を持つ.
-
baseDirectory
SDLが存在するディレクトリのパスを指定する.
例:..\lib\SDL\x86からOpenCVを読み込む.
<sdl baseDirectory="..\lib\SDL\x86" />
-
screen
画面に関する設定を保持する.次の属性値を持つ.
例:画面を800x600ピクセルのウィンドウモード,フレームレートを最大24FPS,フォントをMS ゴシック,18ptに設定.
<screen width="800" height="600" depth="0" fps="24" fontDef="MEM:msgothic.ttc,18,0,0" />
-
control
入力に関する設定を保持する.つぎの属性値を持つ.
-
inputMap
入力デバイスのボタンや軸のマッピングを保持するファイルを指定する.
詳細はinputMap.xmlの章で説明する.
例:inputMap.xmlからマッピングの設定を読み込む
<control inputMap="inputMap.xml" />
-
videoFilters
ビデオフィルタに関する設定のコレクションを保持する.
次に説明するvideoFilter要素を0個以上の任意の個数含むことが出来る.
-
videoFilter
ビデオフィルタに関する設定を保持する.次の属性値を持つ.
-
load
この要素で表されるビデオフィルタを読み込むかどうかを指定する.
読み込む場合はtrue,読み込まない場合はfalseを指定する.
-
type
ビデオフィルタの型を指定する.
-
enabled
このビデオフィルタを起動時に有効にするかどうかを指定する.
起動時に有効にする場合はtrue,無効にする場合はfalse.
例:DRP.TPIPAquarium.CameraCalibratorを起動時に読み込む.ただし,起動時には無効にしておく.
<videoFilters>
<videoFilter load="true" type="DRP.TPIPAquarium.CameraCalibrator" enabled="false" />
</videoFilters>
-
scripts
スクリプトに関する設定を保持する.次の属性値を持つ.
-
scriptPath
スクリプトの格納ディレクトリのパスを指定する.
-
libraryPath
スクリプトのライブラリ格納ディレクトリのパスを指定する.
次に説明するscript要素を0個以上の任意の個数含むことが出来る.
-
script
起動時に読み込むスクリプトを指定する.次の属性値を持つ.
例:スクリプトの格納ディレクトリを"..\scripts",ライブラリ格納ディレクトリを"..\scripts\lib"に設定し,
起動時にmain.pyを読み込む
<scripts scriptPath="..\scripts" libraryPath="..\scripts\lib" >
<script name="main.py" />
</scripts>
-
i2c
I2Cに関する設定を保持する.次に説明するdeviceFactory要素,devices要素を一つずつ含んでいる必要がある.
-
deviceFactory
I2Cデバイスファクトリに関する設定を保持する.以下に説明するdevice要素を0個以上の任意の個数含むことが出来る.
-
device
デバイスファクトリに追加するデバイスの種類に関する設定を保持する.次の属性値を持つ.
-
name
デバイスタイプの名前を指定する.
-
type
デバイスの型を指定する.この型はI2CDeviceBaseのサブクラスで無ければならない.
例:DRP.TPIPAquarium.Devices.MotorDriverをMotorDriverという名前でファクトリに登録する.
起動時にmain.pyを読み込む
<deviceFactory>
<device name="MotorDriver" type="DRP.TPIPAquarium.Devices.MotorDriver"/>
</deviceFactory>
-
devices
使用するI2Cデバイスのコレクションを保持する.以下に説明するdevice要素を0個以上の任意の個数含むことが出来る.
-
device
使用するデバイスの設定を保持する.次の属性値を含む.
-
name
デバイスの名前を指定する.
-
driver
デバイスの制御に用いるドライバを指定する.deviceFactory要素内のdevice要素に,この属性で指定した名前を持つものがなければならない.
また,デバイスのその他の設定を保持するproperties要素を必ず1つ含む.
properties要素は0個以上の任意の個数のadd要素を含むことができる.
一つのadd要素は設定の名称を表すname属性と,設定の値を表すvalue属性を持つ.
例:"ArmYaw"という名前のアドレス0x40のMotorDriverを追加する.
MotorDriverに追加パラメータとしてswapDirection=trueを渡す.
<devices>
<device name="ArmYaw" driver="MotorDriver">
<properties>
<add name="swapDirection" value="true" />
</properties>
</device>
</devices>
|