| 名称 | ソフトウェア詳細設計 | 
|---|---|
| 番号 | MIRS2404-SOFT-0001 | 
| 版数 | 最終更新日 | 作成 | 承認 | 改訂記事 | 
|---|---|---|---|---|
| A01 | 2025.1.24 | 松嶋 昂平 | 香川先生 | 初版 | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| 予約データの取得 | 当日の案内のスケジュール、見学者の名前、PINを取得する。 | html,JavaScript | 
| 本人確認 | 見学者のPINと入力されたPINを比較してノン人確認をする。 | html,JavaScript | 
| 案内の進行 | 学校の見学を予約通りに行うように制御する | html,JavaScript | 
| 案内の中止/再開 | 途中で機体の動作の停止、再開 | html,JavaScript | 
| 見学者との対話 | 音声認識で質問を聞き取り、回答を生成して読み上げる。 | html,JavaScript | 
| 地図の表示 | ロボットの現在地を地図上に表示する | html,JavaScript | 
| 使用方法の説明 | 音声で説明し、使用方法の下増を見れるようにする。 | html,JavaScript | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| ユーザーの登録 | メールアドレス、ユーザーネーム、パスワードを登録する | html,JavaScript | 
| ログイン | パスワードを入力してログイン。ユーザーの権限ごとにリダイレクトするページを選択 | html,JavaScript | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| イベント予約 | 事前に見学を希望する内容を予約することができる。また、プロフィールを参照し、適切なイベントを優先的に表示する。 | html,JavaScript | 
| 対話予約 | 事前に見学を希望する相手との対話を予約することができる。また、プロフィールを参照し、適切なイベントを優先的に表示する。 | html,JavaScript | 
| プロフィールの設定 | イベント、対話予約で参照するプロフィールを設定する。 | html,JavaScript | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| 対話の登録 | 対話の予約が入れられる時間を登録する。 | html,JavaScript | 
| プロフィールの設定 | 対話予約で参照するプロフィールを設定する。 | html,JavaScript | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| イベントの登録 | 見学可能な場所、日時、時間などを設定して予約可能な状態にする | html,JavaScript | 
| イベントの更新 | 既に登録してある見学内容の変更をする | html,JavaScript | 
| イベントの削除 | 登録してある内容を消去する | html,JavaScript | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| 予約データの提供 | GET通信に対して当日の予約のリスト、予約者のユーザー名、PINを返す | html,JavaScript | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| モーターの制御 | 指令値に対してモータードライバへPID制御を行う | arduino | 
| エンコーダの読み取り | エンコーダの値を読み取り、トピックを流す | arduino | 
| LiDARデータの取り扱い | LiDARのデータを読み取り、処理し、トピックを流す | python | 
| 機能 | 概要 | 記述言語 | 
|---|---|---|
| Navigation2の処理 | 機体の移動ルートの制御を行う | pyhton | 
| ROSとWEBの間の通信 | WEBsocketでROSとWEBサイト間の通信を行う | html,javascript | 
| iPad用WEBアプリの配信 | PCからHTML等を配信する | arduino | 
![]()  | 
            
| fig1. iPad用アプリのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| gapless.html | iPad用WEBアプリのhtmlページ | 
| gapless.js | アプリ全体の制御、データの取得、ログインを行う | 
| gapless_chat.js | 対話機能の制御、音声認識、回答生成、回答の読み上げ、チャット履歴の表示などを行う。 | 
| gapless_ex.js | 使い方の画像の表示や説明の処理を行う。 | 
| gapless_ros.js | ROSとの通信を主に行い、現在地の取得、目的地の送信、走行状態の監視などを行う。 | 
| gapless.css | 全体的なスタイル、待機画像のスタイル | 
| gapless_chat.css | 対話のチャット欄のスタイル | 
| gapless_ex.css | 使い方の画像の表示や説明のスタイル | 
| gapless_ros.css | 地図、走行状態のスタイル | 
| LoginCSS.html | ログインページのスタイル | 
![]()  | 
                
| fig2. ログインページのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| appsscript.json | GASWEBアプリのタイムゾーンやoauthScopesの設定ファイル | 
| Login.html | アクセスして最初に表示されるページ。 | 
| LoginCode.gs | 登録、ログイン機能のdrive側での処理。データの操作などを主に行う | 
| LoginJavaScript.html | 登録、ログイン機能のフロント側での処理。登録フォームの送信などを行う | 
| LoginCSS.html | ログインページのスタイル | 
![]()  | 
			
