名称 MIRS2204 ソフトウェア開発報告書
番号 MIRS2204-SOFT-0002

版数 最終更新日 作成 承認 改訂記事
A01 2023.2.10 志村拓真,河合陽杜 香川真人 第2版

目次


1.はじめに

本ドキュメントはMIRS2204に関するソフトウェア開発において、開発内容の報告をまとめたものである。

2.ソースコード


ファイル構造
/MIRS2204
            |-/Arduino		Arduinoのソースコードディレクトリ
            |-/build
            |-/img
            |-/include		ヘッダファイルディレクトリ
            |-/src			C言語のソースコードディレクトリ
            |kodutumi-project.json	GoogleDriveのキー
            |Makefile		
            |line.py			Python用のプログラム
            |*.wav			機体から再生するための音声
            |delivery.txt		PythonからCに値を送信するためのファイル
        
以下にMIRS2204のソースコードを掲載する。
/MIRS2204.zip :ソースコード
            
            
KOZUTUMIプログラム

3.作成プログラムについて


3.1 メインプログラム(pilot.c)

switch case文を用いて状態を管理し、RUN,STYの2つの状態遷移で実行した。詳細設計ではRTNがあったがリソース不足だっただめ割愛した。


3.2 走行系プログラム(run.c sty.c)

run_setup()ではrun()関数内で利用していた変数の初期化を行う。これは他状態からRUN状態に移行した際に利用される。calc_angrat()では後述するOBL走行のために角度と速度に合わせてモーターの出力比を計算する関数である。run()では測距センサの値から最短距離にいる物体の極座標位置を推測し、位置に合わせてrequest系関数で走行を制御した。sty()ではモータの動きを止める。


3.3 Arduino-RaspberryPi間通信プログラム(request.c slave.ino)

request.c及びslave.inoではrun_modeOBLの追加、長距離センサの値呼び出し、短距離センサの値呼び出しの変更を加えた。


3.4 Arduinoプログラム(slave.ino scan.ino etc)

Arduinoでのメインプログラムにあたるslave.inoでは常に測距を行い距離変数を更新し、呼び出し関数が働いたときに現在の距離変数を返している。また走行状態にOBLを加えた。これは左右のモーターの出力比を変更し斜めに移動する状態である。また発表会当日に左タイヤのエンコーダが機能しなくなったため応急措置としてすべての走行制御を速度制御のみに落とし込み、速度の計算はもう片方のエンコーダの値を利用して対応した。結果として直進制御は完壁には行えなかったが、細かく走行状態を切り替えるプログラムのため進路から外れる心配はなく、多少の蛇行ならやむを得ないとして妥協した。


3.5 Pythonプログラム(line.py)

Line公式アカウントより受信したデータをGoogle Apps Scriptを利用し、googleスプレッドシートに送信、googleスプレッドシートの値をgspredで読み取ってその値を取得する。その後状態遷移にあわせplaysoundでMIRS本体から音声を再生しながらdelivery.txtに状態を書き込み、C言語プログラムに状態を伝達する。

以下にGoogle Apps Scriptで使用したプログラムをtxtファイルに記載したものを掲載する。


MIRS2204_LINE.zip :ソースコード
            
KOZUTUMI LINEプログラム


4.総括
    
ガントチャート、詳細設計とのズレはあったが、基本機能である追従プログラム、LINEからの呼び出し等は無事完成したので良かった。次回似たような開発の機会があれば作成するモジュール毎に細かく期日を決めるなどタスクを細分化して、効率的に進めていきたい。  






MIRS2204 メカニクス開発報告書
MIRS2204 エレクトロニクス開発報告書
MIRS2204 開発報告書

MIRS DATABASE

MIRS 2204 ドキュメント管理台帳