名称 | MIRS2402 ソフトウェア詳細設計書 |
---|---|
番号 | MIRS2402-SOFT-0002 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
B01 | 2025.01.27 | 松島 明寛 | 香川 | 初版 |
本ドキュメントはMIRS2402に関するソフトウェア詳細設計についてまとめたものである。
実装する機能とその概要を以下table1に示す。
table1.機能と概要
機能 | 機能概要 | 記述言語 |
---|---|---|
自律走行機能 | ros2とslamによって自己位置推定・経路選択・速度制御を実行 | python, C言語, xml, markdown |
カメラ撮影 | USBカメラによる映像取得 カメラの画角調整 |
python, java script, arduino言語, html, css |
通知機能 | webアプリ, LINE ・人検知時の通知 ・機体転倒時の通知 |
python, java script |
音声の送受信 | 各コンピュータに接続したマイク音声の送受信 pc→raspiのみ 文章を音声データとして送信 |
python, java script |
webアプリに実装する機能とその概要を以下のtable2に示す。
table2.webアプリ機能概要
機能 | 機能概要 | 詳細 |
---|---|---|
カメラ | 映像表示 | リアルタイムのカメラ映像の表示 |
録画 | 撮影したデータを保存 | |
カメラ画角調整 | カメラの画角を設定する | |
人検知時の通知 | 人検知時に画面上のアクセントを変更 | |
pcスピーカ設定 | on/off | pcスピーカのon/offを設定 |
音量設定 | pcスピーカの音量を設定 | |
raspiスピーカ設定 | on/off | raspiスピーカのon/offを設定 |
音量設定 | raspiスピーカの音量を設定 | |
マイク/文章再生機能切り替え | raspiスピーカで再生する音声をpcのマイク音声か文章再生かの切り替え | |
文章設定 | 文章再生機能選択時、再生する文章を設定する |
以下にpcで実装するモジュールの構成図を示す。
fig1.pcのモジュール構成図
以下にraspiで実装するモジュールの構成図を示す。
fig2.raspiのモジュール構成図
以下にjetson nanoで実装するモジュールの構成図を示す。ただし、インストールするパッケージやビルド実行時に作成されるディレクトリは、具体的なファイル名を省略する。
fig3.jetson nanoのモジュール構成図
以下にesp32で実装するモジュールの構成図を示す。
fig4.esp32のモジュール構成図
以下にarduinoで実装するモジュールの構成図を示す。
fig5.arduinoのモジュール構成図
table3.pcで実装するモジュールの動作概要
フォルダ名 | ファイル名 | 詳細 | ||
---|---|---|---|---|
camera/ | templates/ | home.html | カメラ処理のフロントエンドファイル | |
static/ | css/ | style.css | webアプリのデザイン設定 | |
~.png | webアプリのデザイン用画像 | |||
js/ | script.js | 画像処理、表示用のフロントエンド | ||
streamer/ | main.py | 画像処理用コード | ||
recordings/ | ~.mp4 | 録画映像保存用フォルダ | ||
--- | --- | run_apps.py | カメラ映像の実行ファイル | |
audio/ | templates/ | audio.html | 音声処理のフロントエンドコード | |
static/ | css/ | style.css | webアプリのデザイン設定 | |
js/ | script.js | 音量設定や文章再生のフロントエンド処理 | ||
audio/ | audio_proseccor.py | PC側デバイスの設定ファイル | ||
audio_server.py | ソケット通信のサーバ起動用ファイル | |||
--- | --- | pc_main.py | 音声処理の実行ファイル | |
run_control/ | templates/ | index.html | 走行処理のwebアプリ用ファイル | |
static/ | ~.pgm | webアプリのデザイン用画像 | ||
--- | --- | distination.py | 目的地座標設定プログラム | |
--- | --- | navigation_web_server.py | 走行処理のwebアプリ実行用ファイル |
table4.raspberry piに実装するモジュールの動作概要
フォルダ名 | モジュール名 | 詳細 |
---|---|---|
--- | raspi_main.py | raspiのメインファイル |
audio | audio_client.py | raspiの音声処理の通信用ファイル |
audio_handler.py | raspiのデバイス設定ファイル | |
camera | camera.py | カメラによる撮影とPCへの送信ファイル |
serial_anglle.py | カメラの画角の数値データをarduinoに送信 |
table5.Jetson nanoに実装するモジュールの動作概要
フォルダ名 | ファイル名 | 詳細 | |||
---|---|---|---|---|---|
ros2_ws/ | src/ | robot_control/ | config/ | navigation_params.paml | ナビゲーションのパラメータ設定ファイル |
launch/ | navigation.lanuch.py | ナビゲーションの実行ファイル | |||
robot_control/ | __init__.py | フォルダ実行用の空ファイル | |||
path_planner.py | 走行経路計算ファイル | ||||
robot_navigation_control.py | ナビゲーションのメインファイル | ||||
robot_utilities.py | 機体の設定ファイル | ||||
test/ | test_navigation.py | ナビゲーション実行ファイル | |||
navigation_client.py | ソケット通信による目的地受信ファイル | ||||
robot_interface/ | msg/ | EmergencyStop.msg | 緊急停止処理用のコード | ||
LidarProseccorData.msg | LiDARデータの処理用ファイル | ||||
LiDARQuality.msg | LiDARデータの処理ファイル | ||||
NavigationGoal.msg | 走行の目的地到達判定用ファイル | ||||
RobotOdometry.msg | odometryデータの処理ファイル | ||||
RobotStatus.msg | 機体情報の設定ファイル | ||||
uros/ | micro_ros_agentのパッケージ | ||||
micro_ros_setup/ | micro_rosの設定用パッケージ |
table6.esp32に実装するモジュールの動作概要
モジュール名 | 詳細 |
---|---|
micro_ros_esp32_motor_control.ino | esp32のメインプログラム |
motor_controller.ino | 走行用モータ制御 |
encoder.ino | ロータリーエンコーダの読み取り |
define.h | 各パラメータ設定 |
types.h | 各構造や変数の設定ファイル |
quaternion.h | クォータニオンの処理 |
table7.arduinoに実装するモジュールの動作概要
モジュール名 | 詳細 |
---|---|
angle_serial.ino | サーボモータの処理用ファイル |
走行時のフローチャートを以下に示す。
fig6.走行時のフローチャート
走行は基本的に目的地を設定した時のみに実行される。自動巡回時は複数の目的地をリストとして受け取るため、このフローチャートを連続で処理することとなる。また、機体の転倒判断はesp32に接続した加速度センサで実行し、物体の接近判断はLidarと超音波センサで実行する。機体の座標はオドメトリデータとtfデータから判断する。
超音波センサをarduinoに接続する理由を次に示す。
・raspiはカメラやマイクの処理に集中するため。
・esp32ではピン数が足りないため。
・jetson nanoでは接続が不可能なため
カメラや音声の通信は相互のデータのやり取りのみであり、これらは同時に処理を実行するため、フローチャートは示さない。
購入を予定している物品を以下に示す。
table8.購入物品
物品名 | 型番 | 単価(税込) | 数量 | 価格(税込) | URL | 備考 |
---|---|---|---|---|---|---|
jetson nano | NVIDIA-JETSON-NANO-B01 | 30,800 | 1 | 30,800 | URL | 鄭研究室より借用 GPUによりros2とslamの処理を高速化する |
esp32 | ESP32-DevKitC | 1,600 | 1 | 1,600 | URL | mirs24全体で購入 micro_rosによりオドメトリデータを処理 |
RPLidar | RB-Rpk-13 | 116,142 | 1 | 116,142 | URL | 自己位置推定に使用 |
MIRS2402の別パートの詳細設計書へのリンクを以下に示す。
MIRS2402 メカニクス詳細設計書