CmvrControlStation/ui/agvservicepage.ui

208 lines
27 KiB
Plaintext
Raw Permalink Normal View History

2026-09-18 16:22:20 +08:00
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AgvServicePage</class>
<widget class="QWidget" name="AgvServicePage">
<layout class="QVBoxLayout" name="pageLayout">
<property name="spacing"><number>10</number></property>
<property name="leftMargin"><number>16</number></property>
<property name="topMargin"><number>12</number></property>
<property name="rightMargin"><number>16</number></property>
<property name="bottomMargin"><number>14</number></property>
<item>
<widget class="QFrame" name="serviceHeader">
<property name="objectName"><string>agvServiceHeader</string></property>
<layout class="QHBoxLayout" name="headerLayout">
<property name="spacing"><number>10</number></property>
<property name="leftMargin"><number>16</number></property>
<property name="topMargin"><number>9</number></property>
<property name="rightMargin"><number>12</number></property>
<property name="bottomMargin"><number>9</number></property>
<item><widget class="QLabel" name="headerTitle"><property name="text"><string>设备连接</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="headerSubtitle"><property name="text"><string>AgvService</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><spacer name="headerSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item>
<item><widget class="QLabel" name="deviceLabel"><property name="text"><string>设备 ID</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QLineEdit" name="agvIdEdit"><property name="minimumSize"><size><width>220</width><height>0</height></size></property><property name="maximumSize"><size><width>280</width><height>16777215</height></size></property><property name="placeholderText"><string>AGV 设备 ID</string></property></widget></item>
<item><widget class="QPushButton" name="refreshButton"><property name="minimumSize"><size><width>108</width><height>0</height></size></property><property name="text"><string>刷新状态</string></property><property name="objectName"><string>primaryButton</string></property></widget></item>
<item><widget class="QLabel" name="statusMonitorLabel"><property name="text"><string>状态监测</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QCheckBox" name="agvStatusSwitch"><property name="minimumSize"><size><width>44</width><height>24</height></size></property><property name="maximumSize"><size><width>44</width><height>24</height></size></property><property name="text"><string/></property><property name="toolTip"><string>开启或关闭 AGV 实时状态监测</string></property><property name="objectName"><string>agvStatusSwitch</string></property></widget></item>
<item><widget class="QPushButton" name="emergencyButton"><property name="minimumSize"><size><width>108</width><height>0</height></size></property><property name="text"><string>AGV 急停</string></property><property name="objectName"><string>dangerButton</string></property></widget></item>
</layout>
</widget>
</item>
<item>
<widget class="QTabWidget" name="agvTabs">
<property name="documentMode"><bool>true</bool></property>
<property name="currentIndex"><number>0</number></property>
<widget class="QWidget" name="manualTab">
<attribute name="title"><string>手动控制</string></attribute>
<layout class="QHBoxLayout" name="manualTabLayout">
<property name="spacing"><number>12</number></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
<item>
<widget class="QFrame" name="velocityPanel">
<property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="velocityLayout">
<property name="spacing"><number>12</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="velocityTitle"><property name="text"><string>底盘速度</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="velocitySubtitle"><property name="text"><string>车体坐标系速度,按下方向键立即发送</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><layout class="QFormLayout" name="velocityForm">
<property name="verticalSpacing"><number>10</number></property>
<item row="0" column="0"><widget class="QLabel" name="vxLabel"><property name="text"><string>线速度 X</string></property></widget></item>
<item row="0" column="1"><widget class="QDoubleSpinBox" name="agvVxSpin"><property name="minimum"><double>-5.0</double></property><property name="maximum"><double>5.0</double></property><property name="decimals"><number>3</number></property><property name="singleStep"><double>0.05</double></property><property name="value"><double>0.2</double></property><property name="suffix"><string> m/s</string></property></widget></item>
<item row="1" column="0"><widget class="QLabel" name="vyLabel"><property name="text"><string>线速度 Y</string></property></widget></item>
<item row="1" column="1"><widget class="QDoubleSpinBox" name="agvVySpin"><property name="minimum"><double>-5.0</double></property><property name="maximum"><double>5.0</double></property><property name="decimals"><number>3</number></property><property name="singleStep"><double>0.05</double></property><property name="suffix"><string> m/s</string></property></widget></item>
<item row="2" column="0"><widget class="QLabel" name="wzLabel"><property name="text"><string>角速度 Z</string></property></widget></item>
<item row="2" column="1"><widget class="QDoubleSpinBox" name="agvWzSpin"><property name="minimum"><double>-6.283</double></property><property name="maximum"><double>6.283</double></property><property name="decimals"><number>3</number></property><property name="singleStep"><double>0.05</double></property><property name="value"><double>0.3</double></property><property name="suffix"><string> rad/s</string></property></widget></item>
</layout></item>
<item><layout class="QGridLayout" name="directionLayout">
<property name="horizontalSpacing"><number>8</number></property><property name="verticalSpacing"><number>8</number></property>
<item row="0" column="0"><widget class="QPushButton" name="rotateLeftButton"><property name="text"><string>左旋</string></property><property name="objectName"><string>agvDirectionButton</string></property></widget></item>
<item row="0" column="1"><widget class="QPushButton" name="forwardButton"><property name="text"><string>前进</string></property><property name="objectName"><string>agvDirectionButton</string></property></widget></item>
<item row="0" column="2"><widget class="QPushButton" name="rotateRightButton"><property name="text"><string>右旋</string></property><property name="objectName"><string>agvDirectionButton</string></property></widget></item>
<item row="1" column="0"><widget class="QPushButton" name="leftButton"><property name="text"><string>左移</string></property><property name="objectName"><string>agvDirectionButton</string></property></widget></item>
<item row="1" column="1"><widget class="QPushButton" name="manualStopButton"><property name="text"><string>停止</string></property><property name="objectName"><string>dangerButton</string></property></widget></item>
<item row="1" column="2"><widget class="QPushButton" name="rightButton"><property name="text"><string>右移</string></property><property name="objectName"><string>agvDirectionButton</string></property></widget></item>
<item row="2" column="1"><widget class="QPushButton" name="backwardButton"><property name="text"><string>后退</string></property><property name="objectName"><string>agvDirectionButton</string></property></widget></item>
</layout></item>
<item><layout class="QHBoxLayout" name="velocityActions"><item><widget class="QPushButton" name="velocityButton"><property name="text"><string>发送当前速度</string></property><property name="objectName"><string>primaryButton</string></property></widget></item><item><widget class="QPushButton" name="zeroVelocityButton"><property name="text"><string>速度归零</string></property></widget></item></layout></item>
<item><spacer name="velocitySpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>40</height></size></property></spacer></item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="taskControlPanel">
<property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="taskControlLayout">
<property name="spacing"><number>12</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="taskControlTitle"><property name="text"><string>导航任务控制</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="taskControlSubtitle"><property name="text"><string>暂停、继续或取消当前导航任务</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><layout class="QHBoxLayout" name="taskActions"><item><widget class="QPushButton" name="pauseButton"><property name="text"><string>暂停</string></property></widget></item><item><widget class="QPushButton" name="resumeButton"><property name="text"><string>继续</string></property></widget></item><item><widget class="QPushButton" name="cancelButton"><property name="text"><string>取消任务</string></property></widget></item></layout></item>
<item><widget class="QLabel" name="manualSafetyHint"><property name="text"><string>手动控制会直接下发底盘速度。操作前请确认设备周围安全,松开控制后应主动停止速度控制。</string></property><property name="objectName"><string>mutedLabel</string></property><property name="wordWrap"><bool>true</bool></property></widget></item>
<item><spacer name="taskControlSpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>40</height></size></property></spacer></item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="navigationTab">
<attribute name="title"><string>导航任务</string></attribute>
<layout class="QHBoxLayout" name="navigationTabLayout">
<property name="spacing"><number>12</number></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
<item>
<widget class="QFrame" name="poseNavigationPanel">
<property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="poseNavigationLayout">
<property name="spacing"><number>10</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="poseNavigationTitle"><property name="text"><string>目标导航</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="poseNavigationSubtitle"><property name="text"><string>按地图位姿或站点下发导航任务</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><layout class="QFormLayout" name="poseForm">
<property name="verticalSpacing"><number>9</number></property>
<item row="0" column="0"><widget class="QLabel" name="xLabel"><property name="text"><string>目标 X</string></property></widget></item>
<item row="0" column="1"><widget class="QDoubleSpinBox" name="agvXSpin"><property name="minimum"><double>-10000.0</double></property><property name="maximum"><double>10000.0</double></property><property name="decimals"><number>3</number></property><property name="suffix"><string> m</string></property></widget></item>
<item row="1" column="0"><widget class="QLabel" name="yLabel"><property name="text"><string>目标 Y</string></property></widget></item>
<item row="1" column="1"><widget class="QDoubleSpinBox" name="agvYSpin"><property name="minimum"><double>-10000.0</double></property><property name="maximum"><double>10000.0</double></property><property name="decimals"><number>3</number></property><property name="suffix"><string> m</string></property></widget></item>
<item row="2" column="0"><widget class="QLabel" name="thetaLabel"><property name="text"><string>目标航向</string></property></widget></item>
<item row="2" column="1"><widget class="QDoubleSpinBox" name="agvThetaSpin"><property name="minimum"><double>-6.283</double></property><property name="maximum"><double>6.283</double></property><property name="decimals"><number>3</number></property><property name="suffix"><string> rad</string></property></widget></item>
<item row="3" column="0"><widget class="QLabel" name="maxSpeedLabel"><property name="text"><string>最大线速度</string></property></widget></item>
<item row="3" column="1"><widget class="QDoubleSpinBox" name="agvMaxSpeedSpin"><property name="maximum"><double>10.0</double></property><property name="decimals"><number>2</number></property><property name="value"><double>0.5</double></property><property name="suffix"><string> m/s</string></property></widget></item>
</layout></item>
<item><widget class="QPushButton" name="navigatePoseButton"><property name="text"><string>导航到目标位姿</string></property><property name="objectName"><string>primaryButton</string></property></widget></item>
<item><widget class="QFrame" name="poseSeparator"><property name="frameShape"><enum>QFrame::HLine</enum></property></widget></item>
<item><widget class="QLabel" name="stationTitle"><property name="text"><string>站点导航</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QComboBox" name="agvStationCombo"><property name="editable"><bool>true</bool></property></widget></item>
<item><widget class="QPushButton" name="navigateStationButton"><property name="text"><string>导航到选中站点</string></property></widget></item>
<item><spacer name="poseNavigationSpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>40</height></size></property></spacer></item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="pathPanel">
<property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="pathLayout">
<property name="spacing"><number>10</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="pathTitle"><property name="text"><string>显式路径</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="pathSubtitle"><property name="text"><string>每行输入一段路径,例如 HOME,WORK_A</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><widget class="QPlainTextEdit" name="agvPathEdit"><property name="placeholderText"><string>HOME,STATION_A
STATION_A,STATION_B</string></property></widget></item>
<item><widget class="QPushButton" name="followPathButton"><property name="text"><string>执行路径</string></property><property name="objectName"><string>primaryButton</string></property></widget></item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="mapTab">
<attribute name="title"><string>地图管理</string></attribute>
<layout class="QHBoxLayout" name="mapTabLayout">
<property name="spacing"><number>12</number></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
<item>
<widget class="QFrame" name="mapPanel">
<property name="minimumSize"><size><width>330</width><height>0</height></size></property><property name="maximumSize"><size><width>390</width><height>16777215</height></size></property><property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="mapLayout">
<property name="spacing"><number>10</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="mapPanelTitle"><property name="text"><string>地图清单</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="mapSubtitle"><property name="text"><string>查询、切换和传输控制器地图</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><widget class="QComboBox" name="agvMapCombo"><property name="editable"><bool>true</bool></property></widget></item>
<item><widget class="QPushButton" name="inventoryButton"><property name="text"><string>刷新地图与站点</string></property><property name="objectName"><string>primaryButton</string></property></widget></item>
<item><widget class="QPushButton" name="switchMapButton"><property name="text"><string>切换到选中地图</string></property></widget></item>
<item><layout class="QHBoxLayout" name="mapTransferActions"><item><widget class="QPushButton" name="uploadMapButton"><property name="text"><string>上传</string></property></widget></item><item><widget class="QPushButton" name="downloadMapButton"><property name="text"><string>下载</string></property></widget></item></layout></item>
<item><spacer name="mapPanelSpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>40</height></size></property></spacer></item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="stationPanel">
<property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="stationLayout">
<property name="spacing"><number>10</number></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
<item><layout class="QVBoxLayout" name="stationHeaderLayout"><property name="leftMargin"><number>18</number></property><property name="rightMargin"><number>18</number></property><item><widget class="QLabel" name="stationTableTitle"><property name="text"><string>地图站点</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item><item><widget class="QLabel" name="stationTableSubtitle"><property name="text"><string>选择一行可同步到导航任务中的目标站点</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item></layout></item>
<item><widget class="QLabel" name="agvMapOverview"><property name="minimumSize"><size><width>0</width><height>260</height></size></property><property name="maximumSize"><size><width>16777215</width><height>300</height></size></property><property name="text"><string>刷新地图与站点后显示拓扑预览</string></property><property name="alignment"><set>Qt::AlignCenter</set></property><property name="objectName"><string>agvMapPreview</string></property></widget></item>
<item><widget class="QTableWidget" name="agvStationTable"><property name="columnCount"><number>4</number></property><property name="rowCount"><number>0</number></property><property name="minimumSize"><size><width>0</width><height>220</height></size></property></widget></item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="mappingTab">
<attribute name="title"><string>建图</string></attribute>
<layout class="QHBoxLayout" name="mappingTabLayout">
<property name="spacing"><number>12</number></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
<item>
<widget class="QFrame" name="mappingControlPanel">
<property name="minimumSize"><size><width>360</width><height>0</height></size></property><property name="maximumSize"><size><width>430</width><height>16777215</height></size></property><property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="mappingControlLayout">
<property name="spacing"><number>10</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="mappingTitle"><property name="text"><string>实时建图</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="mappingSubtitle"><property name="text"><string>开始或停止 2D / 3D 建图会话</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><widget class="QLineEdit" name="mappingNameEdit"><property name="placeholderText"><string>新地图名称(可选)</string></property></widget></item>
<item><widget class="QComboBox" name="mappingDimensionCombo"><item><property name="text"><string>2D 地图</string></property></item><item><property name="text"><string>3D 地图</string></property></item><item><property name="text"><string>2D + 3D</string></property></item></widget></item>
<item><widget class="QCheckBox" name="mappingRealtimeCheck"><property name="text"><string>请求实时地图更新</string></property><property name="checked"><bool>true</bool></property></widget></item>
<item><layout class="QHBoxLayout" name="mappingActions"><item><widget class="QPushButton" name="startMappingButton"><property name="text"><string>开始建图</string></property><property name="objectName"><string>primaryButton</string></property></widget></item><item><widget class="QPushButton" name="stopMappingButton"><property name="text"><string>停止建图</string></property></widget></item></layout></item>
<item><widget class="QFrame" name="mappingSeparator"><property name="frameShape"><enum>QFrame::HLine</enum></property></widget></item>
<item><widget class="QLabel" name="streamTitle"><property name="text"><string>地图流</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QCheckBox" name="streamSnapshotCheck"><property name="text"><string>首先获取全量快照</string></property><property name="checked"><bool>true</bool></property></widget></item>
<item><widget class="QCheckBox" name="streamIncrementalCheck"><property name="text"><string>保持连接并接收增量</string></property><property name="checked"><bool>true</bool></property></widget></item>
<item><layout class="QHBoxLayout" name="streamActions"><item><widget class="QPushButton" name="startMapStreamButton"><property name="text"><string>启动地图流</string></property></widget></item><item><widget class="QPushButton" name="stopMapStreamButton"><property name="text"><string>停止地图流</string></property></widget></item></layout></item>
<item><spacer name="mappingControlSpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>40</height></size></property></spacer></item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="mappingPreviewPanel">
<property name="objectName"><string>panel</string></property>
<layout class="QVBoxLayout" name="mappingPreviewLayout">
<property name="spacing"><number>10</number></property><property name="leftMargin"><number>18</number></property><property name="topMargin"><number>16</number></property><property name="rightMargin"><number>18</number></property><property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="mappingPreviewTitle"><property name="text"><string>地图预览</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="mappingPreview"><property name="minimumSize"><size><width>420</width><height>360</height></size></property><property name="text"><string>等待 AGV 返回统一地图数据</string></property><property name="alignment"><set>Qt::AlignCenter</set></property><property name="objectName"><string>agvMapPreview</string></property></widget></item>
<item><widget class="QLabel" name="mappingStateLabel"><property name="text"><string>地图流未启动</string></property><property name="objectName"><string>mutedLabel</string></property></widget></item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>