MQTT API マニュアル(Ver1.12.0)
MQTT API マニュアル 情報
ALIファームウェア バージョン:
ver. 1.12.0
著者: Keigan
MQTT API 共通
基本
MQTT
の仕組みにより、Topic
を subscribe
(購読)することにより、⾃動的にデータが publish
(発⾏)される。ステータスの取得 により、⾃機の状態を把握することができる。
アドレス
MQTT API
にアクセスするためのアドレスは以下となる。
MQTTプロトコルで接続 | mqtt://[IP Address]:9075/[Topic] |
---|---|
WebSocketプロトコル経由で接続 (ブラウザ等で使用時) | ws://[IP Address]:9076/[Topic] |
[IP Address]
直接
AMR
のアクセスポイントに接続する場合・・・10.0.60.1
ローカルエリアネットワーク
LAN
経由で接続する場合・・・192.XXX.X.XX
LAN
経由の場合は、ルーター側でIPアドレス
を割り当て、または固定設定を行うことにより、決定される。
[Topic]
次項 MQTT API
リスト で定義される Topic
(トピック)を使⽤する。
MQTT API リスト
No. | Function | Direction | Topic |
---|---|---|---|
QS-1 | マシンのステータスを取得する | Publish | status |
QS-2 | マシンの名前を取得 | Publish | status/machine_name |
QS-3 | バッテリの残量を取得 | Publish | status/battery |
QS-4 | エラー情報を取得 | Publish | status/error_info |
QS-5 | マシンの操作状態を取得 | Publish | status/operation_state |
QS-6 | マシンの制御状態を取得 | Publish | status/control_state |
QS-7 | マシンのコマンド状態を取得 | Publish | status/command_state |
QS-8 | マシンのハードウェア状態を取得 | Publish | status/hardware |
QS-9 | GPIOの状態を取得 | Publish | status/gpio |
QS-10 | LiDARの情報を取得 | Publish | status/lidar |
QS-11 | スロープでロック状態の取得 | Publish | status/slope_lock |
QS-12 | 速度、角速度情報の取得 | Publish | status/odometry |
QT-1 | タスクセットidを取得 | Publish | taskset/id |
QT-2 | 実行中のタスクidを取得 | Publish | taskset/index |
QT-3 | タスクセットの名前を取得 | Publish | taskset/name |
QT-4 | タスクセットの状態を取得 | Publish | taskset/state |
QT-5 | MQTTメッセージを送信 | Publish | taskset/message |
QT-6 | 実行中タスクのcmdsを取得 | Publish | taskset/current_task |
QT-7 | MQTTメッセージを受信 | Subscribe | taskset/message_in |
QN-1 | マシンの原点情報を取得 | Publish | nav/amr_pose |
QN-2 | マップ情報を取得 | Publish | nav/map_png |
QN-3 | マップの名前を取得 | Publish | nav/map_name |
QN-4 | マップidの取得 | Publish | nav/map_id |
QN-5 | 正規化された自己位置スコアを取得 | Publish | localization/nrmse |
QN-6 | 自己位置スコアを取得 | Publish | localization/rmse |
QC-1 | マニュアル操作を行う | Subscribe | control/joy |
QS-1 ステータスの取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status | マシンのステータスを取得する | Publish | 100ms毎 |
データの取得例:
※location内の x, y, およびangle の theta についてはREST API ドキュメント(v1.0.2以降)を参照すること。{
"map": {
"mapId" : <uint32> # mapId
},
"operation_state" : <string>, # ex) "idle"
"battery" : {
"percentage" : <uint32>, # 0 to 100 [%]
"voltage" : <float32> # battery voltage [V]
},
"timestamp": <string>, # ex)"2012-04-21T18:25:43-05:00"
"location": {
"x": <float64>,
"y": <float64>,
"angle": {
"theta": <float64>, #radian
"y": <float64>, #常に0
"z": <float64>, #常に0
"x": <float64> #常に0
}
},
"taskset" : {
"state" : <string>, # "idle"または"exectuing"
"cmdSetId" : <uint32>, # cmdSetId
"cmdIndex" : <uint32>, # number of cmdSetId
"resume_cmd_index": <uint32>,
"resume_available": <bool>
},
"error" : {
"code" : <uint32>, # error code
"description" : <string>
}
}
キー | 値の説明 | 備考 |
---|---|---|
map | マップ情報 | mapId:選択されているマップのId |
operation_state | AMRの状態 | Idle:アイドル中 Executing:タスクセットの実行中 Mapping:マップの作成中 Error:エラー |
battery | バッテリー状態 | Percentage:残量 [%] Voltage:電圧 [V] |
time stamp | 発行された時刻(UNIX_TIME) | |
location | AMRの現在位置 (選択されているマップの 原点座標を基準とする 位置座標と向き) | x:現在位置のx座標 y:現在位置のy座標 angle{ theta:現在位置の角度 y:0 #予約領域 z:0 #予約領域 x:0 #予約領域 } |
taskset | タスクセットの状態 | State:タスクセットの実行状態 cmdSetId:現在実行中のタスクセットid cmdIndex:現在実行中のタスクインデックス (何番目のタスクか) resume_cmd_index: タスクセット再開時に実行するタスクid resume_available:タスクセットの再開可否 |
error | エラー状態 | code:エラーコード description:エラー内容の説明 |
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-2 マシンの名前を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/machine_name | マシンの名前を取得 | Publish | ALI起動時に1回のみ送信 |
データの取得例:
{
"data": ali-default <string> //マシンの名前
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/machine_name", 0) #TOPIC
mqttc.loop_forever() ()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/machine_name");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-3 バッテリの残量を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/battery | バッテリの残量を取得 | Publish | 100ms毎 |
データの取得例:
{
"data": 72 <uint32> #バッテリの残量 [%]
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/battery", 0) #TOPIC
mqttc.loop_forever() )
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/battery");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html> >
QS-4 エラー情報を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/error_info | エラー情報を取得 | Publish | 異常検出時または異常解除時 |
データの取得例:
{
"code": 80 <uint32>, #エラーコードNO.
"description": "Battery Door Open" <string>, #エラーの内容
"timestamp": "2022-04-01T09:00:00+09:00"
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/error_info", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/error_info");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-5 マシンの操作状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/operation_state | マシンの操作状態を取得 | Publish | stateが変化する毎 |
データの取得例:
{
"state": 1 <uint32>, # 1:自動走行中 (ルート走行、ライントレーサ)
# 2:待機中(ゴールに到着含む)
# 3:SLAM中
# 9:エラー停止中
"error_code": 0 <uint32>, #エラーコードNo. (0:エラーなし)
"timestamp": "2012-04-21T18:25:43-05:00"
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/operation_state", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/operation_state");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-6 マシンの制御状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/control_state | マシンの制御状態を取得 | Publish | stateが変化する毎 |
データの取得例:
{
"data": 1 <uint32> # 0:ビジー状態、処理中(コマンドを貰っても処理できない)
# 1:制御可能 コマンドの受信と応答が可能
# 2:制御不可 コマンドを受信しても応答しない
# (ルート走行中またはライントレーサ中)
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/control_state", 0) #TOPIC
mqttc.loop_forever()
参考コード例 Javascript
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX ", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/control_state");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-7 マシンのコマンド状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/command_state | マシンのコマンド状態を取得 | Publish | stateが変化する毎 |
データの取得例:
{
"data": 1 <uint32> # 0:ビジー状態、処理中(コマンドを貰っても処理できない)
# 1:制御可能 コマンドの受信と応答が可能
# 2:制御不可 コマンドを受信しても応答はしない
# 3:マッピング中 (中止以外のコマンドは処理できない)
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/command_state", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.168.3.105", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/command_state");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-8 マシンのハードウェア状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/hardware | マシンのマンド状態を取得 | Publish | 200ms毎 |
データの取得例:
{
"battery": {
"current": 0.3644208014011383, <float32>
"overcurrent": false, <bool>
"overvoltage": false, <bool>
"undervoltage": false, <bool>
"voltage": 24.356325149536133 <float32>
},
"battery_door_open": false, <bool>
"center_cliff_sensor": {
"connected": true, <bool>
"range": 286, <int32>,
"status": 0 <int32>,
},
"crc_match": true, <bool>
"emergency_switch_pressed": false, <bool>
"front_center_tof": {
"connected": true, <bool>
"range": 8888, <int32>,
"status": 22 <int32>,
},
"front_left_tof": {
"connected": true, <bool>
"range": 8888, <int32>,
"status": 6 <int32>,
},
"front_right_tof": {
"connected": true, <bool>
"range": 8888, <int32>,
"status": 6 <int32>,
},
"imu": true, <bool>
"left_cliff_sensor": {
"connected": true, <bool>
"range": 564, <int32>,
"status": 0 <int32>,
},
"left_motor": {
"connected": true, <bool>
"current": 0.0, <float32>
"stalling": false <bool>
},
"left_tof": {
"connected": true, <bool>
"range": 1433, <int32>,
"status": 0 <int32>,
},
"lidar_connected": true, <bool>
"lidar_sample_rate": 35883, <int32>,
"lidar_scan_freq": 10.018754005432129, <float32>
"lidar_scanning": true, <bool>
"lidar_status_normal": true, <bool>
"lidar_zero_percentage": 0.0, <float32>
"microcontroller": {
"bad_sensor_data": false, <bool>
"connected": true, <bool>
"restarting": false <bool>
},
"right_cliff_sensor": {
"connected": true, <bool>
"range": 478, <int32>,
"status": 0 <int32>,
},
"right_motor": {
"connected": true, <bool>
"current": 0.0, <float32>
"stalling": false <bool>
},
"right_tof": {
"connected": true, <bool>
"range": 50, <int32>,
"status": 0 <int32>,
},
"timestamp": "2024-11-01T15:01:05+09:00",
"tof_data_valid": true <bool>
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/hardware", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/hardware");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-9 GPIOの状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/gpio | GPIOの状態を取得 | Publish | GPIOの状態が変化する毎 |
データの取得例:
[
{
"state": 0, <int32> # 0:LOW, 1:HIGH
“pin”:101 <int32>
},
{
"state": 0, <int32>
“pin”:102 <int32>
},
{
"state": 0, <int32>
“pin”:201 <int32>
},
{
"state": 0, <int32>
“pin”:202 <int32>
}
]
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/gpio", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/gpio");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-10 LiDARの情報を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/lidar | LiDARの情報を取得 | Publish | 電源ON時 |
データの取得例:
{
"name": ydlidar <string>
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/lidar", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/lidar");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-11 スロープでのロック状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/slope_lock | スロープでのロック状態を取得 | Publish | スロープロック発生時 |
データの取得例:
{
"data": false <bool>
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/slope_lock", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/slope_lock");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QS-12 速度・回転速度の情報を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
status/odometry | 速度・角速度情報を取得 | Publish | 100ms毎 |
データの取得例:
{
"angular": 0.1, <float32> #角速度
"linear": 0.5 <float32> #速度
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/odometry", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/odometry");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-1 タスクセットidを取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/id | タスクセットidを取得 | Publish | ALI起動時およびタスクセット実行時 |
データの取得例:
{
"data": 143 <uint32> #選択されているタスクセットid
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/id", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/id");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-2 実行中のタスクidを取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/index | 実行中のタスクidを取得 | Publish | ALI起動時およびタスク実行中100ms毎 |
データの取得例:
{
"data": 2 <uint32> #実行中のタスクid
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/index", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/index");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-3 タスクセットの名前を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/name | タスクセットの名前を取得 | Publish | ALI起動時およびタスク実行時に都度 |
データの取得例:
{
"data": "Pickup and deliver" <string> #タスクセットの名前
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/name", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/name");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-4 タスクセットの状態を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/state | タスクセットの状態を取得 | Publish | ALI起動時およびタスクセットの 状態(停止、実行、再開)が 変化したとき |
データの取得例:
{
"timestamp": "2012-04-21T18:25:43-05:00",
"cmdset_id": 1 <int32>, #タスクセットのID
"resume_cmd_id": 1 <int32>, #タスクセットを再開する時のタスクid
"resume_available": true <bool>, #タスクセットの再開可否
"executing": true <bool>, #タスクセット実行中か否か
"completed": false <bool>, #タスクセットを最後まで完了したか否か
“path_blocked”:false <bool> #経路がブロックされているか否か
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/state", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.168.3.228", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/state");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-5 MQTTメッセージを取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/message | ALIから送信されるMQTTメッセージを取得 | Publish | ALIがMQTTメッセージを送信した時 |
データの取得例:
{
"message": "Arrived" #送信メッセージ
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/message", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.168.3.228", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/message");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-6 実行中タスクのcmdsを取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/current_task | 実行中タスクのcmdsを取得 | Publish | ALI起動時およびタスク実行時に都度 |
データの取得例:
{
"data":
"{
//"arg//":
{
//"ignoreTheta//": true,
//"passingPoint//": false,
//"enableObstacleAvoidance//": true,
//"disableStartAnnouncement//": false,
//"disableStopAnnouncement//": false,
//"fastRotation//": false,
//"mode//": 1,
//"fastStopping//": false,
//"x//": -3.0464999999999995,
//"y//": 4.781000000000001,
//"theta//": -4.682194784325188,
//"pathWidth//": 2,
//"obstacleTimeout//": 0,
//"type//": 0,
//"enableRerouteRecovery//": false,
//"disableReplanning//": false,
//"name//": //"//"
},
//"cmdType//": 100
}"
}
データ デコード例 (詳細は、REST APIのcmdsの項目参照)
json
{
'arg': {
'ignoreTheta': True,
'passingPoint': False,
'enableObstacleAvoidance': True,
'disableStartAnnouncement': False,
'disableStopAnnouncement': False,
'fastRotation': False,
'mode': 1,
'fastStopping': False,
'x': -3.0464999999999995,
'y': 4.781000000000001,
'theta': -4.682194784325188,
'pathWidth': 2,
'obstacleTimeout': 0,
'type': 0,
'enableRerouteRecovery': False,
'disableReplanning': False,
'name': ''
},
'cmdType': 100
}
データの取得例:
{
'arg': {
'ignoreTheta': True,
'passingPoint': False,
'enableObstacleAvoidance': True,
'disableStartAnnouncement': False,
'disableStopAnnouncement': False,
'fastRotation': False,
'mode': 1,
'fastStopping': False,
'x': -3.0464999999999995,
'y': 4.781000000000001,
'theta': -4.682194784325188,
'pathWidth': 2,
'obstacleTimeout': 0,
'type': 0,
'enableRerouteRecovery': False,
'disableReplanning': False,
'name': ''
},
'cmdType': 100
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/current_task", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.168.3.228", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/current_task");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QT-7 MQTTメッセージを受信
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
taskset/message_in | ALIでMQTTメッセージを待ち受け | Subscribe | 上位システムがMQTTメッセージを送信した時 |
データの送信例 Python:
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
import json
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
topic = "taskset/message_in"
message = {
"message":"go" # 例として「go」文字列を送信
}
if __name__ == '__main__':
mqttc = paho.Client() #mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
message_json = json.dumps(message)
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.publish(topic, message_json) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>MQTT with JavaScript</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"></script>
</head>
<body>
<h1>MQTT Client with JavaScript</h1>
<script>
// MQTTクライアントの設定
const host = "192.XXX.X.XX";
const port = 9076; // ポート番号
const topic = "taskset/message_in";
const message = JSON.stringify({ "message": "go" });
// 例として「go」文字列を送信
// ランダムなクライアントIDを生成(例:Math.randomを使用)
const clientId = "clientId-" + Math.random().toString(16).substr(2, 8);
// クライアントの作成
const client = new Paho.MQTT.Client(host, Number(port), clientId);
// コールバック関数
client.onConnectionLost = function(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:" + responseObject.errorMessage);
}
};
client.onMessageArrived = function(message) {
console.log("onMessageArrived: " + message.destinationName + " " + message.payloadString);
};
// 接続
client.connect({
onSuccess: onConnect,
onFailure: function(message) {
console.log("Connection failed: " + message.errorMessage);
},
keepAliveInterval: 60, // キープアライブ60秒
useSSL: false // SSLを使用しない
});
// 接続成功時の処理
function onConnect() {
console.log("Connected with clientId: " + clientId);
// メッセージを発行
const mqttMessage = new Paho.MQTT.Message(message);
mqttMessage.destinationName = topic;
client.send(mqttMessage);
}
</script>
</body>
</html> >
<!-- end -->
<!-- start -->
QN-1 マシンの位置情報を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
nav/amr_pose | マシンの位置情報を取得 | Publish | 200ms毎 |
データの取得例 データの取得例:
{
"data":
"{
//"origin_x//": -12.1,<float32> # 原点x座標
//"origin_y//": -14.925, <float32> # 原点y座標
//"map_height//": 597, <int32> # マップの高さ(pixel)
//"x//": -2.97655, <float32> # x座標
//"y//": 2.71426, <float32> # y座標
//"resolution//": 0.05, <float32> # マップ解像度(5cm)
//"theta//": -1.88392, <float32> # 角度(rad)
//"nrmse//": 0.159324, <float32> # 自己位置スコア
//"pitch//": 0.0601453 <float32> # 走行面に対する傾き
}"
}
データ デコード例:
{
"data": {
"origin_x": -12.1,
"origin_y": -14.925,
"map_height": 597,
"x": -2.97655,
"y": 2.71426,
"resolution": 0.05,
"theta": -1.88392,
"nrmse": 0.159324,
"pitch": 0.0601453
}
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/amr_pose", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/amr_pose");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html> >
QN-2 マップ情報を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
nav/map_png | マップ情報を取得 | Publish | ALI起動時およびマップ変更時 |
データの取得例:
{
"timestamp": "2024-11-05T18:25:43-05:00",
"format": "png" <string>,
"data": "iVBORw0KGgoAAAANSUhEUgAAAN4AAA… <string(base64)>
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/map_png", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX,X,XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/map_png");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html> >
QN-3 マップの名前を取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
nav/map_name | マップの名前を取得 | Publish | ALI起動時およびマップ名変更時 |
データの取得例:
{
"data": "test_map" <string> #mapの名前
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/map_name", 0) #TOPIC
mqttc.loop_forever())
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/map_name");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html> >
QN-4 マップidを取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
nav/map_id | マップidを取得 | Publish | ALI起動時およびマップ変更時 |
データの取得例:
{
"data": 176 <uint32> #mapのid
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/map_id", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.168.3.228", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/map_id");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QN-5 正規化された自己位置スコアの取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
Localization/nrmse | 正規化された自己位置スコアを取得 | Publish | 100ms毎(走行時) |
データの取得例:
{
"data": 0.6438644919924806 <float64> #自己位置スコア
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("localization/nrmse", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("localization/nrmse");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QN-6 自己位置スコアの取得
Topic | Function | Direction | 送信タイミング |
---|---|---|---|
Localization/nrmse | 自己位置スコアを取得 | Publish | 100ms毎(走行時) |
データの取得例:
{
"data": 0.19273970848864136 <float64> #自己位置スコア
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("localization/rmse", 0) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MQTT Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<!-- 外部スクリプト(paho-mqtt)のURIを指定 -->
</head>
<body>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
"192.XXX.X.XX", // Address of broker(IPアドレス)
9076, // Websocketへの接続時は”9076”
"web_" + (Date.now() + 1) // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess: onConnect, // 接続に成功したときのコールバック
onFailure: doFail // 接続に失敗したときのコールバック
};
// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("localization/rmse");
// トピックにメッセージを発行
let message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}
// 接続に失敗したとき
function doFail(e) {
window.alert(e);
}
// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:" + responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:" + message.payloadString);
}
// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>
</body>
</html>
QC-1 マニュアル操作を行う
Topic | Function | Direction |
---|---|---|
control/joy | マニュアル操作を行う | Subscribe |
データの取得例:
{
"data" : 0 <uint32>
# 0:No operation
# 1:forward
# 2:Diagonal right forward(Curve diameter is constant)
# 3:Turn right
# 4:Right back retreat(Curve diameter is constant)
# 5:back
# 6:Left back retreat(Curve diameter is constant)
# 7:Turn left
# 8:Diagonal left forward(Curve diameter is constant)
}
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
import json
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
topic = "control/joy"
message = {
"data":5 # 5:back
}
# 0:No operation
#1:forward
# 2:Diagonal right forward(Curve diameter is constant)
# 4:Right back retreat(Curve diameter is constant)
# 5:back
# 6:Left back retreat(Curve diameter is constant)
# 7:Turn left
# 8:Diagonal left forward(Curve diameter is constant
if __name__ == '__main__':
mqttc = paho.Client() #mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
message_json = json.dumps(message)
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.publish(topic, message_json) #TOPIC
mqttc.loop_forever()
コード参考例 Python
import paho.mqtt.client as paho #「paho.mqtt.client」ライブラリのインストールが必要です。
import json
def on_connect(client, userdata, flags, rc):
print("rc: "+str(rc))
def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))
def on_publish(self, obj, mid):
print("mid: "+str(mid))
def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(self, obj, level, string):
print(string)
topic = "control/joy"
message = {
"data":5 # 5:back
}
# 0:No operation
#1:forward
# 2:Diagonal right forward(Curve diameter is constant)
# 4:Right back retreat(Curve diameter is constant)
# 5:back
# 6:Left back retreat(Curve diameter is constant)
# 7:Turn left
# 8:Diagonal left forward(Curve diameter is constant
if __name__ == '__main__':
mqttc = paho.Client() #mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
message_json = json.dumps(message)
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.publish(topic, message_json) #TOPIC
mqttc.loop_forever()
コード参考例 Java script / html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>MQTT with JavaScript</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"></script>
</head>
<body>
<h1>MQTT Client with JavaScript</h1>
<script>
// MQTTクライアントの設定
const host = "192.XXX.X.XX";
const port = 9076; // ポート番号
const topic = "control/joy";
const message = JSON.stringify({ "data": 5 }); // 5:back
// ランダムなクライアントIDを生成(例:Math.randomを使用)
const clientId = "clientId-" + Math.random().toString(16).substr(2, 8);
// クライアントの作成
const client = new Paho.MQTT.Client(host, Number(port), clientId);
// コールバック関数
client.onConnectionLost = function(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:" + responseObject.errorMessage);
}
};
client.onMessageArrived = function(message) {
console.log("onMessageArrived: " + message.destinationName + " " + message.payloadString);
};
// 接続
client.connect({
onSuccess: onConnect,
onFailure: function(message) {
console.log("Connection failed: " + message.errorMessage);
},
keepAliveInterval: 60, // キープアライブ60秒
useSSL: false // SSLを使用しない
});
// 接続成功時の処理
function onConnect() {
console.log("Connected with clientId: " + clientId);
// メッセージを発行
const mqttMessage = new Paho.MQTT.Message(message);
mqttMessage.destinationName = topic;
client.send(mqttMessage);
}
</script>
</body>
</html>