| fig3. 見学者向けページのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| SystemCode.gs | ページアクセス時の処理の記述 | 
| appsscript.json | GASWEBアプリのタイムゾーンやoauthScopesの設定ファイル | 
| Home.html | アクセスして最初に表示されるページ。サイトの使用方法を記述 | 
| HomeCSS.html | ホームのページのスタイル | 
| EventListCode.html | イベント予約機能のdrive側での処理。データの操作などを主に行う | 
| EventListJavaScript.html | イベント予約機能のフロント側での処理。予約フォームの送信やイベントのリストの生成、ソートなどを行う | 
| EventList.html | イベント予約機能のhtmlページ | 
| EventListCSS.html | イベント予約機能のhtmlページのスタイルシートの記述 | 
| MatchListCode.html | 対話予約機能のdrive側での処理。データの操作などを主に行う | 
| MatchListJavaScript.html | 対話予約機能のフロント側での処理。予約フォームの送信やイベントのリストの生成、ソートなどを行う | 
| MatchList.html | 対話予約機能のhtmlページ | 
| MatchListCSS.html | 対話予約機能のhtmlページのスタイルシートの記述 | 
| ResevListCode.html | 予約確認機能のdrive側での処理。データの操作などを主に行う | 
| ResevListJavaScript.html | 予約確認機能のフロント側での処理。予約削除のフォームの送信やイベントのリストの生成、ソートなどを行う | 
| ResevList.html | 予約確認機能のhtmlページ | 
| ResevListCSS.html | 予約確認機能のhtmlページのスタイルシートの記述 | 
| PlofCode.html | プロフィール設定のdrive側での処理。データの操作などを主に行う | 
| PlofJavaScript.html | プロフィール設定のフロント側での処理。フォーム送信などを行う | 
| Plof.html | プロフィール設定のhtmlページ | 
| PlofCSS.html | プロフィール設定のhtmlページのスタイルシートの記述 | 
![]()  | 
                
| fig4. 在校生向けページのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| SystemCode.gs | ページアクセス時の処理の記述 | 
| appsscript.json | GASWEBアプリのタイムゾーンやoauthScopesの設定ファイル | 
| Home.html | アクセスして最初に表示されるページ。サイトの使用方法を記述 | 
| HomeCSS.html | ホームのページのスタイル | 
| PlofCode.html | プロフィール更新機能のdrive側での処理。データの操作などを主に行う | 
| PlofJavaScript.html | プロフィール更新機能のフロント側での処理。フォームの送信などを行う | 
| Plof.html | プロフィール更新機能のhtmlページ | 
| PlofCSS.html | プロフィール更新機能のhtmlページのスタイルシートの記述 | 
| ResistCode.html | 対話登録のdrive側での処理。データの操作などを主に行う | 
| ResistJavaScript.html | 対話登録のフロント側での処理。登録フォームの送信や予約のリストの生成などを行う | 
| Resist.html | 対話登録のhtmlページ | 
| Resist.html | 対話登録のhtmlページのスタイルシートの記述 | 
![]()  | 
                
| fig5. 管理用ページのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| appsscript.json | GASWEBアプリのタイムゾーンやoauthScopesの設定ファイル | 
| Maneg.html | アクセスして最初に表示されるページ。 | 
| ManegCode.gs | イベント登録機能のdrive側での処理。データの操作などを主に行う | 
| ManegJavaScript.html | イベント登録機能のフロント側での処理。登録フォームの送信などを行う | 
| ManegCSS.html | イベント登録ページのスタイル | 
![]()  | 
                
| fig6. APIのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| APICode.gs | GET通信に対して当日の予約のリスト、予約者のユーザー名、PINを返す | 
![]()  | 
                
| fig7. ESP32のモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| mirs24_esp32.ino | setup関数,loop関数,グローバル変数,include,マクロの定義 | 
| encoder.ino | エンコーダーの値の読み取りを行う | 
| pubsub_callback.ino | rosとの通信を行う | 
| config.h | パラメータの設定を行う | 
| ros_setup.ino | ROSのセットアップを行う | 
| server_callback.ino | servis_serverとの通信を行う | 
| vel_observer.ino | 速度の監視を行う | 
| vel_ctrl.ino | 速度のPID制御を行う。 | 
![]()  | 
                    
| fig8. jetsonのモジュール構成図 | 
| モジュール名 | 概要 | 
|---|---|
| mirs_launch.py | システムの起動 | 
| src/以下 | 各ノード当の定義 | 
| config.yaml | 各パラメータ等の設定ファイル | 
| mirs_msgs/以下 | mirsで使うメッセージ型などの定義 | 
![]()  | 
                            
| fig9. ページリダイレクト処理 | 
![]()  | 
                            
