update 更新添加各种中间点位

This commit is contained in:
FrankCV2048
2024-10-11 23:05:08 +08:00
parent 47f8d81b7f
commit 2af2bff5e8
6 changed files with 142 additions and 34 deletions

View File

@ -21,15 +21,21 @@ class FeedStatus(IntEnum):
FSafeF = 6
FFeedP = 7
FBroken = 8
FFinished = 9
FCut = 9
FShake = 10
FDropBag = 11
FFinished = 12
class FeedLine:
def __init__(self,name,safe_position:Real_Position,photo_position:Real_Position,mid_position:Real_Position,broken_position:Real_Position,feed_position:Real_Position):
def __init__(self,name,safe_position:Real_Position,photo_position:Real_Position,mid_position:Real_Position,broken1_position:Real_Position,broken2_position:Real_Position,drop_bag_position:Real_Position,zip_bag_position:Real_Position,feed_position:Real_Position):
self.safe_position = safe_position
self.photo_position = photo_position
self.feed_position = feed_position
self.mid_position = mid_position
self.broken_position = broken_position
self.broken1_position = broken1_position
self.broken2_position = broken2_position
self.drop_bag_position = drop_bag_position
self.zip_bag_position = zip_bag_position
self.take_position = None
self.name = name
@ -150,35 +156,72 @@ class Feeding():
log.log_message(logging.INFO, Constant.str_feed_feed)
if self.feedConfig.feedLine.feed_position.compare(real_position):
self.feedStatus = FeedStatus.FBroken
self.sendTargPosition(self.feedConfig.feedLine.broken_position)
self.sendTargPosition(self.feedConfig.feedLine.broken1_position)
pass #破袋
elif self.feedStatus==FeedStatus.FBroken:
log.log_message(logging.INFO, Constant.str_feed_broken)
if self.feedConfig.feedLine.broken_position.compare(real_position):
self.feedConfig.num = self.feedConfig.num-1
if self.feedConfig.num == 0:
self.feedStatus=FeedStatus.FNone
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
self.init_detection_image()
log.log_message(logging.INFO, Constant.str_feed_finish)
if self.feedConfig.feedLine.broken1_position.compare(real_position):
self.sendTargPosition(self.feedConfig.feedLine.broken2_position)
if self.feedConfig.feedLine.broken2_position.compare(real_position):
current_position = Real_Position().init_position(0,0,0,0,0,0)
current_position.X = self.robotClient.status_model.axis_0
current_position.Y = self.robotClient.status_model.axis_1
current_position.Z = self.robotClient.status_model.axis_2
current_position.U = self.robotClient.status_model.axis_3
current_position.V = self.robotClient.status_model.axis_4
current_position.W = self.robotClient.status_model.axis_5
for i in range(8):
if (i % 2 == 0) ^ (i >= 3): ## 过一半取消
c1 = current_position.U - 5
self.sendTargPosition(c1, MoveType.AXIS, speed=Constant.shake_speed)
else:
c1 = current_position.U + 5
self.sendTargPosition(c1, MoveType.AXIS, speed=Constant.shake_speed)
if True: # 延迟判断如果最后点位延迟1s则认为阶段完成
self.feedStatus = FeedStatus.FDropBag
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
elif self.feedStatus == FeedStatus.FDropBag:
log.log_message(logging.INFO, Constant.str_feed_drop)
if self.feedConfig.feedLine.safe_position.compare(real_position):
if self.feedConfig.num - 1 != 0:
self.sendTargPosition(self.feedConfig.feedLine.drop_bag_position)
else:
log.log_message(logging.INFO, f'{Constant.str_feed_feed_num}{self.feedConfig.num}')
self.feedStatus = FeedStatus.FSafeP
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
self.sendTargPosition(self.feedConfig.feedLine.zip_bag_position)
pass
if self.feedConfig.feedLine.drop_bag_position.compare(real_position):
# TODO 松开吸嘴
self.feedConfig.num = self.feedConfig.num - 1
log.log_message(logging.INFO, f'{Constant.str_feed_feed_num}{self.feedConfig.num}')
self.feedStatus = FeedStatus.FSafeP
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
if self.feedConfig.feedLine.zip_bag_position.compare(real_position):
log.log_message(logging.INFO, Constant.str_feed_zip_bag)
# TODO 松开吸嘴 是否需要判断放没放开不
self.feedStatus = FeedStatus.FNone
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
self.init_detection_image()
log.log_message(logging.INFO, Constant.str_feed_finish)
pass
def sendTargPosition(self,real_position):
def sendTargPosition(self,real_position,move_type:MoveType=MoveType.WORLD ,speed = Constant.speed):
from Model.RobotModel import Instruction
position_instruction = Instruction()
position_instruction.speed = Constant.speed
position_instruction.speed = speed
position_instruction.m0 = real_position.X
position_instruction.m1 = real_position.Y
position_instruction.m2 = real_position.Z
position_instruction.m3 = real_position.U
position_instruction.m4 = real_position.V
position_instruction.m5 = real_position.W
position_instruction.action = MoveType.WORLD.value
position_instruction.action = move_type.value
instruction_command = CMDInstructRequest()
instruction_command.instructions.append(position_instruction)
request_command = instruction_command.toString()
@ -196,6 +239,8 @@ class Feeding():
self.robotClient.add_sendQuene(request_command)
pass
def safe_check_columns(self):
return True
pass

