| 名称 | MIRS1604 ソフトウェア詳細設計書 |
|---|---|
| 番号 | MIRS1604-SOFT-0001 |
| 版数 | 最終更新日 | 作成 | HTML作成 | 承認 | 改訂記事 |
|---|---|---|---|---|---|
| A01 | 2016.12.14 | 梶田直哉 杉山瀬名 堀住恭平 | 梶田直哉 杉山瀬名 堀住恭平 | 初版 | |
| A02 | 2016.12.16 | 梶田直哉 杉山瀬名 堀住恭平 | 梶田直哉 杉山瀬名 堀住恭平 | モジュール構成図の変更、モジュール一覧の修正、会場の方角の変更、Fig.4、Table2、Table3の追加、フローチャートの修正、テスト項目のレイアウトの変更 |
|
| Fig.1 モジュール構成図 |
| モジュール名 | 機能 | 新規・変更関数名 | 開発要素 | 引数 | 戻り値 |
|---|---|---|---|---|---|
| pilot | MIRSの動作全体を制御する。 | 既存のものを使用する。 | |||
| brain | 動作シーケンスを管理する。 | void brain() | 新規に作成する。 | なし | なし |
| OpenCV | 画像処理を行う。 | int OpenCV_get() (int) OpenCV_create() |
新規に作成する。 | なし | struct{(bool) discovery,(unsigned int) size,(int) x,(int) y} 成功:1、失敗:-1 |
| device | デバイスファイルをOpen/Closeする。 |
int device_infrared_open()
int device_infrared_close() int device_infrared_get() int device_camera_open() int device_camera_close() int device_camera_get() |
赤外線センサとwebカメラを追加する。 |
なし
なし なし なし なし なし |
なし
なし なし なし なし なし |
| direction | 正体補正をする。 | int direction_correct(int dist) | オムニホイールに変更するため、対応させる。 | 正体補正する距離[cm] | 成功:1、失敗:-1 |
| infrared | 赤外線センサの信号を処理する。 |
int infrared_get(int infared_number)
void infrared_create() |
新規に作成する。 |
赤外線センサ番号
なし |
ある:1、ない:-1
なし |
| uss | 超音波計測を行う。 | int uss_get(int uss_port) | 超音波センサの数が4個になったため、対応させる。 | センサー番号 | 計測距離[cm] |
| io | ON/OFF IOデバイスのデータを処理する処理する。 | 既存のものを使用する。 | |||
| number | 数字認識を行う。 | int number_detect(int dist,int camera_number) | カメラを増やすため対応させる。 | カメラからボードまでの距離[cm]カメラ番号 | 成功:1,失敗:-1 |
| comm | サーバとの通信を行う。 | 既存のものを使用する。 | |||
| distance | 走行距離を管理する。 |
void distance_get(struct distance_data *distance_data)
void distance_reset() |
オムニホイールに変更するため対応させる。 | 距離データ なし |
なし
なし |
| vel_ctrl | モーターの速度制御を行う。 |
void vel_ctrl_set(float vel_ref_f, float vel_ref_b,float vel_ref_l,float vel_ref_r)
void vel_ctrl_mod(float vel_mod_f, float vel_mod_b,float vel_mod_l,float vel_ctrl_mod_r) void vel_ctrl_get_speed(float *speed_f, float *speed_b,float *speed_l,float *speed_r) |
オムニホイールに変更するため対応させる。 |
前後左右の速度指定値[cm/s]
前後左右の速度指定値[cm/s] 前後左右の速度指定値[cm/s] |
なし
なし なし |
| encoder | エンコーダ値を管理する。 |
void encoder_get(struct encoder_data *encder_data)
void encoder_reset() |
オムニホイールに変更するため対応させる。 |
エンコーダデータ
なし |
なし
なし |
| omni_ctrl | オムニホイールの制御を行う。 |
void omni_ctrl_set(float speed_v,float speed_w)
void omni_ctrl_dist(float dist) void omni_ctrl_unset_dist() void omni_ctrl_get_endflag() void omni_ctrl_create() void omni_ctrl_cancel() void omni_ctrl_stop() void omni_ctrl_reset() |
新規に作成する。 |
縦方向の走行スピード[cm/s],横方向の走行スピード[cm/s]
距離[cm] なし なし なし なし なし なし |
なし
なし なし なし なし なし なし なし |
| motor | モーターの管理を行う。 | void motor_drive(int u_f,int u_b,int u_l,int u_r) | モーターの数を4個に変更するため対応させる。 | 前後左右のモータに与えるpwm値(pwm値範囲:-128~127) | なし |
|
| Fig.2 会場の方角 |
|
| Fig.3 左側スタート時のカメラとモータの対応関係 |
|
| Fig.4 右側スタート時のカメラとモータの対応関係 |
| 左 | 右 |
|---|---|
| A | B |
| B | A |
| 左 | 右 | モータの出力の変更 |
|---|---|---|
| 2 | 1 | なし |
| 4 | 3 | なし |
| 1 | 4 | なし |
| 3 | 2 | なし |
|
| Fig.5 現場急行 |
|
| Fig.6 数字認識 |
|
| Fig.7 入場 |
|
| Fig.8 巡回A |
|
| Fig.9 巡回B |
|
| Fig.10 追従 |
|
| Fig.11 巡回復帰行動 |