| fig10. スプレッドシートの構成 | 
| address | username | dep_d | dep_s | dep_e | dep_m | dep_c | way | club | 
|---|---|---|---|---|---|---|---|---|
| ユーザーのメールアドレス | ユーザーの名前 | D科に興味があるか | S科に興味があるか | E科に興味があるか | M科に興味があるか | C科に興味があるか | 予定している通学方法 | 興味のある部活 | 
| address | username | password | resevdate | pin | 
|---|---|---|---|---|
| ユーザーのメールアドレス | ユーザーの名前 | パスワード | 予約中の日にち | 当日の認証に使う4桁の数字 | 
| address | username | describe | department | grade | way | club | 
|---|---|---|---|---|---|---|
| ユーザーのメールアドレス | ユーザーの名前 | 自己紹介 | 所属学科 | 学年 | 通学方法 | 部活 | 
| eventname | describe | datetime | location | address | dep_d | dep_s | dep_e | dep_m | dep_c | grade_1 | grade_2 | grade_3 | grade_4 | grade_5 | class | dorm | other | resevuser | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| イベント名 | イベントの説明 | 開催日時 | 開催場所 | 登録者のメールアドレス | 各学科に関連しているか | 各学年に関連しているか | 見学内容の大まかな区分 | 予約したユーザーのメールアドレス | ||||||||||
| address | datetime | location | resevdata | 
|---|---|---|---|
| 登録ユーザーのメールアドレス | 開催日時 | 開催場所 | 予約したユーザーのメールアドレス | 
| location | x | y | z | w | 
|---|---|---|---|---|
| 場所の名前 | 各場所の座標(クオータニオン) | |||
![]()  | 
                        
| fig11. ログインページアクセス時の処理のフローチャート | 
![]()  | 
                        
| fig12. ログインページのユーザー認証の処理のフローチャート | 
![]()  | 
                        
| fig13. 認証成功時の処理のフローチャート | 
![]()  | 
                        
| fig14. 走行状態の監視のフローチャート | 
![]()  | 
                        
| fig15. 画面スクロール禁止のフローチャート | 
![]()  | 
                        
| fig16. 案内再開のフローチャート | 
![]()  | 
                        
| fig17. 画面スクロール禁止のフローチャート | 
![]()  | 
                        
| fig18. 画面ピンチイン/アウト禁止のフローチャート | 
![]()  | 
                        
| fig19. ダブルタップ禁止のフローチャート | 
![]()  | 
                        
| fig20. 高さ調節のフローチャート | 
![]()  | 
                        
| fig21. 使用方法のフローチャート | 
![]()  | 
                        
| fig22. 対話のフローチャート | 
![]()  | 
                        
| fig23. 読み上げ停止のフローチャート | 
![]()  | 
                    
| fig24. ログインページアクセス時の処理のフローチャート | 
![]()  | 
                    
| fig25. ログインページのユーザー登録の処理のフローチャート | 
![]()  | 
                    
| fig26. 管理ページのリセットの処理のフローチャート | 
![]()  | 
                
| fig27. イベント予約用サイトアクセス時の処理のフローチャート | 
![]()  | 
                
| fig28. イベント予約用ページの検索のフローチャート | 
![]()  | 
                
| fig29. イベント予約用ページの予約のフローチャート | 
![]()  | 
                
| fig30. 対話予約用ページのアクセス処理のフローチャート | 
![]()  | 
                
| fig31. 対話予約用ページの検索のフローチャート | 
![]()  | 
                
| fig32. 対話予約用ページの予約のフローチャート | 
![]()  | 
                
| fig33. 予約確認ページのアクセス処理のフローチャート | 
![]()  | 
                
| fig34. 予約確認ページの予約削除のフローチャート | 
![]()  | 
                
| fig35. プロフィールページのアクセス処理のフローチャート | 
![]()  | 
                
| fig36. プロフィールページの更新のフローチャート | 
![]()  | 
                    
| fig37. 対話登録ページアクセス時の処理のフローチャート | 
![]()  | 
                    
| fig38. 対話登録ページ登録の処理のフローチャート | 
![]()  | 
                    
| fig39. 対話登録ページの変更の処理のフローチャート | 
![]()  | 
                    
| fig40. 在校生用登録ページのリセット処理のフローチャート | 
![]()  | 
                    
| fig41. 在校生用ページの削除の処理のフローチャート | 
![]()  | 
                    
| fig42. 在校生用プロフィールページのアクセス時の処理のフローチャート | 
![]()  | 
                    
| fig43. 在校生用プロフィールページの更新の処理のフローチャート | 
![]()  | 
                    
| fig44. 管理ページアクセス時の処理のフローチャート | 
![]()  | 
                    
| fig45. 管理ページ変更の処理のフローチャート | 
![]()  | 
                    
| fig46. 管理ページのリセットの処理のフローチャート | 
![]()  | 
                    
| fig47. 管理ページの登録処理のフローチャート | 
![]()  | 
                    
| fig48. GET通信時の処理のフローチャート | 
![]()  | 
                    
| fig49. jetson側のフローチャート | 
![]()  | 
                    
| fig50. jetson側の処理のフローチャート | 
![]()  | 
                    
| fig51. PC側のフローチャート |