Roller485 LiteとATOMS3R M12カメラキットでArUcoマーカーをトラッキングする

概要

Roller485 LiteのPOSITIONモードは、指定した角度に俊敏に移動する。カメラでマーカーをトラッキングしたらその俊敏さが分かると思いやってみた。

構成図

MQTTブローカー : メッセージを仲介する。PCを起動するとサービスも起動する。
ArUco_tracking_ATOMS3RM12.py : カメラから見たArUcoマーカーがカメラの正面に来るようにモーターを制御する。
MQTT_MX_OTA_Roller485_PUB_commands.py : Unit RollerモーターをMQTTで制御するためのPythonモジュール(クラス)。
MQTT_MX_OTA_Roller485_SUB_commands : コマンドメッセージをサブスクライブし、モーターを制御する。

使い方

PC(GMK)を立ち上げMQTTブローカーを起動する。
モーターRoller485 Liteを12V電源に接続する。Roller485 Liteに接続するATOM Matrixに電源協供される。
PC(MINI2)上でArUco_tracking_ATOMS3RM12.pyを起動する。
カメラの正面でArUcoマーカーを左右に移動させるとカメラが追いかける。

MQTT_MX_OTA_Roller485_SUB_commands.inoの受信コマンド処理

cmd の値動作概要応答タイミングmqtt_topic_pub への送信内容
SPINrpm値を目標に、モーター速度を徐々に変化させます。速度変更完了受信したJSON({"cmd":"SPIN", "rpm":...}
QUICKrpm値を目標に、モーター速度を即座に設定します。コマンド受信直後受信したJSON({"cmd":"QUICK", "rpm":...}
DEGdeg値(角度)だけ現在位置からモーターを回転させます。目標位置への移動完了受信したJSON({"cmd":"DEG", "deg":...}
POS現在のモーター位置を問い合わせます。コマンド受信直後{"seq":..., "POSITION": (現在の位置)}
(上記以外)コマンドエラーとして処理されます。コマンド受信直後{"command": "cmd ERROR"}

プログラムの場所

➀Pythonスクリプト
C:\Users\%username%\Documents\012_ICTに関する備忘録\WordPress\さくらWordPressの各ページ\Roller485Liteユニット\src
➁Arduini IDE
C:\Users\%username%\Documents\Arduino\Unit_Roller485_Lite\MQTT\ATOM_Matrix_Roller_Full