レイヤー構成については !!! 本 を参考にすること。
基本的に、プログラムのソースコードはレイヤー内の機能毎に分割されている。
このレイヤーの実装については以下の通り
: モータに与える電圧 ![$ [V] $](form_1.png)
: 巻き線抵抗 ![$ [\Omega] $](form_3.png)
: 目標電流値 ![$ [A] $](form_5.png)
: 逆起電力定数 ![$ [V/rpm] $](form_7.png)
: モータの回転数 ![$ [cnt] $](form_9.png)
: モータの目標回転数 ![$ [cnt] $](form_9.png)
: P制御のゲイン ![$ [A/cnt] $](form_12.png)
: モータの目標回転数との差分 ![$ [cnt] $](form_9.png)
: I制御における差分の積分値 ![$ [cnt] $](form_9.png)
: 出力するPWM比 ![$ [1] $](form_16.png)
: 制御周期 ![$ [msec] $](form_18.png)
具体的な処理内容の一つは、デバイス・レイヤーで使われているデバイス依存の数値を、[mm]単位系に変換することであり、その逆変換を行うことである。
また、推定自己位置の計算や車輪の直径やトレッドといった筐体のパラメータ情報はこのレイヤーまでで処理し、上のレイヤーには [mm]単位系の情報を提供する。
ここで、並進速度(
)とは移動の直進成分であり、回転速度(
)は向きの変更を行う速度成分である。 車輪の移動速度を
,
, としたときの並進速度、回転速度の式は以下の様に表される。
上記の式は、制御レイヤーで用いる速度を計算するときに用いる。
回転速度を積分した回転量を筐体の向きに変換するには、筐体のトレッド情報が必要である。
!!! 図、トレッド情報が回転速度の計算に必要なのを示す図
また、制御レイヤーから実現すべき並進速度、回転速度が与えられたときの各車輪の回転速度は、以下の通り。
....飽きた。あとは口頭で。
1.5.7.1