View File

@ -18,19 +18,38 @@ midposition_z = 406.721
midposition_u = -3.256
midposition_v = 7.334
midposition_w = -4.307
brokenposition_x = 357.269
brokenposition_y = 478.874
brokenposition_z = 209.979
brokenposition_u = -3.100
brokenposition_v = -3.198
brokenposition_w = 49.945
brokenposition1_x = 357.269
brokenposition1_y = 478.874
brokenposition1_z = 209.979
brokenposition1_u = -3.100
brokenposition1_v = -3.198
brokenposition1_w = 49.945
brokenposition2_x = 357.269
brokenposition2_y = 478.874
brokenposition2_z = 209.979
brokenposition2_u = -3.100
brokenposition2_v = -3.198
brokenposition2_w = 49.945
dropBagposition_x = 357.269
dropBagposition_y = 478.874
dropBagposition_z = 209.979
dropBagposition_u = -3.100
dropBagposition_v = -3.198
dropBagposition_w = 49.945
zipBagposition_x = 357.269
zipBagposition_y = 478.874
zipBagposition_z = 209.979
zipBagposition_u = -3.100
zipBagposition_v = -3.198
zipBagposition_w = 49.945
feedposition_x = 315.549
feedposition_y = 427.090
feedposition_z = 209.985
feedposition_u = -2.793
feedposition_v = -1.829
feedposition_w = 50.000
dropDelay_time = 3
shakeDelay_time = 6
[FeedLine2]
name = 反应釜2
safeposition_x = 0.0
@ -51,4 +70,6 @@ feedposition_z = 0.0
feedposition_u = 0.0
feedposition_v = 0.0
feedposition_w = 0.0
dropDelay_time = 3
shakeDelay_time = 6

View File

@ -3,6 +3,7 @@ import os
position_accuracy = 0.05
manual_adjust_accuracy = 1
speed = 10
shake_speed = 20
feedLine_set_section = 'FeedLine'
feedLine_set_file = f'.{os.sep}Config{os.sep}feedLine.ini'
set_ini = 'Seting.ini'
@ -24,6 +25,8 @@ str_feed_mid = '移动到中位位置'
str_feed_safe = '移动到安全位置'
str_feed_takePhoto = '拍照'
str_feed_broken = '移动到破袋位置'
str_feed_broken_bag = '划袋'
str_feed_drop = '移动扔空袋'
str_feed_takePhoto_fail = '识别图像失败'
str_feed_takePhoto_success = '识别图像成功'
str_feed_covert_success = '转换坐标成功'
@ -34,6 +37,7 @@ str_feed_finish = '投料结束'
str_feed_take_success = '抓料成功'
str_feed_take_fail = '抓料失败'
str_feed_feed_num = '剩余投料次数:'
str_feed_zip_bag = '移动到压缩袋位置'
str_sys_switch_tool = '切换到工具坐标'
str_sys_start_tool = '切换到自动运行状态'
str_sys_clearAlarm = '清除报警'
@ -48,3 +52,4 @@ str_tcp_robot_data_error = '数据解析错误'
str_tcp_connect_no_reply = '无回复'
str_tcp_connect_error = 'tcp连接错误'
str_tcp_reconnect = '重连中'

