|
@@ -14,6 +14,8 @@ import dijkstra.Map as mp
|
|
|
from custom_define import ControllerStatus
|
|
|
import MapGLWidget as viewer
|
|
|
import dijkstra.Map as Map
|
|
|
+
|
|
|
+
|
|
|
class ControlFrame(QFrame):
|
|
|
threadPool_ = ThreadPoolExecutor(5)
|
|
|
last_beg = "**"
|
|
@@ -31,15 +33,16 @@ class ControlFrame(QFrame):
|
|
|
cmdTopic = config['cmdTopic']
|
|
|
robotColor = config['robotColor']
|
|
|
|
|
|
-
|
|
|
self.all_nodes_ = []
|
|
|
for node in self.street_nodes_:
|
|
|
self.all_nodes_.append(node)
|
|
|
for node in self.space_nodes_:
|
|
|
self.all_nodes_.append(node)
|
|
|
|
|
|
- rpc=config['rpc']
|
|
|
- self.robot_ = Robot(rpc,self.label_)
|
|
|
+ self.select_map = None
|
|
|
+ self.default_wheel_base = 2.6
|
|
|
+ rpc = config['rpc']
|
|
|
+ self.robot_ = Robot(rpc, self.label_)
|
|
|
self.robot_.connect(id, ip, port, user, pawd)
|
|
|
self.robot_.SetSubDataTopic(subtopics, self.messageArrived)
|
|
|
self.robot_.SetCmdTopic(cmdTopic)
|
|
@@ -110,7 +113,7 @@ class ControlFrame(QFrame):
|
|
|
self.wheelbasestatic.setText("轴距:")
|
|
|
self.wheelbasestatic.setGeometry(260, 100, 40, 30)
|
|
|
self.WheelBaseEdit = QLineEdit(self)
|
|
|
- self.WheelBaseEdit.setText("2.8")
|
|
|
+ self.WheelBaseEdit.setText(str(self.default_wheel_base))
|
|
|
self.WheelBaseEdit.setGeometry(300, 100, 50, 30)
|
|
|
|
|
|
self.btnModelCheck = QCheckBox("整体协调", self)
|
|
@@ -140,15 +143,20 @@ class ControlFrame(QFrame):
|
|
|
self.btnAutoBegChanged.setGeometry(260, 10, 100, 20)
|
|
|
self.btnAutoBegChanged.setCheckState(Qt.Checked)
|
|
|
|
|
|
- def Update(self):
|
|
|
+ self.select_map_Qc = QComboBox(self)
|
|
|
+ self.select_map_Qc.setGeometry(360, 10, 100, 20)
|
|
|
+ maps = ["Front", "Back", "Base"]
|
|
|
+ self.select_map_Qc.addItems(maps)
|
|
|
+ self.select_map_Qc.activated.connect(self.select_map_QcChanged)
|
|
|
|
|
|
+ def Update(self):
|
|
|
if self.robot_.timedRobotStatu_.timeout() == False:
|
|
|
x = self.robot_.timedRobotStatu_.statu.x
|
|
|
y = self.robot_.timedRobotStatu_.statu.y
|
|
|
yaw = self.robot_.timedRobotStatu_.statu.theta
|
|
|
self.posestatic.setText("x : %.3f\ny : %.3f\nΘ : %.2f°" % (x, y, yaw * 180 / math.pi))
|
|
|
- if self.btnAutoBegChanged.checkState()==Qt.Checked:
|
|
|
- [label,pt]=mp.MapManager().findNeastNode("Base",[x,y])
|
|
|
+ if self.btnAutoBegChanged.checkState() == Qt.Checked:
|
|
|
+ [label, pt] = mp.MapManager().findNeastNode("Base", [x, y])
|
|
|
self.begQc.setCurrentText(label)
|
|
|
|
|
|
statu = "min-width: 32px; min-height: 32px;max-width:32px;\
|
|
@@ -195,8 +203,8 @@ class ControlFrame(QFrame):
|
|
|
self.begId_ = self.robot_.begId_
|
|
|
self.targetId_ = self.robot_.targetId_
|
|
|
djks_map = mp.MapManager()
|
|
|
- beg_node = djks_map.GetVertex("Base",self.begId_)
|
|
|
- end_node = djks_map.GetVertex("Base",self.targetId_)
|
|
|
+ beg_node = djks_map.GetVertex("Base", self.begId_)
|
|
|
+ end_node = djks_map.GetVertex("Base", self.targetId_)
|
|
|
if beg_node is not None:
|
|
|
self.begQc.setCurrentText(self.begId_)
|
|
|
if end_node is not None:
|
|
@@ -211,10 +219,11 @@ class ControlFrame(QFrame):
|
|
|
# self.btnAutoDirect.setCheckState(Qt.Unchecked)
|
|
|
|
|
|
def AutoCheck(self):
|
|
|
- if self.btnAuto.checkState()==Qt.Checked:
|
|
|
- self.robot_.autoTest_=True
|
|
|
+ if self.btnAuto.checkState() == Qt.Checked:
|
|
|
+ self.robot_.autoTest_ = True
|
|
|
else:
|
|
|
- self.robot_.autoTest_=False
|
|
|
+ self.robot_.autoTest_ = False
|
|
|
+
|
|
|
def ClampClick(self):
|
|
|
if self.robot_.IsClampClosed() == False:
|
|
|
self.threadPool_.submit(self.robot_.ClampClose)
|
|
@@ -239,31 +248,31 @@ class ControlFrame(QFrame):
|
|
|
id1 = self.begQc.currentText()
|
|
|
id2 = self.endStreetQc.currentText()
|
|
|
if not id1 == "------" and not id2 == "------":
|
|
|
- self.robot_.GeneratePath(id1, id2,"Back")
|
|
|
- self.begId_=id1
|
|
|
- self.targetId_=id2
|
|
|
+ self.robot_.GeneratePath(id1, id2, self.select_map)
|
|
|
+ self.begId_ = id1
|
|
|
+ self.targetId_ = id2
|
|
|
|
|
|
def endSpaceQCChanged(self):
|
|
|
id1 = self.begQc.currentText()
|
|
|
id2 = self.endSpaceQc.currentText()
|
|
|
if not id1 == "------" and not id2 == "------":
|
|
|
- self.robot_.GeneratePath(id1, id2,"Back")
|
|
|
- self.begId_=id1
|
|
|
- self.targetId_=id2
|
|
|
+ self.robot_.GeneratePath(id1, id2, self.select_map)
|
|
|
+ self.begId_ = id1
|
|
|
+ self.targetId_ = id2
|
|
|
|
|
|
def btnSendClick(self):
|
|
|
- if self.btnAuto.checkState()==Qt.Checked:
|
|
|
+ if self.btnAuto.checkState() == Qt.Checked:
|
|
|
if self.robot_.IsMainModeStatu():
|
|
|
self.threadPool_.submit(self.robot_.AutoTestNavClamp,
|
|
|
self.begId_, self.targetId_)
|
|
|
else:
|
|
|
print("agv not in main statu")
|
|
|
else:
|
|
|
- autoDirect=False
|
|
|
- if self.btnAutoDirect.checkState()==Qt.Checked:
|
|
|
+ autoDirect = False
|
|
|
+ if self.btnAutoDirect.checkState() == Qt.Checked:
|
|
|
print("自由方向")
|
|
|
- autoDirect=True
|
|
|
- self.robot_.GeneratePath(self.begId_, self.targetId_,"Back")
|
|
|
+ autoDirect = True
|
|
|
+ self.robot_.GeneratePath(self.begId_, self.targetId_, self.select_map)
|
|
|
self.threadPool_.submit(self.robot_.Navigatting,
|
|
|
self.begId_, self.targetId_, autoDirect, float(self.WheelBaseEdit.text()))
|
|
|
|
|
@@ -272,11 +281,16 @@ class ControlFrame(QFrame):
|
|
|
self.threadPool_.submit(self.robot_.CancelNavTask)
|
|
|
self.btnAuto.setCheckState(Qt.Unchecked)
|
|
|
|
|
|
+ def select_map_QcChanged(self):
|
|
|
+ self.select_map = self.select_map_Qc.currentText()
|
|
|
+ print("changed selected map to" + self.select_map)
|
|
|
+
|
|
|
|
|
|
class CountFrame(QFrame):
|
|
|
def __init__(self):
|
|
|
QFrame.__init__(self)
|
|
|
|
|
|
+ self.default_wheel_base = 2.6
|
|
|
self.InitUI()
|
|
|
self.timer_ = QTimer()
|
|
|
self.timer_.timeout.connect(self.UpdateUI)
|
|
@@ -307,14 +321,12 @@ class CountFrame(QFrame):
|
|
|
self.btnBaseCheck.setGeometry(310, 40, 100, 30)
|
|
|
self.btnBaseCheck.clicked.connect(self.FrontChecked)
|
|
|
|
|
|
-
|
|
|
def FrontChecked(self):
|
|
|
- wheelBase=2.8
|
|
|
+ # wheelBase = self.default_wheel_base
|
|
|
maps = []
|
|
|
if self.btnFrontCheck.checkState() == Qt.Checked:
|
|
|
maps.append("Front")
|
|
|
if self.btnBackCheck.checkState() == Qt.Checked:
|
|
|
-
|
|
|
maps.append("Back")
|
|
|
if self.btnMainCheck.checkState() == Qt.Checked:
|
|
|
maps.append("Main")
|