CmvrControlStation/ui/armservicepage.ui

95 lines
20 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>ArmServicePage</class>
<widget class="QWidget" name="ArmServicePage">
<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>armServiceHeader</string></property><layout class="QHBoxLayout" name="serviceLayout"><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="serviceTitle"><property name="text"><string>设备连接</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item><item><widget class="QLabel" name="serviceSubtitle"><property name="text"><string>ArmService</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item><item><spacer name="serviceSpacer"><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="armDeviceLabel"><property name="text"><string>设备 ID</string></property><property name="objectName"><string>eyebrow</string></property></widget></item><item><widget class="QLineEdit" name="armIdEdit"><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>机械臂设备 ID</string></property></widget></item><item><widget class="QPushButton" name="armTelemetryButton"><property name="minimumSize"><size><width>108</width><height>0</height></size></property><property name="text"><string>开始遥测</string></property><property name="checkable"><bool>true</bool></property></widget></item></layout></widget></item>
<item>
<widget class="QWidget" name="body" native="true">
<layout class="QHBoxLayout" name="bodyLayout">
<property name="spacing"><number>14</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="commandPanel">
<property name="minimumSize"><size><width>240</width><height>0</height></size></property><property name="maximumSize"><size><width>240</width><height>16777215</height></size></property><property name="objectName"><string>armCommandPanel</string></property>
<layout class="QVBoxLayout" name="commandLayout">
<property name="spacing"><number>0</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="commandHeader"><property name="objectName"><string>armPanelHeader</string></property><layout class="QVBoxLayout" name="commandHeaderLayout"><property name="spacing"><number>2</number></property><property name="leftMargin"><number>14</number></property><property name="topMargin"><number>14</number></property><property name="rightMargin"><number>14</number></property><property name="bottomMargin"><number>10</number></property><item><widget class="QLabel" name="commandTitle"><property name="text"><string>设备控制</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item><item><widget class="QLabel" name="commandSubtitle"><property name="text"><string>未选择设备</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item></layout></widget></item>
<item><widget class="QWidget" name="commandBody" native="true"><layout class="QVBoxLayout" name="commandBodyLayout"><property name="spacing"><number>10</number></property><property name="leftMargin"><number>14</number></property><property name="topMargin"><number>12</number></property><property name="rightMargin"><number>14</number></property><property name="bottomMargin"><number>14</number></property>
<item><layout class="QHBoxLayout" name="servoStatusLayout"><item><widget class="QLabel" name="servoTitle"><property name="text"><string>伺服状态</string></property></widget></item><item><spacer name="servoStatusSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>20</height></size></property></spacer></item><item><widget class="QLabel" name="servoStatusValue"><property name="text"><string>未知</string></property><property name="objectName"><string>armStateValue</string></property></widget></item></layout></item>
<item><layout class="QHBoxLayout" name="faultStatusLayout"><item><widget class="QLabel" name="faultTitle"><property name="text"><string>故障状态</string></property></widget></item><item><spacer name="faultStatusSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>20</height></size></property></spacer></item><item><widget class="QLabel" name="faultStatusValue"><property name="text"><string>未知</string></property><property name="objectName"><string>armStateValue</string></property></widget></item></layout></item>
<item><layout class="QHBoxLayout" name="torqueLayout"><property name="spacing"><number>8</number></property><item><widget class="QPushButton" name="torqueOnButton"><property name="text"><string>使能</string></property></widget></item><item><widget class="QPushButton" name="torqueOffButton"><property name="text"><string>去使能</string></property></widget></item></layout></item>
<item><layout class="QFormLayout" name="motionForm"><property name="verticalSpacing"><number>8</number></property><item row="0" column="0"><widget class="QLabel" name="velocityLabel"><property name="text"><string>最大速度</string></property></widget></item><item row="0" column="1"><widget class="QDoubleSpinBox" name="velocitySpin"><property name="minimum"><double>0.010000000000000</double></property><property name="maximum"><double>10.000000000000000</double></property><property name="decimals"><number>2</number></property><property name="singleStep"><double>0.100000000000000</double></property><property name="suffix"><string> rad/s</string></property></widget></item><item row="1" column="0"><widget class="QLabel" name="accelerationLabel"><property name="text"><string>最大加速度</string></property></widget></item><item row="1" column="1"><widget class="QDoubleSpinBox" name="accelerationSpin"><property name="minimum"><double>0.010000000000000</double></property><property name="maximum"><double>10.000000000000000</double></property><property name="decimals"><number>2</number></property><property name="singleStep"><double>0.100000000000000</double></property><property name="suffix"><string> rad/s²</string></property></widget></item></layout></item>
<item><widget class="QPushButton" name="clearFaultButton"><property name="text"><string>清除故障</string></property></widget></item>
<item><spacer name="commandSpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>40</height></size></property></spacer></item>
<item><widget class="QFrame" name="zeroSeparator"><property name="frameShape"><enum>QFrame::HLine</enum></property><property name="styleSheet"><string notr="true">color:#e3e6ea;</string></property></widget></item>
<item><widget class="QLabel" name="zeroCalibrationTitle"><property name="text"><string>零位标定</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QComboBox" name="zeroJointCombo"><property name="toolTip"><string>选择需要将当前位置标定为零位的关节</string></property></widget></item>
<item><widget class="QPushButton" name="calibrateZeroButton"><property name="text"><string>设置选中关节零位</string></property><property name="toolTip"><string>调用 ArmService.calibrateZeroQ</string></property></widget></item>
<item><widget class="QPushButton" name="stopButton"><property name="minimumSize"><size><width>0</width><height>34</height></size></property><property name="text"><string>停止当前运动</string></property><property name="toolTip"><string>立即调用 ArmService.stopMotion</string></property><property name="objectName"><string>dangerButton</string></property></widget></item>
</layout></widget></item>
</layout>
</widget>
</item>
<item>
<widget class="QTabWidget" name="armTabs">
<property name="documentMode"><bool>true</bool></property><property name="currentIndex"><number>1</number></property>
<widget class="QWidget" name="jointControlTab"><attribute name="title"><string>关节控制</string></attribute><layout class="QVBoxLayout" name="jointControlTabLayout"><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="QSplitter" name="jointWorkspace"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="childrenCollapsible"><bool>false</bool></property>
<widget class="QFrame" name="targetsPanel"><property name="objectName"><string>panel</string></property><layout class="QVBoxLayout" name="targetsLayout"><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>14</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property><item><layout class="QHBoxLayout" name="targetsHeader"><property name="leftMargin"><number>16</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>16</number></property><property name="bottomMargin"><number>8</number></property><item><layout class="QVBoxLayout" name="targetTitles"><property name="spacing"><number>2</number></property><item><widget class="QLabel" name="targetsTitle"><property name="text"><string>MoveJ 关节目标</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item><item><widget class="QLabel" name="targetsSubtitle"><property name="text"><string>目标以度输入,发送时自动转换为弧度;示教模式下与模型同步</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item></layout></item><item><spacer name="targetsHeaderSpacer"><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="QPushButton" name="zeroButton"><property name="text"><string>目标值全部置零</string></property></widget></item></layout></item><item><widget class="QTableWidget" name="motionTable"><property name="rowCount"><number>7</number></property><property name="columnCount"><number>4</number></property></widget></item><item><layout class="QHBoxLayout" name="targetsFooter"><property name="leftMargin"><number>16</number></property><property name="topMargin"><number>10</number></property><property name="rightMargin"><number>16</number></property><property name="bottomMargin"><number>14</number></property><item><widget class="QLabel" name="safetyHint"><property name="text"><string>发送前请确认机械臂工作区无人且无障碍物</string></property><property name="objectName"><string>mutedLabel</string></property></widget></item><item><spacer name="targetsFooterSpacer"><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="QPushButton" name="sendMoveButton"><property name="minimumSize"><size><width>150</width><height>0</height></size></property><property name="text"><string>发送 MoveJ</string></property><property name="objectName"><string>primaryButton</string></property></widget></item></layout></item></layout></widget>
<widget class="QFrame" name="telemetryPanel"><property name="objectName"><string>panel</string></property><layout class="QHBoxLayout" name="telemetryLayout" stretch="3,1"><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>12</number></property><property name="rightMargin"><number>14</number></property><property name="bottomMargin"><number>12</number></property><item><layout class="QVBoxLayout" name="jointLayout"><item><widget class="QLabel" name="jointTitle"><property name="text"><string>ArmService 实时遥测</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item><item><widget class="QTableWidget" name="jointTable"><property name="rowCount"><number>7</number></property><property name="columnCount"><number>4</number></property></widget></item></layout></item><item><layout class="QVBoxLayout" name="poseLayout"><item><widget class="QLabel" name="poseTitle"><property name="text"><string>末端位姿</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item><item><widget class="QLabel" name="poseSubtitle"><property name="text"><string>PELVIS_S → R_FINGER_TIP</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item><item><widget class="QLabel" name="poseValue"><property name="text"><string>X --
Y --
Z --
RX --
RY --
RZ --</string></property><property name="objectName"><string>poseValue</string></property></widget></item><item><widget class="QLabel" name="updatedValue"><property name="text"><string>尚无遥测</string></property><property name="objectName"><string>mutedLabel</string></property></widget></item></layout></item></layout></widget>
</widget></item></layout></widget>
<widget class="QWidget" name="urdfTab">
<attribute name="title"><string>URDF 模型</string></attribute>
<layout class="QHBoxLayout" name="urdfTabLayout" stretch="1,0">
<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="UrdfViewerWidget" name="urdfViewer"><property name="minimumSize"><size><width>420</width><height>420</height></size></property></widget></item>
<item>
<widget class="QFrame" name="teachPanel">
<property name="minimumSize"><size><width>340</width><height>0</height></size></property>
<property name="maximumSize"><size><width>340</width><height>16777215</height></size></property>
<property name="objectName"><string>armTeachPanel</string></property>
<layout class="QVBoxLayout" name="teachPanelLayout">
<property name="spacing"><number>10</number></property>
<property name="leftMargin"><number>16</number></property>
<property name="topMargin"><number>16</number></property>
<property name="rightMargin"><number>16</number></property>
<property name="bottomMargin"><number>16</number></property>
<item><widget class="QLabel" name="teachTitle"><property name="text"><string>关节示教</string></property><property name="objectName"><string>sectionTitle</string></property></widget></item>
<item><widget class="QLabel" name="teachSubtitle"><property name="text"><string>拖动模型关节,确认后再发送到设备</string></property><property name="objectName"><string>panelSubtitle</string></property></widget></item>
<item><layout class="QHBoxLayout" name="teachModeLayout"><property name="spacing"><number>8</number></property><item><widget class="QPushButton" name="teachModeButton"><property name="text"><string>示教模式</string></property><property name="checkable"><bool>true</bool></property><property name="enabled"><bool>false</bool></property></widget></item><item><widget class="QPushButton" name="teachRestoreButton"><property name="text"><string>实际姿态</string></property><property name="enabled"><bool>false</bool></property></widget></item></layout></item>
<item><widget class="QFrame" name="teachSeparator"><property name="frameShape"><enum>QFrame::HLine</enum></property><property name="frameShadow"><enum>QFrame::Plain</enum></property></widget></item>
<item><widget class="QLabel" name="selectedJointTitle"><property name="text"><string>当前关节</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QLabel" name="teachSelectedLabel"><property name="text"><string>未选择关节</string></property><property name="objectName"><string>teachJointValue</string></property><property name="minimumSize"><size><width>0</width><height>30</height></size></property></widget></item>
<item><widget class="QLabel" name="positionTitle"><property name="text"><string>目标位置</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QDoubleSpinBox" name="teachPositionSpin"><property name="enabled"><bool>false</bool></property><property name="minimum"><double>-6.283185000000000</double></property><property name="maximum"><double>6.283185000000000</double></property><property name="decimals"><number>6</number></property><property name="singleStep"><double>0.010000000000000</double></property><property name="suffix"><string> rad</string></property><property name="minimumSize"><size><width>0</width><height>36</height></size></property></widget></item>
<item><widget class="QLabel" name="jointListTitle"><property name="text"><string>全部关节位置</string></property><property name="objectName"><string>eyebrow</string></property></widget></item>
<item><widget class="QTableWidget" name="teachJointTable"><property name="rowCount"><number>0</number></property><property name="columnCount"><number>2</number></property><property name="horizontalScrollBarPolicy"><enum>Qt::ScrollBarAlwaysOff</enum></property></widget></item>
<item><widget class="QLabel" name="teachHint"><property name="text"><string>位置单位为弧度;发送前请确认设备工作区安全。</string></property><property name="objectName"><string>mutedLabel</string></property><property name="wordWrap"><bool>true</bool></property></widget></item>
<item><widget class="QPushButton" name="teachSendButton"><property name="text"><string>发送当前位置</string></property><property name="objectName"><string>primaryButton</string></property><property name="enabled"><bool>false</bool></property><property name="minimumSize"><size><width>0</width><height>40</height></size></property></widget></item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets><customwidget><class>UrdfViewerWidget</class><extends>QWidget</extends><header>src/urdfviewerwidget.h</header><container>1</container></customwidget></customwidgets>
<resources/>
<connections/>
</ui>