View File

@ -4822,3 +4822,13 @@ Warning 2024-09-19 20:04:10:0204 DevID:Virtual USB3 Vision Source-Line:MvCamer
Warning 2024-09-19 20:04:10:0204 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L0996) ProcessName:python.exe(14692) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_VERSION] failed, Ret[0x80000001]
Warning 2024-09-19 20:04:10:0204 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L1000) ProcessName:python.exe(14692) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_MANUFACTURER] failed, Ret[0x80000001]
Warning 2024-09-19 20:04:10:0204 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L1004) ProcessName:python.exe(14692) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_USER_DEFINED_NAME] failed, Ret[0x80000001]
Error 2024-10-11 21:23:05:0716 DevID: Source-Line:MvCameraControl.dll(OtherLoadLibrary.cpp-L0709) ProcessName:python.exe(9244) Description:[LoadSRAllFunctions]hSRModule is NULL, Ret[0x8000000c]
Warning 2024-10-11 21:23:05:0729 DevID: Source-Line:MvCameraControl.dll(GenTLLoadLibraryEx.cpp-L0345) ProcessName:python.exe(9244) Description:[LoadCtiLibInter]MV_GCSetConfigIntValue is NULL, CTI path[D:\environment\envs\UICreater\lib\site-packages\MvProducerVIR.dll]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual GigE Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L0992) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_MODEL] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual GigE Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L0996) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_VERSION] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual GigE Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L1000) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_MANUFACTURER] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual GigE Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L1004) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_USER_DEFINED_NAME] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L0992) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_MODEL] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L0996) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_VERSION] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L1000) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_MANUFACTURER] failed, Ret[0x80000001]
Warning 2024-10-11 21:23:05:0729 DevID:Virtual USB3 Vision Source-Line:MvCameraControl.dll(GenTLManager.cpp-L1004) ProcessName:python.exe(9244) Description:[GetInterfaceInfos]TLGetInterfaceInfo[INTERFACE_INFO_USER_DEFINED_NAME] failed, Ret[0x80000001]

View File

@ -28,6 +28,7 @@ photo_z3 = 0
LineCount=2
[Camera_Feed]
IPAddress=127.0.0.1

46
app.py
View File

