名称 | MIRS2303 ソフトウェア開発報告書 |
---|---|
番号 | MIRS2303-SOFT-0003 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2024.1.29 | 河合 柊吾, 長瀬 鼓太郎 | 香川 | 初版 |
本ドキュメントはMIRS2303 PuNITに関するソフトウェア開発報告書である。
<概要>
ロボット中央のフォトリフレクタ2つから白線と黒線の値を読み取った。その値からPID制御によりライントレースを行った。値が白線の閾値を超えた場合にUターンをさせた。
<評価>
黒線の両サイドの値を取得する設計のため、直進および方向転換の際の追従精度は高かった。ただ、PIDのゲイン調整が上手くできず左右の振動が発生していた。
<改良・改善案>
振動については、Dゲイン大きくすることで振動の抑制が可能と考えられる。
ライントレース以外の方法として、LiDARを用いたSLAMとNavigationによる自立走行が考えられる。
<対象プログラム>
Arduino: run_ctrl.ino (vel_ctrl.ino, motor.ino)
<概要>
昇降機構によるカメラの上下動とサーボモータによる上下回転により画角調整を行った。画角調整後、カメラで撮影した。
<評価>
昇降機構とサーボモータは共に動作した。しかし昇降用モータのエンコーダが取得できず高さ計算ができなかった。画角調整のロジックに関しては、事前に設定した画角のみだった。
<改良・改善案>
自動画角調整の方法として、顔検出機能から顔の位置が中央に来る画角に合わせるものがある。
また以下の論文を用い、写真の美的評価と撮影すべき構図を検出し画角調整を行う方法もある。
深層学習による美的評価エンジンの開発と構図推薦カメラへの実装-情報処理学会
<対象プログラム>
Arduino: camera_ctrl.ino, servo_ctrl.ino (vel_ctrl.ino, motor.ino)
Jetson: get_img.py
<概要>
OpenCV4.5.4から実装された顔検出および顔認証のAPIを用いた。
<評価>
顔検出についてはfps1.5程度で15人同時に検出ができた。
教室の一番後ろに立っている人やカメラ目線でない人でも検出ができた。
顔認証については国会議員など写真を用いた場合おおむね認証できていたが、学生を用いた場合は正確な認証は行えなかった。
<改良・改善案>
公開されているAPIは学習時に国会議員の画像を用いていた可能性があり精度が高かったと考えられる。既存の学習モデルに対して、学生の写真を用いファインチューニングを行うことで精度改善が期待できる。
<対象プログラム>
Jetson: faceCV_recognition.py
<概要>
GoogleのAPIを用い、撮影した写真をGoogleドライブにアップロードし、撮影場所や時間や授業などのデータをスプレッドシートに記録した。
<評価>
写真のアップロードとデータの記録は基本的に行うことができた。ただwifiがつながりにくい所ではアップロードできないことがあった。ロボットの動作上、写真のアップロードは授業終了後まとめて行うため、その際にwifiの接続環境の良い所に移動するため問題にはならない。
<改良・改善案>
写真のより詳細なデータを取得し記録すればWebページでの公開に用いることができる。
<対象プログラム>
Jetson: upload.py, google_drive.py
<概要>
撮影された画像を表示機能と学年及びクラスによるソート機能を実装した。
※現在は画像の公開を行っていません。
WebサイトURL
<評価>
画像の表示およびソート機能は正常に動作していた。ただ画像の表示をURLの指定では表示できない不具合が発生し、一度エンコードして表示しているため表示までに時間がかかってしまった。
<改良・改善案>
GASやGoogleドライブの画像表示の仕様が複雑であったため、学校サーバーに画像を保存などができれば解決可能と考えられる。
<対象プログラム>
GAS: index.html, tenso.gs
プログラムのソースコードを以下に示す。
MIRS2303 PuNIT ソースコード (ダウンロードリンク)
MIRS2303の別パートの詳細設計書へのリンクを以下に示す。
MIRS2303 メカニクス開発報告書