沼津高専 電子制御工学科
MG3S 標準プログラムのスレッド構成と走行制御の動作仕様
MIRSMG3D-MG3S-0017
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2015/7/9 牛丸 初版

1. はじめに

 本ドキュメントは MG3S 標準プログラムのスレッド構成と走行制御の動作仕様を示す。

2. スレッド構成

標準プログラムでは、以下の4つスレッドが動作する。
  1. pilot : メインスレッド。デバイスをオープンし、encoder スレッドと vel_ctrl スレッドを生成する。
  2. encoder:一定周期でエンコーダ値を取得し、エンコーダのカウンタをリセットする。
  3. vel_ctrl:一定周期でモータの速度制御を行う。
  4. run_ctrl: 一定周期で直進または回転制御を行う。全体の動作シーケンスの途中で必要になった場合に生成され、その制御を完了すると消滅させられる。
メインスレッド以外のスレッドは、20ms周期で loop 処理を行っており、優先度を 20 に設定している(メインスレッドの優先度指定なし)。

上記のスレッドの動作の関連をシーケンス図に示す。

3. 走行制御の動作仕様

全体の動作シーケンスを管理するモジュール(mirsak_patrol)が、走行制御が必要になった ところで、走行制御モジュールに対して走行モード(直進か回転)と速度の指定を行い、 走行制御(run_ctrl)スレッドを生成する。

走行制御スレッドは、全体の動作シーケンスの途中で必要になった場合に生成され、 左右のタイヤの回転距離から、直進またはその場回転に必要な左右のモータの速度指令値 を計算し、その指令値を速度制御モジュールに送る。

以下にその様子をシーケンス図で示す。

mirsak_patrol は ctrl_endflag が 1 になるのを待って、走行制御スレッドを cancel する。