名称 MIRS2203 ソフトウェア詳細設計書
番号 MIRS2203-SOFT-0001

版数 最終更新日 作成 承認 改訂記事
A01 2022.11.01 清水太喜 香川 初版
A02 2022.11.11 清水太喜 香川

目次


1.はじめに

本ドキュメントはMIRS2203のソフトウェアにおいて詳細設計書を示したものである。

2.状態遷移

状態の定義をtable.1に示す.これ以降各状態は略称で呼ぶことにする.
table.1 状態の定義
状態 概要 略称
待機モード 初期位置でユーザPCからの接続を待機する状態 WAIT
遠隔操作モード ユーザPCからMIRS本体をキーボードを用いて操作し、コミュニケーションを取ることができる状態 MOVE
自動帰還モード ユーザPCとの接続が切断された場合ライントレースを使用して初期位置に戻る状態 HOME

初期位置について補足説明する.プレイ可能エリアのある場所を初期位置として設定する.オレンジ色の領域が初期位置となる. MIRS発表会時の初期位置をfig.1に示す.

fig.1 MIRS発表会時の初期位置

次に状態遷移図をfig.2に示す.

fig.2 状態遷移図

3.関数・変数の定義

各モジュールについてtable.2に示す.キー入力と送信する数字の対応をtable.3に示す
table.2 モジュールの詳細
モジュール名 概要 関数名 引数 戻り値 備考
pilot.c MIRS全体の制御を状態遷移図に沿って行う なし なし 0 キーボード入力受付はソケット通信のrecv()を用いたポーリングを行う
inpctrl.c ユーザーPC(OSはLinuxを想定)からのキーボード入力をリアルタイムでsocket_user.cに数字に変換して受け渡す int inpctrl() なし 0~17の整数 0:エラーのときに用いる
17:接続を切断のときに用いる
socket_user.c ユーザーPC(OSはLinuxを想定)とRaspberry Pi間でソケット通信を行う int socket_user() int KEY 0 別々のプロセスでデータの通信ができるため採用した.またLinuxOSを採用した理由はプロセス間通信がLinux同士だと容易であるからである.
socket_mirs.c pilot.cを簡単にするためソケット通信のaccept()までを実行する int socket_mirs() なし 0 なし
distr.c pilot.cでポーリングしたキー入力を文字データで必要な関数に振り分ける int distr() なし 0 なし
home.c HOMEを実行する int on_line()
int linetrace()
なし 0,1 int on_line():MIRSをラインに乗せるための関数
int linetrace():MIRSをラントレースさせる関数
table.3 キー入力と送信する数字の対応
キー 数字 用途
1~4 1~4 アバターの表情切り替え
awsd 5~8 MIRS本体の移動.
tfgh 9~12 簡易ロボットアームの操作
ijkl 13~16 カメラ操作

4.動作フローの実装方法

pilotモジュール及びhomeモジュールの動作フローをfig.3,4に示す.inpctrl.cとsocket_*.cとinput関数のつながりをfig.5に示す.

fig.3 pilotモジュールの動作フロー

fig.4 homeモジュールの動作フロー

fig.5 データ通信の動作フロー



MIRS DATABASE