名称 | MIRS1805 ソフトウェア詳細設計書 |
---|---|
番号 | MIRS1805-SOFT-0001 |
最終更新日:2019.02.07
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2018.11.07 | 佐野、杉山、渡邊 | 初版 | |
A02 | 2018.11.15 | 佐野、杉山、渡邊 | 第二版 | |
A03 | 2018.11.16 | 佐野、杉山、渡邊 | 牛丸先生 | 第三版 | B01 | 2018.02.07 | 佐野、杉山、渡邊 | 第四版 |
本ドキュメントはMIRS1805のソフトウェアの詳細設計書について記述したものである。
機能概要をtable1に示す。
機能 | 内容 |
---|---|
スケジュール管理 | タッチディスプレイからスケジュールを変更し、設定された時刻になったときに読み上げる。 |
会話 | 会話開始ボタンを押すことで、会話をすることが出来る。会話終了時に同様のボタンを押す。また会話できる内容に限りがあるので、キーワードとそれに対する返答を以下に示す。 キーワード:予定/こんにちは。/おはよう。/こんばんは/ 返答:明日の授業は○○です。/こんにちは。/おはよう。/こんばんは。/ |
ライブ配信 |
カメラで授業を撮影してYouTubeでライブ配信することにより、欠席してしまった学生も授業に参加できる。 配信した動画をアーカイブに残すことで他の学生も授業を見返すことができる。 |
首の伸縮 | 設定された時刻になるとロボメイトの首のモータが動き、首が伸縮する。 |
登下校 | 設定された時刻に登校し所定の位置についたら挨拶する。 設定された時間に次の日の予定を言い下校する(廊下に行く)。 |
呼ばれた座席まで移動 | SSHを用いて携帯からロボメイトへ座席番号を送信すると、その座席番号に伴った場所へ移動する。 |
RaspberryPiのPython、C言語のモジュール構成図をfig.1、fig.2に示す。
fig.1: Pythonのモジュール構成図
fig.2: C言語のモジュール構成図
RaspberryPiの新規モジュールは青ブロック、C言語の黒い太枠内のrequestとarduino以外は全て新規関数。
RaspberryPiの新規モジュール一覧をtable2,table3に示す。
Arduinoは既存のモジュールに新規関数を作成したので、作成した関数をtable4に示す。
モジュール名 | 新規・変更関数名 | 機能 | 説明 |
---|---|---|---|
menu1,menu2 | scdl_year scdl2_year_mon○ scdl2_tue○ scdl2_year_wed○ scdl2_year_thu○ scdl2_year_fri○ |
年の選択画面を表示する。 | ディスプレイに2019年と2020年のボタンを表示する。 |
scdl_month2019 scdl_month2020 scdl2_month2019 scdl2_month2020 |
日の選択画面を表示する。 | ディスプレイに1月から12月のボタンを表示する。 | |
scdl_day○ scdl2_day○ |
日の選択画面を表示する。 | ディスプレイに1日から31日のボタンを表示する。(28~31日がない月はそれらの日を表示しない。) | |
scdl_dayofweek○ scdl2_dayofweek○ |
教科の選択画面を表示する | 年、月、日から曜日を推定し、曜日にあった教科のボタンを表示する。 | |
donichi_finish | 再選択を促す(土日の場合) | 土日を選択した場合に再選択を促す文面とOKボタンを表示する。 | |
scdl_finish | 編集を決定、終了する | 編集内容を保存してメイン画面に戻る。 | |
scdl_cancel | 編集をキャンセルする | 編集内容を破棄してメイン画面に戻る。 | |
talk | 人の音声を認識し、返事をする | 人の音声を認識し、辞書に登録された単語が発話された場合返事をする。 | |
live | haishi.sh | YouTubeLiveを開始する。 | YouTubeLiveを開始する。 |
モジュール名 | 新規・変更関数名 | 機能 | 説明 |
---|---|---|---|
run | thread_main○_○ thread_main_in thread_main_out |
超音波センサと走行のプログラムをマルチスレッドで処理する。 | 超音波センサと走行のプログラムをマルチスレッドで処理する。 |
thread_run○_○ | 指定された座席と撮影する場所を行き来する。 | 指定された座席では机を正面に見えるように、撮影する場所では黒板を正面に見えるように移動する。 | |
thread_in thread_out |
登下校する。 | 廊下と撮影する場所を行き来する。 | |
thread_uss | 障害物を検知したら信号をだす。 | 超音波センサで障害物との距離を測る。 | |
neck | neck_up | キリンの頭を上げる | モータのpwm値を設定し、一定時間モータを回転させる |
neck_down | キリンの頭を下げる | モータのpwm値を設定し、一定時間モータを回転させる |
モジュール名 | 新規・変更関数名 | 機能 |
---|---|---|
motor.ino | motor_set_neck | 首のモータを制御する |
RaspberryPiの既存モジュールに関してはMIRSMG4 ドキュメント管理台帳を参照。
Arduinoの既存モジュールに関してはMIRSMG4 ドキュメント管理台帳を参照。
ロボメイトの一日の行動フローチャートをfig.3に示す。
fig.3: 行動フローチャート
走行時の行動フローチャートをfig.4に示す。
fig.4: 走行フローチャート
ブロックフローチャートをfig.5に示す。
fig.5:ブロックごとの行動フローチャート
緊急停止ボタンが押されたらどの動作の場合でもモーターの回転を強制終了する。
以下にスレッドの構成を示す。
RaspberryPi
・メインスレッド
・首の伸縮スレッド
・会話スレッド
テスト名 | テスト内容 |
---|---|
移動テスト | SSHを用いて携帯から入力された座席まで移動するか 登下校するときに決められた時刻になったら所定の位置に行くか |
原点回帰テスト | 移動した後、決められた時刻になったら所定の位置に戻るか |
スケジュール編集テスト | スケジュール編集ボタンをクリックしてスケジュール編集ができるか |
スケジュールお知らせテスト | 決められた時刻になったら自動でスケジュール読み上げができるか |
音声認識&会話テスト | 音声を認識して、内容に応じた返答ができるか |
撮影テスト | 決められた時刻になったらライブ配信をしてアーカイブを残せるか |
伸縮テスト | 決められた時刻になったら首の伸縮が行われるか |