名称 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 野澤 仕様変更についての追記を行った。

目次

  1. はじめに
  2. モジュール概要
  3. モジュール仕様
  4. 試験仕様
  5. プログラム

  1. はじめに

    本ドキュメントは、MIRS1403のモータ管理モジュールの詳細設計書である。
    尚、本ドキュメントにおける設計計画は実質的に廃止した。詳細については、以下を参照。
    MIRS1403 ソフトウェア開発報告書

  2. モジュール概略

    本モジュールは、モータを管理する機能を持つ。

  3. モジュール仕様

    1. 構造体・列挙体

    2. 構造体:Motor_velocity

    3. 構造体:Motor_velocity
      修飾子 名称 概要 備考
      typedef struct {...} Motor_velocity モータ速度構造体
      メンバ名 概要 備考
      int .left_motor_velocity 左モータ速度
      int .right_motor_velocity 右モータ速度

    4. 構造体:Motor_PIDstate

    5. 構造体:Motor_PIDstate
      修飾子 名称 概要 備考
      typedef struct {...} Motor_PIDstate モータPID情報構造体
      メンバ名 概要 備考
      double .error_P 比例項
      double .error_I 積分項
      double .error_D 微分項
      double .u 制御入力

    6. 構造体:Encoder_value

    7. 構造体:Encoder_value
      修飾子 名称 概要 備考
      typedef struct {...} Encoder_value エンコーダ値構造体
      メンバ名 概要 備考
      int .left_encoder_value 左エンコーダの値
      int .right_encoder_value 右エンコーダの値

    8. 定数

      モータデバイス関連の定数
      修飾子 名称 概要 備考
      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 エンコーダスレッドの優先度
      PIDゲイン
      修飾子 名称 概要 備考
      #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 右モータの微分時間

    9. 関数・関数型マクロ

      モータ管理関連の関数
      修飾子・戻値 名称・引数 概要 修飾子・戻値の詳細 引数の詳細 備考
      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

  4. 試験仕様

    1. 試験用プログラム

    2. 試験用プログラムの詳細を以下に示す。
      試験用プログラム
      ファイル名 試験内容 合格基準 不合格時の対処法 備考
      test_drive モータの駆動を行うことができるかを確認する。
      適当な速度値を指定した時、モータが駆動するかにより合否を決定する。
      適当な速度値を入力した時、モータが駆動したら合格とする。 プログラムを修正し、再度試験を行う。
      上記の方法で改善が見られないようならば、その時に対処法を考える。
      test_encoder 機体の走行距離[m]及び回転角度[rad]を計測することができるかを確認する。
      手動で機体を動作させた時、エンコーダによる計測が行えるかにより合否を決定する。
      手動で機体を動作させた時、エンコーダによる計測が行えたら合格とする。
      ただし、計測誤差は無理する。
      プログラムを修正し、再度試験を行う。
      上記の方法で改善が見られないようならば、その時に対処法を考える。

    3. デバッグ処理

    4. コーディング及び全モジュールについてのドキュメントの承認を得た後、必要と思われるデバッグ処理の詳細を追記する。

  5. プログラム

    プログラムについては、以下を参照。
    MIRS1403 ソフトウェア開発報告書

▲上へ

MIRS1403ドキュメント管理台帳