名称 | MIRS1805 ソフトウェア詳細設計書 |
---|---|
番号 | MIRS1805-SOFT-0001 |
最終更新日:2018.11.07
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2018.11.07 | 佐野、杉山、渡邊 | 初版 | |
A02 | 2018.11.15 | 佐野、杉山、渡邊 | 第二版 | |
A02 | 2018.11.16 | 佐野、杉山、渡邊 | 牛丸先生 | 第三版 |
本ドキュメントはMIRS1805のソフトウェアの詳細設計書について記述したものである。
機能概要をtable1に示す。
機能 | 内容 |
---|---|
スケジュール管理 | タッチディスプレイからスケジュールを入力し、ディスプレイ上のスケジュール読み上げボタンが押されたときと設定された時刻になったときに読み上げる。 |
会話 | 会話開始ボタンを押すことで、会話をすることが出来る。会話終了時に同様のボタンを押す。また会話できる内容に限りがあるので、キーワードとそれに対する返答を以下に示す。 キーワード:明日の予定を教えて。/ こんにちは。/おはよう。/こんばんは。/今日の天気を教えて。/明日の天気を教えて。/君は誰(君の名は)。/ 返答:明日は授業交代でAがBになります。○○の小テストがあります。○○の宿題があります。/ こんにちは。/おはよう。/こんばんは。/今日の沼津市の天気は○○です。/明日の沼津市の天気は○○です。/私はロボメイトです。/ |
ウェブサービス |
カメラで授業を撮影して学外用ウェブサイトでライブ配信することにより、欠席してしまった学生も授業に参加できる。 このウェブサイトではパソコンのキーボードで入力した、テキストと座標番号の送信が可能であり テキストを送信するとそのテキストを読み上げ、座標番号を送信するとその座標番号に伴った場所へ移動する。 遠隔ログインしている場合は休み時間も撮影とライブ配信をする。 ライブ配信とテキスト読み上げにより質問や会話をすることもでき、Googleドライブに配信した動画を保存することで他の学生も授業を見返すこともできる。 |
首の伸縮 | 設定された時刻になるとロボメイトの首のモータが動き、首が伸縮する。 |
登下校 | 設定された時刻に登校し所定の位置についたら挨拶する。 設定された時間に次の日の予定を言い下校する(廊下に行く)。 |
呼ばれた座席まで移動 | 学内用ウェブサイトを開いてロボメイトへ座席番号を送信すると、その座席番号に伴った場所へ移動する。 |
arduinoとRaspberryPiのモジュール構成図をfig.1、fig.2に示す。
fig.1: RaspberryPiのモジュール構成図
fig.2: Arduinoのモジュール構成図
RaspberryPiの新規モジュールは青ブロックで、Arduinoの新規モジュールは太い黒線で示す。
RaspberryPiの新規モジュール一覧をtable2,table3、Arduinoの新規モジュール一覧をtable4に示す。
モジュール名 | 新規・変更関数名 | 機能 |
---|---|---|
schedule | schedule_choice | スケジュールの編集をするか読み上げをするか選ぶ。 |
write | write | スケジュールを編集する。 |
read | read | 入力されたテキストを読み込む。 |
display | display | 編集されたスケジュールを表示する。 |
audio_out | audio_out | 音声出力する。 |
talk | talk | 人の音声を認識し、内容に応じた返事をする。 |
audio_in | audio_in_n | マイクでの音声入力をする。 |
audio_in_w | ワイヤレスマイクでの音声入力をする。 | |
button | button_check | ボタンが押下されたかを確認する。 |
io | io_open | GPIOをオープンにする。 |
io_get_open | ボタンが押下されたかを確認する。 | |
login_menu | login_menu | 質問・会話をする時、ロボメイトを移動させる時に外部のパソコンからのテキスト送信をする。 |
record | record | 録画する。 |
live | live | ライブ配信をする。 |
camera | camera | 動画を撮影する。 |
upload | upload | 動画と音声をアップロードする。 |
web | web | ウェブサイトから映像の視聴や遠隔操作をできるようにする。 |
call_menu | call_menu | ロボメイトを近くに呼ぶときにスマートフォンでの座標番号の送信をする。 |
モジュール名 | 新規・変更関数名 | 機能 |
---|---|---|
run | run_reset | 走行の初期化をする。 |
run_go | 受け取った座標の場所へ移動する。 | |
seat | seat_route | 入力された座標を読み取ってそれを渡す。 |
neck | neck_move | 首を伸び縮みさせる。 |
モジュール名 | 新規・変更関数名 | 機能 |
---|---|---|
neck_ctrl | run_ctrl_execute() | 走行制御の処理を実行する。 |
run_ctrl_set(double speed, double dist) | 速度・距離指令値を与える。 | |
encoder | encoder_get(long *ctl_neck) | エンコーダに使用するピンの設定とエンコーダカウント関数の割り込み設定を行う。 |
distance | distance_get(double *dist_neck) | タイヤの走行距離を取得する。 |
motor | motor_set(int pwm_neck) | モータに使用するピンの設定を行う。 |
vel_ctrl | vel_ctrl_set(double vel_neck) | 速度制御の処理を実行する。 |
vel_ctrl_get(double *vel_neck) | 回転の速度の指令値を与える。 |
RaspberryPiの既存モジュールに関してはMIRSMG4 ドキュメント管理台帳を参照。
Arduinoの既存モジュールに関してはMIRSMG4 ドキュメント管理台帳を参照。
ユーザーインターフェースの画像を以下に示す。
fig.3: ディスプレイのユーザーインターフェース
外部ログインありの時の行動フローチャートをfig.4に示す。
fig.4: 外部ログインありの時の行動フローチャート
外部ログインなしの時の行動フローチャートをfig.5に示す。
fig.5: 外部ログインなしの時の行動フローチャート
走行時の行動フローチャートをfig.6に示す。
fig.6: 走行フローチャート
ブロックフローチャートをfig.7に示す。
fig.7:ブロックごとの行動フローチャート
緊急停止ボタンが押されたらどの動作の場合でもモーターの回転を強制終了する。
以下にスレッドの構成を示す。
RaspberryPi
・メインスレッド
・首の伸縮スレッド
・会話スレッド
テスト名 | テスト内容 |
---|---|
移動テスト | 学外用と学内用のウェブサイトで入力された座席まで移動するか 登下校するときに決められた時刻になったら所定の位置に行くか 授業中にウェブサイトで入力があっても移動しないか |
原点回帰テスト | 移動した後、決められた時刻になったら所定の位置に戻るか |
スケジュール編集テスト | スケジュール編集ボタンをクリックしてスケジュール編集ができるか |
スケジュール読み上げテスト | スケジュール読み上げボタンをクリックしてスケジュール読み上げと表示ができるか |
スケジュールお知らせテスト | 決められた時刻になったら自動でスケジュール読み上げと表示ができるか |
音声認識&会話テスト | 音声を認識して、内容に応じた返答ができるか |
撮影テスト | 決められた時刻になったら撮影してアーカイブを残せるか |
コメントテスト | 学外用ウェブサイトで入力されたテキストの読み上げができるか |
伸縮テスト | 決められた時刻になったら首の伸縮が行われるか |
遠隔ログイン時に移動しながらテキストを読み上げられるか
撮影をしながらテキストの読み上げができるか
撮影をしながら音声を録音できるか