名称 MIRS2402 ソフトウェア詳細設計書
番号 MIRS2402-SOFT-0002

版数 最終更新日 作成 承認 改訂記事
B01 2025.01.27 松島 明寛 香川 初版

目次

  1. ドキュメント概要
  2. 機能概要
  3. 各デバイスのモジュール構成
  4. フローチャート
  5. 購入物品
  6. 別パートへのリンク

1.ドキュメント概要

本ドキュメントはMIRS2402に関するソフトウェア詳細設計についてまとめたものである。

2.機能概要

実装する機能とその概要を以下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のマイク音声か文章再生かの切り替え
文章設定 文章再生機能選択時、再生する文章を設定する

3.モジュール構成

以下に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 サーボモータの処理用ファイル

4.フローチャート

走行時のフローチャートを以下に示す。

fig6.走行時のフローチャート


走行は基本的に目的地を設定した時のみに実行される。自動巡回時は複数の目的地をリストとして受け取るため、このフローチャートを連続で処理することとなる。また、機体の転倒判断はesp32に接続した加速度センサで実行し、物体の接近判断はLidarと超音波センサで実行する。機体の座標はオドメトリデータとtfデータから判断する。

超音波センサをarduinoに接続する理由を次に示す。

・raspiはカメラやマイクの処理に集中するため。

・esp32ではピン数が足りないため。

・jetson nanoでは接続が不可能なため

カメラや音声の通信は相互のデータのやり取りのみであり、これらは同時に処理を実行するため、フローチャートは示さない。

5.購入物品

購入を予定している物品を以下に示す。

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 自己位置推定に使用

6.別パートへのリンク

MIRS2402の別パートの詳細設計書へのリンクを以下に示す。

MIRS2402 メカニクス詳細設計書
MIRS2402 エレクトロニクス詳細設計書

MIRS2402ドキュメント管理台帳へ