class RobotApp(Ui_MainWindow): def setupUi(self, MainWindow): super().setupUi(MainWindow) self.robot_controller = RobotController() self.robot_controller.connect_feedback(self.feedback_changed) self.robot_controller.connect_log(self.update_log) self.pbUp.clicked.connect(self.pbUp_clicked) self.pbDown.clicked.connect(self.pbDown_clicked) self.pbResetError.clicked.connect(self.pbResetError_clicked) self.pbPauseMotion.clicked.connect(self.pbPauseMotion_clicked) self.pbResumeMotion.clicked.connect(self.pbResumeMotion_clicked) self.pbClearMotion.clicked.connect(self.pbClearMotion_clicked) self.sldAngSpeedValue.valueChanged.connect(self.joint_speed_slided) self.sldCartSpeedValue.valueChanged.connect(self.cart_speed_slided) self.pbReadCurrAng.clicked.connect(self.pbReadCurrAng_clicked) self.pbMoveNewAngVal.clicked.connect(self.pbMoveNewAngVal_clicked) self.pbReadCurrCart.clicked.connect(self.pbReadCurrCart_clicked) self.pbMoveNewCartVal.clicked.connect(self.pbMoveNewCartVal_clicked) for i in range(0, 6): pbTheta_inc = getattr(self, f'pbTheta{i+1}_inc') pbTheta_dec = getattr(self, f'pbTheta{i+1}_dec') pbTheta_inc.clicked.connect(partial(self.pbTheta_inc_clicked, i)) pbTheta_dec.clicked.connect(partial(self.pbTheta_dec_clicked, i)) for i in range(0, 6): pbCart_inc = getattr(self, f'pbCart{i+1}_inc') pbCart_dec = getattr(self, f'pbCart{i+1}_dec') pbCart_inc.clicked.connect(partial(self.pbCart_inc_clicked, i)) pbCart_dec.clicked.connect(partial(self.pbCart_dec_clicked, i)) #............................................................................... # # JOINTS # # ............................................................................... # Used to save joints values before they change def load_lEditAngle(self): MoveJoint_var[0] = float(self.lblAngle1.text()) MoveJoint_var[1] = float(self.lblAngle2.text()) MoveJoint_var[2] = float(self.lblAngle3.text()) MoveJoint_var[3] = float(self.lblAngle4.text()) MoveJoint_var[4] = float(self.lblAngle5.text()) MoveJoint_var[5] = float(self.lblAngle6.text()) def pbTheta_inc_clicked(self, index): self.move_joints(index, 1) def pbTheta_dec_clicked(self, index): self.move_joints(index, -1) # Read the actual position values def pbReadCurrAng_clicked(self): self.lEditAngle1.setText (self.lblAngle1.text()) self.lEditAngle2.setText (self.lblAngle2.text()) self.lEditAngle3.setText (self.lblAngle3.text()) self.lEditAngle4.setText (self.lblAngle4.text()) self.lEditAngle5.setText (self.lblAngle5.text()) self.lEditAngle6.setText (self.lblAngle6.text()) # Moves to the new values def pbMoveNewAngVal_clicked(self): MoveJoint_var[0] = float(self.lEditAngle1.text()) MoveJoint_var[1] = float(self.lEditAngle2.text()) MoveJoint_var[2] = float(self.lEditAngle3.text()) MoveJoint_var[3] = float(self.lEditAngle4.text()) MoveJoint_var[4] = float(self.lEditAngle5.text()) MoveJoint_var[5] = float(self.lEditAngle6.text()) self.robot_controller.move_joints(*MoveJoint_var) self.lEditAngle1.setText("0") self.lEditAngle2.setText("0") self.lEditAngle3.setText("0") self.lEditAngle4.setText("0") self.lEditAngle5.setText("0") self.lEditAngle6.setText("0") # Set speed value for joint motion def joint_speed_slided(self): AngSpeed = self.sldAngSpeedValue.value() self.robot_controller.set_joint_vel(int(AngSpeed)) # Execute joint motion def move_joints(self, index, direction): angles = [0, 0, 0, 0, 0, 0] angles[index] = direction * self.sldAngIncDecValue.value() self.robot_controller.move_jointsDelta(*angles) #............................................................................... # # CARTESIANS # # ............................................................................... def pbCart_inc_clicked(self, index): self.move_linear(index, 1) def pbCart_dec_clicked(self, index): self.move_linear(index, -1) # Set speed value for linear motions def cart_speed_slided(self): CartSpeed = self.sldCartSpeedValue.value() self.robot_controller.set_cart_lin_vel(CartSpeed) # Execute linear motion def move_linear(self, index, direction): coords = [0, 0, 0, 0, 0, 0] coords[index] = direction * self.sldCartIncDecValue.value() self.robot_controller.move_linearDelta(*coords) # Read the actual position values def pbReadCurrCart_clicked(self): self.lEditCart1.setText (self.lblCart1.text()) self.lEditCart2.setText (self.lblCart2.text()) self.lEditCart3.setText (self.lblCart3.text()) self.lEditCart4.setText (self.lblCart4.text()) self.lEditCart5.setText (self.lblCart5.text()) self.lEditCart6.setText (self.lblCart6.text()) # Moves to the new values def pbMoveNewCartVal_clicked(self): MoveLin_var[0] = float(self.lEditCart1.text()) MoveLin_var[1] = float(self.lEditCart2.text()) MoveLin_var[2] = float(self.lEditCart3.text()) MoveLin_var[3] = float(self.lEditCart4.text()) MoveLin_var[4] = float(self.lEditCart5.text()) MoveLin_var[5] = float(self.lEditCart6.text()) self.robot_controller.move_lin(*MoveLin_var) self.lEditCart1.setText("0") self.lEditCart2.setText("0") self.lEditCart3.setText("0") self.lEditCart4.setText("0") self.lEditCart5.setText("0") self.lEditCart6.setText("0") self.tableWidget.setColumnWidth(1,50) self.tableWidget.setColumnWidth(2,50) self.tableWidget.setColumnWidth(3,50) self.tableWidget.setColumnWidth(4,50) self.tableWidget.setColumnWidth(5,50) self.tableWidget.setColumnWidth(6,50) item = QTableWidgetItem() item.setText("100.000") self.tableWidget.setItem(3,1,item) #............................................................................... # # BUTTONS # # ............................................................................... # Commands the def up def pbUp_clicked(self): self.robot_controller.up() # Commands the def down def pbDown_clicked(self): self.robot_controller.down() #............................................................................... # # COMMANDS # # ............................................................................... # def get_joints(self, t1, t2, t3, t4, t5, t6): # return self.mecarobot.run('GetJoints', [t1, t2, t3, t4, t5, t6]) def update_log(self, direction, message): if direction == 'in': self.textedit_log.insertHtml(f'<span>{message}</span><br>') else: self.textedit_log.insertHtml(f'<span style="color: gray; font-style: italic;">{message}</span><br>') def feedback_changed(self, code, values): if code == '3007': self.lblAngle1.setText(f'{values[0]:.3f}') self.lblAngle2.setText(f'{values[1]:.3f}') self.lblAngle3.setText(f'{values[2]:.3f}') self.lblAngle4.setText(f'{values[3]:.3f}') self.lblAngle5.setText(f'{values[4]:.3f}') self.lblAngle6.setText(f'{values[5]:.3f}') for i in range(0, 6): MoveJoint_var[i]=values[i] if code == '3010': self.lblCart1.setText(f'{values[0]:.3f}') self.lblCart2.setText(f'{values[1]:.3f}') self.lblCart3.setText(f'{values[2]:.3f}') self.lblCart4.setText(f'{values[3]:.3f}') self.lblCart5.setText(f'{values[4]:.3f}') self.lblCart6.setText(f'{values[5]:.3f}') def pbResetError_clicked(self): self.robot_controller.reseterror() def pbClearMotion_clicked(self): self.robot_controller.clear_motion() def pbPauseMotion_clicked(self): self.robot_controller.pause_motion() def pbResumeMotion_clicked(self): self.robot_controller.resume_motion()