名称 | MIRS1403 モータ管理モジュール詳細設計書 |
---|---|
番号 | MIRS1403-SOFT-0010 |
最終更新日:2015.2.4
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2014.12.11 | 野澤 | 初版 | |
A02 | 2014.12.12 | 野澤 | 大林教員 | 関数名及び誤植の修正 |
A03 | 2014.12.20 | 野澤 | モジュール仕様の変更 | |
A04 | 2014.12.24 | 野澤 | 大林教員 | 関数名の修正 |
A05 | 2015.2.4 | 野澤 | 仕様変更についての追記を行った。 |
本ドキュメントは、MIRS1403のモータ管理モジュールの詳細設計書である。
尚、本ドキュメントにおける設計計画は実質的に廃止した。詳細については、以下を参照。
MIRS1403 ソフトウェア開発報告書
本モジュールは、モータを管理する機能を持つ。
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
typedef struct {...} | Motor_velocity | モータ速度構造体 | |
型 | メンバ名 | 概要 | 備考 |
int | .left_motor_velocity | 左モータ速度 | |
int | .right_motor_velocity | 右モータ速度 |
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
typedef struct {...} | Motor_PIDstate | モータPID情報構造体 | |
型 | メンバ名 | 概要 | 備考 |
double | .error_P | 比例項 | |
double | .error_I | 積分項 | |
double | .error_D | 微分項 | |
double | .u | 制御入力 |
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
typedef struct {...} | Encoder_value | エンコーダ値構造体 | |
型 | メンバ名 | 概要 | 備考 |
int | .left_encoder_value | 左エンコーダの値 | |
int | .right_encoder_value | 右エンコーダの値 |
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
const char | *motor_directory | モータデバイスのディレクトリ | |
const size_t | motor_write_bytes | モータデバイスドライバに書き込むバイト数 |
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
const char | *encoder_directory | エンコーダデバイスのディレクトリ | |
const size_t | encoder_write_bytes | エンコーダデバイスドライバから読み込むバイト数 |
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
const int | motor_thread_priority | モータスレッドの優先度 | |
const int | encoder_thread_priority | エンコーダスレッドの優先度 |
修飾子 | 名称 | 概要 | 備考 |
---|---|---|---|
#define | MOTOR_LEFT_PID_GAIN_P | 左モータの比例ゲイン | |
#define | MOTOR_LEFT_PID_TIME_I | 左モータの積分時間 | |
#define | MOTOR_LEFT_PID_TIME_D | 左モータの微分時間 | |
#define | MOTOR_RIGHT_PID_GAIN_P | 右モータの比例ゲイン | |
#define | MOTOR_RIGHT_PID_TIME_I | 右モータの積分時間 | |
#define | MOTOR_RIGHT_PID_TIME_D | 右モータの微分時間 |
修飾子・戻値 | 名称・引数 | 概要 | 修飾子・戻値の詳細 | 引数の詳細 | 備考 |
---|---|---|---|---|---|
void | motor_drive(MotorVelocity* motorvelocity, MotorPIDstate* motor_pidstate_left, MotorPIDstate* motor_pidstate_right) | モータを駆動する関数 | motorvelocity: 左右のモータに入力する速度 motorpid_left: 左モータのPID制御情報 motorpid_right: 右モータのPID制御情報 | モータのPID情報は共通にする可能性がある。 | |
EncoderValue | motor_PID_inital() | PID情報を初期化する関数 |
修飾子・戻値 | 名称・引数 | 概要 | 修飾子・戻値の詳細 | 引数の詳細 | 備考 |
---|---|---|---|---|---|
int | motor_thread_create() | モータスレッドを開始する関数 | 正常終了時:0 異常終了時:-1 | ||
int | motor_thread_abort() | モータスレッドを終了する関数 | 正常終了時:0 異常終了時:-1 |
修飾子・戻値 | 名称・引数 | 概要 | 修飾子・戻値の詳細 | 引数の詳細 | 備考 |
---|---|---|---|---|---|
EncoderValue | encoder_inital() | エンコーダの計測値を初期化する関数 | 初期化されたエンコーダの計測値 | ||
void | encoder_start() | エンコーダによる計測を開始する関数 | |||
void | encoder_stop() | エンコーダによる計測を停止する関数 | |||
EncoderValue | get_encoder_data() | エンコーダの計測値を取得する関数 | 正常終了時:エンコーダの値 異常終了時:-1 | ||
double | convert_encoder_data_to_distance(EncoderValue* encodervalue_raw) | エンコーダの計測値を距離[m]に変換する関数 | 正常終了時:移動距離[m] 異常終了時:NAN | エンコーダの計測値 | |
double | convert_encoder_data_to_rotation(EncoderValue* encodervalue_raw) | エンコーダの計測値を回転角度[rad]に変換する関数 | 正常終了時:回転角度[rad] 異常終了時:NAN | エンコーダの計測値 |
修飾子・戻値 | 名称・引数 | 概要 | 修飾子・戻値の詳細 | 引数の詳細 | 備考 |
---|---|---|---|---|---|
int | encoder_thread_create() | エンコーダスレッドを開始する関数 | 正常終了時:0 異常終了時:-1 | ||
int | encoder_thread_abort() | エンコーダスレッドを終了する関数 | 正常終了時:0 異常終了時:-1 |
試験用プログラムの詳細を以下に示す。
ファイル名 | 試験内容 | 合格基準 | 不合格時の対処法 | 備考 |
---|---|---|---|---|
test_drive | モータの駆動を行うことができるかを確認する。 適当な速度値を指定した時、モータが駆動するかにより合否を決定する。 | 適当な速度値を入力した時、モータが駆動したら合格とする。 | プログラムを修正し、再度試験を行う。 上記の方法で改善が見られないようならば、その時に対処法を考える。 | |
test_encoder | 機体の走行距離[m]及び回転角度[rad]を計測することができるかを確認する。 手動で機体を動作させた時、エンコーダによる計測が行えるかにより合否を決定する。 | 手動で機体を動作させた時、エンコーダによる計測が行えたら合格とする。 ただし、計測誤差は無理する。 | プログラムを修正し、再度試験を行う。 上記の方法で改善が見られないようならば、その時に対処法を考える。 |
コーディング及び全モジュールについてのドキュメントの承認を得た後、必要と思われるデバッグ処理の詳細を追記する。
プログラムについては、以下を参照。
MIRS1403 ソフトウェア開発報告書