Robot Monitor
// Copyright (C) 2026 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtRos2.Imported.Nav2Msgs
import QtRos2.Imported.IrobotCreateMsgs
QtObject {
id: root
property var node
readonly property var navigationStatus: _navigateToPoseAction.state
readonly property var navigationFeedback: _navigateToPoseAction.feedback
readonly property var dockStatus: _dockActionClient.state
readonly property var dockFeedback: _dockActionClient.feedback
readonly property var undockStatus: _undockActionClient.state
property NavigateToPoseActionClient _navigateToPoseAction: NavigateToPoseActionClient {
node: root.node
topic: "navigate_to_pose"
}
property DockActionClient _dockActionClient: DockActionClient {
node: root.node
topic: "dock"
}
property UndockActionClient _undockActionClient: UndockActionClient {
node: root.node
topic: "undock"
}
function navigateToPose(p, yaw) {
const q = Qt.quaternion(
Math.cos(yaw / 2), 0, 0, Math.sin(yaw / 2))
_navigateToPoseAction.sendGoal({
"pose": {
"header": { "frameId": "map", "stamp": { "sec": 0, "nanosec": 0 } },
"pose": {
"position": p,
"orientation": { "w": q.scalar, "x": q.x, "y": q.y, "z": q.z }
},
"behaviorTree": ""
}
})
}
function dock() { _dockActionClient.sendGoal() }
function undock() { _undockActionClient.sendGoal() }
}