名称 | MIRS2402 ソフトウェア開発完了報告書 |
---|---|
番号 | MIRS2402-REPT-0003 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2025.01.28 | 松島 明寛 | 香川 | 初版 |
本ドキュメントはMIRS2402に関するソフトウェア完了報告書についてまとめたものである。
実装した機能とその評価を次に示す。
<概要>
ROS2を用いた走行制御を実装し、エンコーダから取得した読み取り値をもとにオドメトリを計算した。また、LiDARデータとオドメトリデータを基にcmd_velを設定し、ESP32を利用してモータ制御を行った。ソケット通信を活用してWebアプリから目的地座標を送信する仕組みを構築し、座標はPythonコード内に事前設定した。さらに、機体の現在地をマップ上に表示する機能を実現した。
fig1.webアプリのマップ表示
fig2.webアプリの目的地設定ページ
短距離の走行の様子
<評価>
この機能は基本的に安定した走行を可能にしたものの、初期位置に大きく依存するため、テストごとに機体の位置がずれる問題が発生し、長距離移動には適さなかった。また、超音波センサを使用してLiDARの死角を補助することができず、LiDARデータのフィルタリングが未実施だったため、前方のデータしか収集できない状態であった。
<改善案>
今後の改善としては、LiDARデータをフィルタリングして周囲360度のデータを確実に取得し、一座標を補正する仕組みを導入する必要がある。また、超音波センサを活用してLiDARの死角を補助することで安全性を向上させるべきであり、さらに加速度センサを使用して坂道でも正確な座標計算を可能にすることが望ましい。
<概要>
USBカメラを2台接続し、OpenCVを用いて前後の映像を撮影・録画する機能を実装した。Arduinoに接続されたサーボモータを使用して、カメラの上下左右の画角を調整可能にし、その調整はキーボードの矢印キーで操作できるようにした。また、映像内に人が映った場合にはWebアプリ上で人が検知されたことを表示する仕組みを構築した。人検知にはオープンソースモデルである“deploy.prototxt”および“mobilenet_iter_73000.caffemodel”を使用した。
fig3.webアプリのカメラ表示ページ
<評価>
この機能では、Webアプリを処理するパソコンでカメラ映像を処理した結果、映像の画質やフレームレートが違和感なく保たれるという成果を得た。一方で、カメラ起動時にサーボモータが初期角度に合わせて激しく動作する問題があり、サーボモータの許容角やカメラの画角が小さかったため、機体の真横片側80度程度の撮影ができない制約があった。また、人検知の精度が低く、映像内に人が確認できても通知されない場合があり、通知も音声ではなくWebアプリ上での表示に限定されていた。
<改善案>
今後の改善として、サーボモータの初期角度調整時の出力を下げ、突然の動作を緩和する必要がある。また、人検知時に音声で通知する機能を追加することで、Webアプリの常時確認を不要にし、さらに人検知の精度を向上させて通知の実用性を高めるべきである。
<概要>
PyAudioライブラリを用いて、マイク音声の取得やスピーカでの再生を実現した。PCのマイク音声やWebアプリ上の文章を機体のスピーカで再生する機能を構築し、USBカメラのマイク音声をPCのスピーカで再生する仕組みも実装した。また、Webアプリ上で音量を調整できる機能を搭載した。
fig4.webアプリの音声処理ページ
<評価>
この機能においては、使用したスピーカではノイズが大きく、人の話し声が聞き取りづらいという問題があったが、文章再生についてはある程度ノイズを除去し、聞き取り可能な音声を実現した。機体側からPCへの音声は、4m程度離れていても音が聞き取れた。
<改善案>
今後の改善として、スピーカのノイズ除去機能やマイクの周辺音除去機能を導入し、マイク音声の聞き取りやすさを向上させるべきである。
今回のソフトウェア開発では、ROS2を用いた走行機能、カメラ撮影機能、音声処理機能の主要な機能をすべて実装することができた。また、Raspberry PiとJetson
Nanoで役割を分割し、走行系とデバイス操作系の効率的な構成を実現した点は評価できる。しかし、開発においては反省点も多く存在した。
まず、ROS2の実装に時間を要したため、超音波センサや加速度センサを利用した走行支援機能の実装が行えなかった点が挙げられる。また、すべてのコードを完全に統合することができず、最低限の機能以上の追加が実現できなかった。さらに、実装実験時の走行では十分な成果を得ることができなかった。
これらを踏まえ、今後の開発ではスケジュール管理をより徹底し、主要な機能の安定化に加えて拡張機能の実装も目指すべきである。また、各モジュールの統合を進めることでシステム全体の完成度を高め、実験時の成果を向上させる必要がある。
プログラムのソースコードを以下に示す。
MIRS2402 ソースコード(ダウンロードリンク)
MIRS2402の別パートの詳細設計書へのリンクを以下に示す。
MIRS2402 メカニクス開発報告書