名称 | MIRS1801 完了報告書(ソフトウェア) |
---|---|
番号 | MIRS1801-SOFT-0002 |
版数 | 最終更新日 | 作成者 | 承認者 | 改訂記事 |
---|---|---|---|---|
A01 | 2019.02.04 | 杉山康恭 | 第1版 |
本ドキュメントは,MIRS1801の開発完了報告に関する記述である.
発表会で用いたプログラムや画像ファイル,テキストファイル等へのリンクを以下に示す。
Python ソースコード
C言語 ソースコード
Arduino ソースコード
画像・テキスト等
上記をまとめた全てのファイル
はじめに、当初の計画では、RaspberryPiで取得した超音波センサの値をシリアル通信によりArduinoに送信し、Arduino内で走行停止・走行持続の判断を行こととしていた。これ実装すると、明らかに安定した走行に支障をきたす挙動が見られたため、C言語によるスレッド実行で走行停止・走行持続を行わざるを得なくなったため、Arduino主体の走行制御からRaspberyPi主体の走行制御に変更した。
以下は、上記の大幅なシステム変更を行って以降の記述である。
● pythonを用いた図書選択プログラムは早い段階で形にはなったが、画像を背面に貼り付ける作業や画面遷移のプログラムは発表直前までかかり、多くの時間を費やしてしまった。最終的には、図書選択から始まり、案内完了までを画面を通して行うことが出来た為、非常に満足のいく結果となった。
● Raspberry piの走行制御に関しては、正対補正を超音波センサによって実現しようとしていたが,2つのセンサ間の距離が近かったため正常に動作しなかった.また,自己位置推定を磁気コンパスとロータリーエンコーダを用いて実現しようとしていたが,磁気コンパスの予期しない故障により使用不可能になったため,ロータリーエンコーダのみで自己位置推定を行った.
最終的には,超音波センサは前方の障害物との距離計測し,障害物とぶつからないように走行するようにした.また,タッチセンサを用いて万が一障害物にぶつかったときに停止するようにした.
● Arduinoの走行制御に関しては,標準プログラムに存在しなかった円弧走行を実現するソースコードを実装した.これは,円弧の長さが半径と中心角の積により表されるという簡単な知識のみから左右のタイヤ速度を算出するものだが,これにより滑らかな方向転換が可能となったため,有効であったといえる.