@ -190,8 +190,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
(int(self.configReader.get('Robot_Feed', 'photo_x3')),
int(self.configReader.get('Robot_Feed', 'photo_y3')),int(self.configReader.get('Robot_Feed', 'photo_z3')))
]
self.robotClient = RobotClient(ip, port, photo_locs,self.command_position_quene, self.status_address)
dropDelay_time = int(self.configReader.get('Robot_Feed', 'dropDelay_time'))
self.robotClient = RobotClient(ip, port, photo_locs, self.command_position_quene, self.status_address)
self.feeding = Feeding(self.robotClient, self.detection) # 临时
self.last_time = time.time()
@ -286,8 +286,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
safe_position = Real_Position()
photo_position = Real_Position()
mid_position = Real_Position()
broken_position = Real_Position()
broken_position1 = Real_Position()
broken_position2 = Real_Position()
feed_position = Real_Position()
dropBag_position = Real_Position()
zipBag_poistion = Real_Position()
safe_position.X = float(self.configReader.get(line_str, 'SafePosition_x', fallback=0))
safe_position.Y = float(self.configReader.get(line_str, 'SafePosition_y', fallback=0))
@ -310,12 +314,32 @@ class MainWindow(QMainWindow, Ui_MainWindow):
mid_position.V = float(self.configReader.get(line_str, 'MidPosition_v', fallback=0))
mid_position.W = float(self.configReader.get(line_str, 'MidPosition_w', fallback=0))
broken_position.X = float(self.configReader.get(line_str, 'BrokenPosition_x', fallback=0))
broken_position.Y = float(self.configReader.get(line_str, 'BrokenPosition_y', fallback=0))
broken_position.Z = float(self.configReader.get(line_str, 'BrokenPosition_z', fallback=0))
broken_position.U = float(self.configReader.get(line_str, 'BrokenPosition_u', fallback=0))
broken_position.V = float(self.configReader.get(line_str, 'BrokenPosition_v', fallback=0))
broken_position.W = float(self.configReader.get(line_str, 'BrokenPosition_w', fallback=0))
broken_position1.X = float(self.configReader.get(line_str, 'BrokenPosition_x', fallback=0))
broken_position1.Y = float(self.configReader.get(line_str, 'BrokenPosition_y', fallback=0))
broken_position1.Z = float(self.configReader.get(line_str, 'BrokenPosition_z', fallback=0))
broken_position1.U = float(self.configReader.get(line_str, 'BrokenPosition_u', fallback=0))
broken_position1.V = float(self.configReader.get(line_str, 'BrokenPosition_v', fallback=0))
broken_position1.W = float(self.configReader.get(line_str, 'BrokenPosition_w', fallback=0))
broken_position2.X = float(self.configReader.get(line_str, 'BrokenPosition2_x', fallback=0))
broken_position2.Y = float(self.configReader.get(line_str, 'BrokenPosition2_y', fallback=0))
broken_position2.Z = float(self.configReader.get(line_str, 'BrokenPosition2_z', fallback=0))
broken_position2.U = float(self.configReader.get(line_str, 'BrokenPosition2_u', fallback=0))
broken_position2.V = float(self.configReader.get(line_str, 'BrokenPosition2_v', fallback=0))
broken_position2.W = float(self.configReader.get(line_str, 'BrokenPosition2_w', fallback=0))
dropBag_position.X = float(self.configReader.get(line_str, 'DropBagPosition_x', fallback=0))
dropBag_position.Y = float(self.configReader.get(line_str, 'DropBagPosition_y', fallback=0))
dropBag_position.Z = float(self.configReader.get(line_str, 'DropBagPosition_z', fallback=0))
dropBag_position.U = float(self.configReader.get(line_str, 'DropBagPosition_u', fallback=0))
dropBag_position.V = float(self.configReader.get(line_str, 'DropBagPosition_v', fallback=0))
dropBag_position.W = float(self.configReader.get(line_str, 'DropBagPosition_w', fallback=0))
zipBag_poistion.X = float(self.configReader.get(line_str, 'ZipBagPosition_x', fallback=0))
zipBag_poistion.Y = float(self.configReader.get(line_str, 'ZipBagPosition_y', fallback=0))
zipBag_poistion.Z = float(self.configReader.get(line_str, 'ZipBagPosition_z', fallback=0))
zipBag_poistion.U = float(self.configReader.get(line_str, 'ZipBagPosition_u', fallback=0))
zipBag_poistion.V = float(self.configReader.get(line_str, 'ZipBagPosition_v', fallback=0))
zipBag_poistion.W = float(self.configReader.get(line_str, 'ZipBagPosition_w', fallback=0))
feed_position.X = float(self.configReader.get(line_str, 'FeedPosition_x', fallback=0))
feed_position.Y = float(self.configReader.get(line_str, 'FeedPosition_y', fallback=0))
@ -324,10 +348,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
feed_position.V = float(self.configReader.get(line_str, 'FeedPosition_v', fallback=0))
feed_position.W = float(self.configReader.get(line_str, 'FeedPosition_w', fallback=0))
name = self.configReader.get(line_str, 'Name', fallback='未命名')
self.feedLine_dict[f'{Constant.feedLine_set_section}{i + 1}'] = FeedLine(name, safe_position,
photo_position, mid_position,
broken_position, feed_position)
broken_position1,broken_position2,dropBag_position,zipBag_poistion,feed_position)
self.init_seting_frame()
self.updateUI_Select_Line()
pass