3. モジュール構成
3-1. PC
PCのモジュールの構成図を以下に示す。
 |
|
fig1. PCのモジュール構成図 |
fig2にmirs_navigationのモジュール構成図を示す。
 |
|
fig2. mirs_navigationのモジュール構成図 |
table2. mirs_navigationのモジュール動作概要
モジュール名 |
概要 |
patrol_tree.xml |
Navigation2のビヘイビアツリー |
mirs_navigation.launch.py |
Navigation2を起動する |
mirs2404.launch.py |
navigation_control_node,web_config_node,raspi_receiver_nodeを起動する |
mapNIT.pgm mapNIT.yaml |
校内のマップ |
nav2_params.yaml |
Navigation2のパラメータファイル |
fig3にnavigation_controlのモジュール構成図を示す。
 |
|
fig3. navigation_controlのモジュール構成図 |
table3. navigation_controlのモジュール動作概要
モジュール名 |
概要 |
schedule.yaml |
ロボットが移動する時間と区間を設定 |
sections.yaml |
ロボットが移動する場所のマップ上の座標を設定 |
navigation_control_node.py |
ロボットの自律移動を時間に応じて管理する |
web_config_node.py |
ナビゲーションのスケジュール設定をweb上で管理する |
fig4にwebsocketのモジュール構成図を示す。
 |
|
fig4. websocketのモジュール構成図 |
table4. websocketのモジュール動作概要
モジュール名 |
概要 |
config.ini |
webサーバのIPアドレスを設定 |
raspi_receiver_node.py |
iPadでの操作に応じて、ROS2のサービスのリクエストを送ったりnav2のアクションをキャンセルしロボットの移動を停止したりする |
fig5にiPadのwebアプリのモジュールの構成図を示す。
 |
|
fig5. iPadのwebアプリのモジュール構成図 |
table5. iPadのwebアプリのモジュール動作概要
モジュール名 |
概要 |
config.ini |
webサーバのIPアドレスを設定 |
socket_connection.py |
WebSocketを使用してRaspberry Piにデータを送信する |
web_main.py |
navigation_control_node,web_config_node,raspi_receiver_nodeを起動する |
display_switching.jp |
ボタンの表示/非表示を切り替える関数を実装 |
post.js |
ボタンの状態をサーバーに送信する関数を実装 |
progress_model.js |
水を出しているときのプログレスバーと水出し完了時の画面の表示 |
script.js |
停止、水出しのボタンの制御 |
timer.js |
水出し中に表示するプログレスバーをタイマーで制御 |
style.css |
Webアプリのボタンやレイアウト等のスタイルを定義 |
index.html |
Webアプリのメインファイル |
fig6にスケジュール共有のwebアプリのモジュールの構成図を示す。
 |
|
fig6. スケジュール共有のwebアプリのモジュール構成図 |
table6. スケジュール共有のwebアプリのモジュール動作概要
モジュール名 |
概要 |
server.js |
webサーバー |
style.css |
webアプリのスタイルを定義 |
script.js |
/amcl_poseトピックを購読し、ロボットの現在位置を表すマーカーを表示 |
index.html |
移動スケジュール・ROSとの接続状態・ロボットの現在位置を表示 |
3-2. Raspberry Pi
fig7~9にRaspberry Piのモジュール構成図を示す。
 |
|
fig7. Raspberry Piのモジュール構成図 |
 |
|
fig8. mirsのモジュール構成図 |
 |
|
fig9. mirs_msgsのモジュール構成図 |
table7. mirs_msgsのモジュール動作概要
モジュール名 |
概要 |
config.yaml |
クローラーの半径や幅、PIDゲインの設定ファイル |
mirs.launch.py |
navigation_control_node,web_config_node,raspi_receiver_nodeを起動する |
basic_command.cpp |
ボタンの表示/非表示を切り替える関数を実装 |
encoder_reset.cpp |
ボタンの状態をサーバーに送信する関数を実装 |
odometry_publisher.cpp |
エンコーダの値からオドメトリを計算 |
parameter_publisher.cpp |
クローラーの半径や幅、PIDゲインのパラメータを管理 |
parameter_update.cpp |
yamlファイルからパラメータを読み込み更新する |
reboot.cpp |
ESP32再起動用の簡易サービスクライアント |
BasicParam.msg |
Webアプリのメインファイル |
srv/ |
サービスの設定ファイル |
3-3. ESP32
fig10にESP32のモジュール構成図を示す。
 |
|
fig10. ESP32のモジュール構成図 |
table8. ESP32のモジュール動作概要
モジュール名 |
概要 |
mirs2404_esp32.ino |
変数・setup関数・loop関数の定義 |
config.h |
定数の定義 |
encoder.ino |
エンコーダーで左右のクローラーの回転をカウント |
multi_setup.ino |
マルチタスクの設定 |
pel.ino |
ペルチェ素子用のpwm信号を出力 |
pomp.ino |
ポンプの回転を制御 |
pubsub_callback.ino |
ROS関連の動作を定期的に実行 |
ros_setup.ino |
ROSの設定 |
server_callback.ino |
ROSのサーバーが呼び出されたときの動作を実装 |
servo.ino |
サーボモーターの回転を制御 |
thermistor.ino |
サーミスタから温度を取得 |
vel_ctrl.ino |
走行用モーターの回転を制御 |
vlt_obserber.ino |
バッテリーの電圧を監視 |