Skip to content

Motor control

Shoya Matsumori edited this page Feb 2, 2017 · 5 revisions

概要

ここでは、imcsモータドライバを用いたPID制御および、モータコントロールモジュールについて解説する。

準備

モーターモジュールを使用するには、insmodを実行しカーネルモジュールをロードする必要がある。 モータコントローラのカーネルオブジェクトは/motor_control/driver/urbtc.koに存在する。 モジュールのロードをスクリプトに書き下したものが、作業ディレクトリのrootにあるので利用する前には実行すること。その際、sudoすることを忘れずに。

構成

ディレクトリ構成は以下のようである。 motor_control以下のプログラムをサブモジュールとし、core内のDrive関連のプログラムをモジュールと定義する。 各担当者は、core内のモジュールからmotor_controlにアクセスする事となる。その為、サブモジュールの解説については読み飛ばして構わない。

/

---/core/

---/motor_control

サブモジュール(motor_control)

サブモジュールは/motor_control内に格納されている。このサブモジュールでは、モータコントローラの初期化、PID各パラメータの設定、目標速度及び目標位置の設定を行うことが出来る。インターフェイスとして用意されている関数は以下のとおりである。 (under construction)

メインモジュール(Drive)

メインモジュールは/core内に格納されている。このモジュールは主にMainLogicにて使用される事となる。以下に簡単な仕様を示す。

Init(): 関数の初期化

RunForward(double scale): 指定数値分進む

この関数では[mm]のスケールで指定した数値分、前進または後進する。 入力値はモータのスケールに変換され、サブモジュールのrun_forwardルーチンの引数として渡され実行される。

Turn(double angle): 指定角度分回転する

この関数は指定角度分回転する。入力値はモータのスケールに変換される。

TurnRight(double angle): 指定角度分回転する

この関数は指定した角度文回転する。

TurnLeft(double angle): 同上