MIRS1701 管理台帳へ戻る
名称 MIRS1701 ソフトウェア詳細設計書
番号 MIRS1701-SOFT-0001
版数 最終更新日 作成 承認 改訂記事
A1 2018.02.09 坂下 尚史 牛丸 真司 初版

目次

はじめに

本ドキュメントは、MIRS1701のソフトウェア詳細設計書である。

モジュール仕様

全体構成

モジュールの全体構成はソフトウェア基本設計で示したとおりである。
以下にそのリンクを示す。

モジュール全体構成

Raspberry Piモジュール詳細

Raspberry Pi用プログラムの主要モジュールの詳細を各モジュールごとに示す。
今回、Raspberry Pi用プログラムの使用言語をはC言語からPythonに変更するため、すべて新規に作成する。
以下はRaspberry Piモジュール用プログラムの詳細の目次である。

pilot

各種スレッドの生成を行うモジュールである。
各種スレッドについては後述する。

taskMain

センサーから値を取得し、走行制御を行うモジュールである。
マルチスレッドで動作する。

taskComm

Arduinoとの通信を制御するモジュールである。
マルチスレッドで動作する。

taskPoll

超音波センサから値をポーリングで取得するモジュールである。
マルチスレッドで動作する。

run

走行を行うモジュールである。
状態により、壁追従走行、曲がり角走行、障害物回避走行、下段段差対応走行等を行う。

request

Arduinoとの通信を行うモジュールである。
Arduinoに接続されている機器の測定値を取得する。
走行命令を行う。

uss

i2cを用いた超音波センサの信号処理を行うモジュールである。
超音波センサをオープンし、超音波センサから測定値[cm]を取得する。

gpio

gpioの信号処理を行うモジュールである。
GPIOをオープンし、値を取得する。

arduino

ArduinoとのUSB通信の制御を行うモジュールである。
シリアル通信を開始し、データの送受信を行う。

sound

スピーカー、骨伝導イヤホンを鳴らすモジュールである。
話したい文字列、またはあらかじめ用意されたwavファイルを元に音を鳴らす。

battery

バッテリーを管理を行うモジュールである。
2本のバッテリーの電圧を監視し、高いほうのバッテリーを使用する。

Arduinoモジュール詳細

Arduinoi用プログラムの主要モジュールの詳細を各モジュールごとに示す。
関数、変数名はすべてローワーキャメルケースで記述する。
なお、ここに記述されいていないモジュールについては、MG4標準プログラムに準拠する。
以下はArduino用プログラムのモジュール詳細の目次である。

comm

Raspberry Piと通信を行うモジュールである。
センサー値をRaspberry Piに送ったり、Raspberry Piから指令を受け取ったりする。

run_ctrl

走行を制御するモジュールである。
MG4標準プログラムから左右のタイヤの速度を別々に制御できるような機能を追加する。

vel_ctrl

モーターの速度を制御するモジュールである。
MG4標準プログラムから左右のタイヤの速度を別々に制御できるような機能を追加する。

io

IOピンの管理、信号処理を行うモジュールである。
新たに増やしたデバイスの分の関数を増やす

raspi

Raspberry Piとの通信の信号を処理するモジュールである。
受信したデータを変数に入れるように変更する。

インターフェース仕様

インターフェース仕様表をRaspberry Piはに、
Arduinoはに示す。

Raspberry Piインターフェース仕様表

Raspberry Piのrequestモジュールにおいて、グローバル変数としてRequestクラスのインスタンスのreqを追加する。
Raspberry Piのussモジュールにおいて、グローバル変数Ussクラスのインスタンスのussを追加する。
他のモジュールは、このグローバル変数を操作する。

Arduinoインターフェース仕様表

Arduinoのraspiモジュールにおいて、グローバル変数としてint register[128]を追加する。

主要動作ブロックのフロー

基本走行を示すフローチャートをに示す。

フローチャート
フローチャート

スレッド構成

スレッド化するモジュール名をRaspberry Pi用プログラム、Arduino用プログラムに分けて以下に箇条書きで示す。

Raspberry Pi

Arduino

コーディングルール

Raspberry Pi用プログラムのコーディングルールはPEP 8に準拠する。
Arduino用プログラムは、関数、変数名はすべてローワーキャメルケースで記述する。

PEP 8 -- Style Guide for Python Code

またプログラムのバージョン管理にはGitHubを用いる。

Raspberry Pi用プログラム
Arduino用プログラム