名称 | MIRS1701 ソフトウェア詳細設計書 |
---|---|
番号 | MIRS1701-SOFT-0001 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A1 | 2018.02.09 | 坂下 尚史 | 牛丸 真司 | 初版 |
本ドキュメントは、MIRS1701のソフトウェア詳細設計書である。
モジュールの全体構成はソフトウェア基本設計で示したとおりである。
以下にそのリンクを示す。
Raspberry Pi用プログラムの主要モジュールの詳細を各モジュールごとに示す。
今回、Raspberry Pi用プログラムの使用言語をはC言語からPythonに変更するため、すべて新規に作成する。
以下はRaspberry Piモジュール用プログラムの詳細の目次である。
各種スレッドの生成を行うモジュールである。
各種スレッドについては後述する。
センサーから値を取得し、走行制御を行うモジュールである。
マルチスレッドで動作する。
Arduinoとの通信を制御するモジュールである。
マルチスレッドで動作する。
超音波センサから値をポーリングで取得するモジュールである。
マルチスレッドで動作する。
走行を行うモジュールである。
状態により、壁追従走行、曲がり角走行、障害物回避走行、下段段差対応走行等を行う。
Arduinoとの通信を行うモジュールである。
Arduinoに接続されている機器の測定値を取得する。
走行命令を行う。
i2cを用いた超音波センサの信号処理を行うモジュールである。
超音波センサをオープンし、超音波センサから測定値[cm]を取得する。
gpioの信号処理を行うモジュールである。
GPIOをオープンし、値を取得する。
ArduinoとのUSB通信の制御を行うモジュールである。
シリアル通信を開始し、データの送受信を行う。
スピーカー、骨伝導イヤホンを鳴らすモジュールである。
話したい文字列、またはあらかじめ用意されたwavファイルを元に音を鳴らす。
バッテリーを管理を行うモジュールである。
2本のバッテリーの電圧を監視し、高いほうのバッテリーを使用する。
Arduinoi用プログラムの主要モジュールの詳細を各モジュールごとに示す。
関数、変数名はすべてローワーキャメルケースで記述する。
なお、ここに記述されいていないモジュールについては、MG4標準プログラムに準拠する。
以下はArduino用プログラムのモジュール詳細の目次である。
Raspberry Piと通信を行うモジュールである。
センサー値をRaspberry Piに送ったり、Raspberry Piから指令を受け取ったりする。
走行を制御するモジュールである。
MG4標準プログラムから左右のタイヤの速度を別々に制御できるような機能を追加する。
モーターの速度を制御するモジュールである。
MG4標準プログラムから左右のタイヤの速度を別々に制御できるような機能を追加する。
IOピンの管理、信号処理を行うモジュールである。
新たに増やしたデバイスの分の関数を増やす
Raspberry Piとの通信の信号を処理するモジュールである。
受信したデータを変数に入れるように変更する。
インターフェース仕様表をRaspberry Piはに、
Arduinoはに示す。
Raspberry Piのrequestモジュールにおいて、グローバル変数としてRequestクラスのインスタンスのreqを追加する。
Raspberry Piのussモジュールにおいて、グローバル変数Ussクラスのインスタンスのussを追加する。
他のモジュールは、このグローバル変数を操作する。
Arduinoのraspiモジュールにおいて、グローバル変数としてint register[128]を追加する。
基本走行を示すフローチャートをに示す。
スレッド化するモジュール名をRaspberry Pi用プログラム、Arduino用プログラムに分けて以下に箇条書きで示す。
Raspberry Pi
Arduino
Raspberry Pi用プログラムのコーディングルールはPEP 8に準拠する。
Arduino用プログラムは、関数、変数名はすべてローワーキャメルケースで記述する。
またプログラムのバージョン管理にはGitHubを用いる。