| 名称 | MIRS1903 ソフトウェア詳細設計書 |
|---|---|
| 番号 | MIRS1903-SOFT-0002 |
| 版数 | 最終更新日 | 作成者 | 承認者 | 改訂記事 |
|---|---|---|---|---|
| A01 | 2019.12.13 | 芹澤正太郎・長井是親・村松岳志 | 初版 |
本ドキュメントはMIRS1903システム詳細設計書である。
Raspberry Pi 1台目の使用モジュールをFig.1に、2台目の使用モジュールをFig.2に示す。
Raspbery Piで使用するモジュール一覧を以下のTable.2に示す。
なお、本設計書ではディスプレイと接続された方のRaspberry Pi を2としてモジュールを定義した。
今回、新規に実装する関数についてのみ関数、引数を示した。それ以外の既存部分はMIRS4Gドキュメントに準じるものとする。
| モジュール名 | 動作概要 | 関数 | 引数 | 戻り値 |
|---|---|---|---|---|
| pilot.c | 全体的な操作 | int main() | void | 0 or -1 |
| request.c | Arduinoに指令を出す | void request_set_runmode(run_state_t state, int speed, int dist) | int speed, int dist | なし |
| uss.c | 超音波センサを読み取る | |||
| int uss_open_l() | なし | 0 or それ以外 | ||
| int uss_open_r() | なし | 0 or それ以外 | ||
| long uss_get_l() | なし | 測定値[cm] or -1 | ||
| long uss_get_r() | なし | 測定値[cm] or -1 | ||
| *snag.c | 障害物を検知したときの動作モジュール | int snag() | なし | 0 or 1 |
| *camera_snag.c | カメラによる障害物検知の画像処理を行う | camera_snug() | なし | 0 or 1 |
| モジュール名 | 概要 | 関数名 | 関数機能 | 引数 | 戻り値 |
|---|---|---|---|---|---|
| *camera_bumpy | カメラによる床のささくれの画像処理を行う | int camera() | 0 | 0 | 1(ささくれを検知)または0(ささくれを検知できなかった) |
| *display.py | ディスプレイ表示を行う | ||||
| _init_ | 表示フレームの設定 | parent | なし | ||
| SetstartFrame | 画面表示 | なし | なし | ||
| LengthSize | 縦幅入力 | なし | なし | ||
| WidthSize | 横幅入力 | なし | なし | ||
| StartBut | 開始処理 | なし | なし | ||
| StopBut | 停止処理 | なし | なし | ||
| *bumpy | 床のささくれを検知したときの動作モジュール | int bumpy() | なし | なし | なし |
Arduinoで使用するモジュール構成を以下のFig.2に示す。
Arduinoで使用するモジュール一覧を以下のTable.3に示す。
| モジュール名 | 概要 | 関数名 | 引数 | 戻り値 |
|---|---|---|---|---|
| slave.ino | Raspberry Piとの通信、走行制御を行う | void slave() | なし | なし |
| run_ctrl.ino | 走行制御を行う | |||
| vel_ctrl.ino | 走行速度制御を行う | |||
| distance.ino | 走行距離の測定を行う | |||
| encoder.ino | エンコーダの読み取りを行う | |||
| motor.ino | モータの制御を行う | |||
| io.ino | ioピンの信号を取得する | |||
| raspi.ino | Raspbey Pi との通信を行う |
動作フローチャートを以下に示す。
また、いかに走行動作、床のはがれ検知用モジュールの動作、障害物検知用モジュールの動作を示す。
wxPythonを用い、GUIを作成する。ディスプレイ表示プログラムのモジュール構成を以下に示す。
言語:Python(ver. 3.7.0)
GUIライブラリ:wxPython(ver. 4.0.7)
画面には体育館の縦横のサイズ入力が可能な欄と開始、停止ボタンを配置する。
ユーザーの入力はタッチパネルの動作を想定する。
画面のデザインを以下に示す。
各パートのドキュメントのリンクを以下に示す。