From aa9fd3469bcbf2ccbb503e3f56598da4e84febee Mon Sep 17 00:00:00 2001 From: cdeyw <827523911@qq.com> Date: Thu, 16 Jan 2025 12:10:36 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=B2=BF=E6=B3=95?= =?UTF-8?q?=E5=90=91=E9=87=8F=E6=96=B9=E5=90=91=E8=BF=90=E5=8A=A8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 + .idea/AutoControlSystem.iml | 12 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + Trace/handeye_calibration.py | 10 +- log/log.log | 1597 +---------------- log/log.log.2024-12-14 | 40 + 9 files changed, 123 insertions(+), 1566 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/AutoControlSystem.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 log/log.log.2024-12-14 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..359bb53 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml diff --git a/.idea/AutoControlSystem.iml b/.idea/AutoControlSystem.iml new file mode 100644 index 0000000..042213b --- /dev/null +++ b/.idea/AutoControlSystem.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0b962ea --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ab07734 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Trace/handeye_calibration.py b/Trace/handeye_calibration.py index 1c5c2fd..619fa55 100644 --- a/Trace/handeye_calibration.py +++ b/Trace/handeye_calibration.py @@ -54,12 +54,12 @@ def R_matrix(x,y,z,u,v,w): # 图像识别结果:xyz和法向量 -def getPosition(x,y,z,a,b,c,rotation,points): +def getPosition(x,y,z,a,b,c,points): target = np.asarray([x, y, z,1]) camera2robot = np.loadtxt('./Trace/com_pose2.txt', delimiter=' ') #相对目录且分隔符采用os.sep # robot2base = rotation # camera2base = robot2base @ camera2robot - target_position = np.dot(camera2robot, target) + target_position_raw = np.dot(camera2robot, target) corner_points_camera = np.asarray(points) corner_points_base = np.dot(camera2robot[:3, :3], corner_points_camera.T).T + camera2robot[:3, 3] @@ -76,8 +76,14 @@ def getPosition(x,y,z,a,b,c,rotation,points): # 单位化方向向量 short_edge_direction = edge_vector / np.linalg.norm(edge_vector) + delta = -30#沿法向量方向抬高和压低,-指表示抬高,+值表示压低 angle = np.asarray([a,b,c]) noraml = camera2robot[:3, :3]@angle + normal_vector = noraml / np.linalg.norm(noraml) + target_position = target_position_raw[:3] + delta * normal_vector # target_position 沿法向量移动 + noraml_base = vec2rpy(noraml,short_edge_direction) return target_position,noraml_base + + diff --git a/log/log.log b/log/log.log index 9138c0a..feedae0 100644 --- a/log/log.log +++ b/log/log.log @@ -1,1564 +1,33 @@ -2025-01-11 16:55:33 - INFO - ϵͳ -2025-01-11 16:56:07 - INFO - ϵͳ -2025-01-11 16:56:39 - ERROR - ޻ظ -2025-01-11 16:56:39 - INFO - -2025-01-11 16:56:45 - ERROR - ޻ظ -2025-01-11 16:56:45 - INFO - -2025-01-11 16:56:50 - ERROR - ޻ظ -2025-01-11 16:56:50 - INFO - -2025-01-11 16:56:55 - ERROR - ޻ظ -2025-01-11 16:56:55 - INFO - -2025-01-11 16:57:01 - ERROR - ޻ظ -2025-01-11 16:57:01 - INFO - -2025-01-11 16:57:06 - ERROR - ޻ظ -2025-01-11 16:57:06 - INFO - -2025-01-11 16:57:12 - ERROR - ޻ظ -2025-01-11 16:57:12 - INFO - -2025-01-11 16:57:14 - INFO - ƶλ:ֱߣm0:7.0-m2:50.0-m3:1.0-m4:7.0-m5:50.0-m6:1.0 -2025-01-11 16:57:14 - INFO - {"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"1","instructions":[{"oneshot":"1","action":"10","m0":"7.0","m1":"50.0","m2":"1.0","m3":"7.0","m4":"50.0","m5":"1.0","ckStatus":"0x3F","speed":"50","delay":"0","smooth":"0","tool":"2"}]} -2025-01-11 16:57:17 - ERROR - ޻ظ -2025-01-11 16:57:17 - INFO - -2025-01-11 16:57:22 - ERROR - ޻ظ -2025-01-11 16:57:23 - INFO - -2025-01-11 16:57:28 - ERROR - ޻ظ -2025-01-11 16:57:28 - INFO - -2025-01-11 16:57:33 - ERROR - ޻ظ -2025-01-11 16:57:33 - INFO - -2025-01-11 16:57:39 - ERROR - ޻ظ -2025-01-11 16:57:39 - INFO - -2025-01-11 16:57:44 - ERROR - ޻ظ -2025-01-11 16:57:44 - INFO - -2025-01-11 16:57:50 - ERROR - ޻ظ -2025-01-11 16:57:50 - INFO - -2025-01-11 16:57:52 - INFO - ƶλ:ֱߣm0:7.0-m2:51.0-m3:1.0-m4:7.0-m5:51.0-m6:1.0 -2025-01-11 16:57:52 - INFO - {"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"1","instructions":[{"oneshot":"1","action":"10","m0":"7.0","m1":"51.0","m2":"1.0","m3":"7.0","m4":"51.0","m5":"1.0","ckStatus":"0x3F","speed":"50","delay":"0","smooth":"0","tool":"2"}]} -2025-01-11 16:57:55 - ERROR - ޻ظ -2025-01-11 16:57:55 - INFO - -2025-01-11 16:58:00 - ERROR - ޻ظ -2025-01-11 16:58:01 - INFO - -2025-01-11 16:58:06 - ERROR - ޻ظ -2025-01-11 16:58:06 - INFO - -2025-01-11 16:58:11 - ERROR - ޻ظ -2025-01-11 16:58:11 - INFO - -2025-01-11 16:58:17 - ERROR - ޻ظ -2025-01-11 16:58:17 - INFO - -2025-01-11 16:58:22 - ERROR - ޻ظ -2025-01-11 16:58:22 - INFO - -2025-01-11 16:58:28 - ERROR - ޻ظ -2025-01-11 16:58:28 - INFO - -2025-01-11 16:58:33 - ERROR - ޻ظ -2025-01-11 16:58:33 - INFO - -2025-01-11 16:58:39 - ERROR - ޻ظ -2025-01-11 16:58:39 - INFO - -2025-01-11 16:58:44 - ERROR - ޻ظ -2025-01-11 16:58:44 - INFO - -2025-01-11 16:58:49 - ERROR - ޻ظ -2025-01-11 16:58:49 - INFO - -2025-01-11 16:58:55 - ERROR - ޻ظ -2025-01-11 16:58:55 - INFO - -2025-01-11 16:59:00 - ERROR - ޻ظ -2025-01-11 16:59:00 - INFO - -2025-01-11 16:59:06 - ERROR - ޻ظ -2025-01-11 16:59:06 - INFO - -2025-01-11 16:59:11 - ERROR - ޻ظ -2025-01-11 16:59:11 - INFO - -2025-01-11 16:59:16 - ERROR - ޻ظ -2025-01-11 16:59:17 - INFO - -2025-01-11 16:59:22 - ERROR - ޻ظ -2025-01-11 16:59:22 - INFO - -2025-01-11 16:59:27 - ERROR - ޻ظ -2025-01-11 16:59:27 - INFO - -2025-01-11 16:59:33 - ERROR - ޻ظ -2025-01-11 16:59:33 - INFO - -2025-01-11 16:59:38 - ERROR - ޻ظ -2025-01-11 16:59:38 - INFO - -2025-01-11 16:59:44 - ERROR - ޻ظ -2025-01-11 16:59:44 - INFO - -2025-01-11 16:59:49 - ERROR - ޻ظ -2025-01-11 16:59:49 - INFO - -2025-01-11 16:59:54 - ERROR - ޻ظ -2025-01-11 16:59:55 - INFO - -2025-01-11 17:00:00 - ERROR - ޻ظ -2025-01-11 17:00:00 - INFO - -2025-01-11 17:00:05 - ERROR - ޻ظ -2025-01-11 17:00:05 - INFO - -2025-01-11 17:00:11 - ERROR - ޻ظ -2025-01-11 17:00:11 - INFO - -2025-01-11 17:00:16 - ERROR - ޻ظ -2025-01-11 17:00:16 - INFO - -2025-01-11 17:00:17 - INFO - ƶλ:ֱߣm0:7.0-m2:456.0-m3:1.0-m4:7.0-m5:456.0-m6:1.0 -2025-01-11 17:00:18 - INFO - {"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"1","instructions":[{"oneshot":"1","action":"10","m0":"7.0","m1":"456.0","m2":"1.0","m3":"7.0","m4":"456.0","m5":"1.0","ckStatus":"0x3F","speed":"50","delay":"0","smooth":"0","tool":"2"}]} -2025-01-11 17:00:21 - ERROR - ޻ظ -2025-01-11 17:00:22 - INFO - -2025-01-11 17:00:27 - ERROR - ޻ظ -2025-01-11 17:00:27 - INFO - -2025-01-11 17:00:32 - ERROR - ޻ظ -2025-01-11 17:00:32 - INFO - -2025-01-11 17:00:38 - ERROR - ޻ظ -2025-01-11 17:00:38 - INFO - -2025-01-11 17:00:43 - ERROR - ޻ظ -2025-01-11 17:00:43 - INFO - -2025-01-11 17:00:49 - ERROR - ޻ظ -2025-01-11 17:00:49 - INFO - -2025-01-11 17:00:54 - ERROR - ޻ظ -2025-01-11 17:00:54 - INFO - -2025-01-11 17:00:59 - ERROR - ޻ظ -2025-01-11 17:01:00 - INFO - -2025-01-11 17:01:05 - ERROR - ޻ظ -2025-01-11 17:01:05 - INFO - -2025-01-11 17:01:10 - ERROR - ޻ظ -2025-01-11 17:01:10 - INFO - -2025-01-11 17:01:16 - ERROR - ޻ظ -2025-01-11 17:01:16 - INFO - -2025-01-11 17:01:21 - ERROR - ޻ظ -2025-01-11 17:01:21 - INFO - -2025-01-11 17:01:26 - ERROR - ޻ظ -2025-01-11 17:01:27 - INFO - -2025-01-11 17:01:32 - ERROR - ޻ظ -2025-01-11 17:01:32 - INFO - -2025-01-11 17:01:37 - ERROR - ޻ظ -2025-01-11 17:01:37 - INFO - -2025-01-11 17:01:43 - ERROR - ޻ظ -2025-01-11 17:01:43 - INFO - -2025-01-11 17:01:48 - ERROR - ޻ظ -2025-01-11 17:01:48 - INFO - -2025-01-11 17:01:54 - ERROR - ޻ظ -2025-01-11 17:01:54 - INFO - -2025-01-11 17:01:59 - ERROR - ޻ظ -2025-01-11 17:01:59 - INFO - -2025-01-11 17:02:04 - ERROR - ޻ظ -2025-01-11 17:02:05 - INFO - -2025-01-11 17:02:10 - ERROR - ޻ظ -2025-01-11 17:02:10 - INFO - -2025-01-11 17:02:15 - ERROR - ޻ظ -2025-01-11 17:02:15 - INFO - -2025-01-11 17:02:21 - ERROR - ޻ظ -2025-01-11 17:02:21 - INFO - -2025-01-11 17:02:26 - ERROR - ޻ظ -2025-01-11 17:02:26 - INFO - -2025-01-11 17:02:32 - ERROR - ޻ظ -2025-01-11 17:02:32 - INFO - -2025-01-11 17:02:37 - ERROR - ޻ظ -2025-01-11 17:02:37 - INFO - -2025-01-11 17:02:42 - ERROR - ޻ظ -2025-01-11 17:02:42 - INFO - -2025-01-11 17:02:48 - ERROR - ޻ظ -2025-01-11 17:02:48 - INFO - -2025-01-11 17:02:53 - ERROR - ޻ظ -2025-01-11 17:02:53 - INFO - -2025-01-11 17:02:59 - ERROR - ޻ظ -2025-01-11 17:02:59 - INFO - -2025-01-11 17:03:04 - ERROR - ޻ظ -2025-01-11 17:03:04 - INFO - -2025-01-11 17:03:09 - ERROR - ޻ظ -2025-01-11 17:03:10 - INFO - -2025-01-11 17:03:15 - ERROR - ޻ظ -2025-01-11 17:03:15 - INFO - -2025-01-11 17:03:20 - ERROR - ޻ظ -2025-01-11 17:03:20 - INFO - -2025-01-11 17:03:26 - ERROR - ޻ظ -2025-01-11 17:03:26 - INFO - -2025-01-11 17:03:31 - ERROR - ޻ظ -2025-01-11 17:03:31 - INFO - -2025-01-11 17:03:37 - ERROR - ޻ظ -2025-01-11 17:03:37 - INFO - -2025-01-11 17:03:42 - ERROR - ޻ظ -2025-01-11 17:03:42 - INFO - -2025-01-11 17:03:47 - ERROR - ޻ظ -2025-01-11 17:03:48 - INFO - -2025-01-11 17:03:53 - ERROR - ޻ظ -2025-01-11 17:03:53 - INFO - -2025-01-11 17:03:58 - ERROR - ޻ظ -2025-01-11 17:03:58 - INFO - -2025-01-11 17:04:04 - ERROR - ޻ظ -2025-01-11 17:04:04 - INFO - -2025-01-11 17:04:09 - ERROR - ޻ظ -2025-01-11 17:04:09 - INFO - -2025-01-11 17:04:15 - ERROR - ޻ظ -2025-01-11 17:04:15 - INFO - -2025-01-11 17:04:20 - ERROR - ޻ظ -2025-01-11 17:04:20 - INFO - -2025-01-11 17:04:25 - ERROR - ޻ظ -2025-01-11 17:04:26 - INFO - -2025-01-11 17:04:31 - ERROR - ޻ظ -2025-01-11 17:04:31 - INFO - -2025-01-11 17:04:36 - ERROR - ޻ظ -2025-01-11 17:04:36 - INFO - -2025-01-11 17:04:42 - ERROR - ޻ظ -2025-01-11 17:04:42 - INFO - -2025-01-11 17:04:47 - ERROR - ޻ظ -2025-01-11 17:04:47 - INFO - -2025-01-11 17:04:52 - ERROR - ޻ظ -2025-01-11 17:04:53 - INFO - -2025-01-11 17:04:58 - ERROR - ޻ظ -2025-01-11 17:04:58 - INFO - -2025-01-11 17:05:03 - ERROR - ޻ظ -2025-01-11 17:05:03 - INFO - -2025-01-11 17:05:09 - ERROR - ޻ظ -2025-01-11 17:05:09 - INFO - -2025-01-11 17:05:14 - ERROR - ޻ظ -2025-01-11 17:05:14 - INFO - -2025-01-11 17:05:20 - ERROR - ޻ظ -2025-01-11 17:05:20 - INFO - -2025-01-11 17:05:25 - ERROR - ޻ظ -2025-01-11 17:05:25 - INFO - -2025-01-11 17:05:30 - ERROR - ޻ظ -2025-01-11 17:05:31 - INFO - -2025-01-11 17:05:36 - ERROR - ޻ظ -2025-01-11 17:05:36 - INFO - -2025-01-11 17:05:41 - ERROR - ޻ظ -2025-01-11 17:05:41 - INFO - -2025-01-11 17:05:47 - ERROR - ޻ظ -2025-01-11 17:05:47 - INFO - -2025-01-11 17:05:52 - ERROR - ޻ظ -2025-01-11 17:05:52 - INFO - -2025-01-11 17:05:58 - ERROR - ޻ظ -2025-01-11 17:05:58 - INFO - -2025-01-11 17:06:03 - ERROR - ޻ظ -2025-01-11 17:06:03 - INFO - -2025-01-11 17:06:08 - ERROR - ޻ظ -2025-01-11 17:06:08 - INFO - -2025-01-11 17:06:14 - ERROR - ޻ظ -2025-01-11 17:06:14 - INFO - -2025-01-11 17:06:19 - ERROR - ޻ظ -2025-01-11 17:06:19 - INFO - -2025-01-11 17:06:25 - ERROR - ޻ظ -2025-01-11 17:06:25 - INFO - -2025-01-11 17:06:30 - ERROR - ޻ظ -2025-01-11 17:06:30 - INFO - -2025-01-11 17:06:35 - ERROR - ޻ظ -2025-01-11 17:06:36 - INFO - -2025-01-11 17:06:41 - ERROR - ޻ظ -2025-01-11 17:06:41 - INFO - -2025-01-11 17:06:46 - ERROR - ޻ظ -2025-01-11 17:06:46 - INFO - -2025-01-11 17:06:52 - ERROR - ޻ظ -2025-01-11 17:06:52 - INFO - -2025-01-11 17:06:57 - ERROR - ޻ظ -2025-01-11 17:06:57 - INFO - -2025-01-11 17:07:03 - ERROR - ޻ظ -2025-01-11 17:07:03 - INFO - -2025-01-11 17:07:08 - ERROR - ޻ظ -2025-01-11 17:07:08 - INFO - -2025-01-11 17:07:13 - ERROR - ޻ظ -2025-01-11 17:07:14 - INFO - -2025-01-11 17:07:19 - ERROR - ޻ظ -2025-01-11 17:07:19 - INFO - -2025-01-11 17:07:24 - ERROR - ޻ظ -2025-01-11 17:07:24 - INFO - -2025-01-11 17:07:30 - ERROR - ޻ظ -2025-01-11 17:07:30 - INFO - -2025-01-11 17:07:35 - ERROR - ޻ظ -2025-01-11 17:07:35 - INFO - -2025-01-11 17:07:40 - ERROR - ޻ظ -2025-01-11 17:07:41 - INFO - -2025-01-11 17:07:46 - ERROR - ޻ظ -2025-01-11 17:07:46 - INFO - -2025-01-11 17:07:51 - ERROR - ޻ظ -2025-01-11 17:07:51 - INFO - -2025-01-11 17:07:57 - ERROR - ޻ظ -2025-01-11 17:07:57 - INFO - -2025-01-11 17:08:02 - ERROR - ޻ظ -2025-01-11 17:08:02 - INFO - -2025-01-11 17:08:08 - ERROR - ޻ظ -2025-01-11 17:08:08 - INFO - -2025-01-11 17:08:13 - ERROR - ޻ظ -2025-01-11 17:08:13 - INFO - -2025-01-11 17:08:18 - ERROR - ޻ظ -2025-01-11 17:08:19 - INFO - -2025-01-11 17:08:24 - ERROR - ޻ظ -2025-01-11 17:08:24 - INFO - -2025-01-11 17:08:29 - ERROR - ޻ظ -2025-01-11 17:08:29 - INFO - -2025-01-11 17:08:35 - ERROR - ޻ظ -2025-01-11 17:08:35 - INFO - -2025-01-11 17:08:40 - ERROR - ޻ظ -2025-01-11 17:08:40 - INFO - -2025-01-11 17:08:46 - ERROR - ޻ظ -2025-01-11 17:08:46 - INFO - -2025-01-11 17:08:51 - ERROR - ޻ظ -2025-01-11 17:08:51 - INFO - -2025-01-11 17:08:56 - ERROR - ޻ظ -2025-01-11 17:08:57 - INFO - -2025-01-11 17:09:02 - ERROR - ޻ظ -2025-01-11 17:09:02 - INFO - -2025-01-11 17:09:07 - ERROR - ޻ظ -2025-01-11 17:09:07 - INFO - -2025-01-11 17:09:13 - ERROR - ޻ظ -2025-01-11 17:09:13 - INFO - -2025-01-11 17:09:18 - ERROR - ޻ظ -2025-01-11 17:09:18 - INFO - -2025-01-11 17:09:24 - ERROR - ޻ظ -2025-01-11 17:09:24 - INFO - -2025-01-11 17:09:29 - ERROR - ޻ظ -2025-01-11 17:09:29 - INFO - -2025-01-11 17:09:34 - ERROR - ޻ظ -2025-01-11 17:09:34 - INFO - -2025-01-11 17:09:40 - ERROR - ޻ظ -2025-01-11 17:09:40 - INFO - -2025-01-11 17:09:45 - ERROR - ޻ظ -2025-01-11 17:09:45 - INFO - -2025-01-11 17:09:51 - ERROR - ޻ظ -2025-01-11 17:09:51 - INFO - -2025-01-11 17:09:56 - ERROR - ޻ظ -2025-01-11 17:09:56 - INFO - -2025-01-11 17:10:01 - ERROR - ޻ظ -2025-01-11 17:10:02 - INFO - -2025-01-11 17:10:07 - ERROR - ޻ظ -2025-01-11 17:10:07 - INFO - -2025-01-11 17:10:12 - ERROR - ޻ظ -2025-01-11 17:10:12 - INFO - -2025-01-11 17:10:18 - ERROR - ޻ظ -2025-01-11 17:10:18 - INFO - -2025-01-11 17:10:23 - ERROR - ޻ظ -2025-01-11 17:10:23 - INFO - -2025-01-11 17:10:29 - ERROR - ޻ظ -2025-01-11 17:10:29 - INFO - -2025-01-11 17:10:34 - ERROR - ޻ظ -2025-01-11 17:10:34 - INFO - -2025-01-11 17:10:39 - ERROR - ޻ظ -2025-01-11 17:10:40 - INFO - -2025-01-11 17:10:45 - ERROR - ޻ظ -2025-01-11 17:10:45 - INFO - -2025-01-11 17:10:50 - ERROR - ޻ظ -2025-01-11 17:10:50 - INFO - -2025-01-11 17:10:56 - ERROR - ޻ظ -2025-01-11 17:10:56 - INFO - -2025-01-11 17:11:01 - ERROR - ޻ظ -2025-01-11 17:11:01 - INFO - -2025-01-11 17:11:07 - ERROR - ޻ظ -2025-01-11 17:11:07 - INFO - -2025-01-11 17:11:12 - ERROR - ޻ظ -2025-01-11 17:11:12 - INFO - -2025-01-11 17:11:17 - ERROR - ޻ظ -2025-01-11 17:11:17 - INFO - -2025-01-11 17:11:23 - ERROR - ޻ظ -2025-01-11 17:11:23 - INFO - -2025-01-11 17:11:28 - ERROR - ޻ظ -2025-01-11 17:11:28 - INFO - -2025-01-11 17:11:34 - ERROR - ޻ظ -2025-01-11 17:11:34 - INFO - -2025-01-11 17:11:39 - ERROR - ޻ظ -2025-01-11 17:11:39 - INFO - -2025-01-11 17:11:44 - ERROR - ޻ظ -2025-01-11 17:11:45 - INFO - -2025-01-11 17:11:50 - ERROR - ޻ظ -2025-01-11 17:11:50 - INFO - -2025-01-11 17:11:55 - ERROR - ޻ظ -2025-01-11 17:11:55 - INFO - -2025-01-11 17:12:01 - ERROR - ޻ظ -2025-01-11 17:12:01 - INFO - -2025-01-11 17:12:06 - ERROR - ޻ظ -2025-01-11 17:12:06 - INFO - -2025-01-11 17:12:12 - ERROR - ޻ظ -2025-01-11 17:12:12 - INFO - -2025-01-11 17:12:17 - ERROR - ޻ظ -2025-01-11 17:12:17 - INFO - -2025-01-11 17:12:22 - ERROR - ޻ظ -2025-01-11 17:12:22 - INFO - -2025-01-11 17:12:28 - ERROR - ޻ظ -2025-01-11 17:12:28 - INFO - -2025-01-11 17:12:33 - ERROR - ޻ظ -2025-01-11 17:12:33 - INFO - -2025-01-11 17:12:39 - ERROR - ޻ظ -2025-01-11 17:12:39 - INFO - -2025-01-11 17:12:44 - ERROR - ޻ظ -2025-01-11 17:12:44 - INFO - -2025-01-11 17:12:49 - ERROR - ޻ظ -2025-01-11 17:12:50 - INFO - -2025-01-11 17:12:55 - ERROR - ޻ظ -2025-01-11 17:12:55 - INFO - -2025-01-11 17:13:00 - ERROR - ޻ظ -2025-01-11 17:13:00 - INFO - -2025-01-11 17:13:06 - ERROR - ޻ظ -2025-01-11 17:13:06 - INFO - -2025-01-11 17:13:11 - ERROR - ޻ظ -2025-01-11 17:13:11 - INFO - -2025-01-11 17:13:17 - ERROR - ޻ظ -2025-01-11 17:13:17 - INFO - -2025-01-11 17:13:22 - ERROR - ޻ظ -2025-01-11 17:13:22 - INFO - -2025-01-11 17:13:27 - ERROR - ޻ظ -2025-01-11 17:13:28 - INFO - -2025-01-11 17:13:33 - ERROR - ޻ظ -2025-01-11 17:13:33 - INFO - -2025-01-11 17:13:38 - ERROR - ޻ظ -2025-01-11 17:13:38 - INFO - -2025-01-11 17:13:44 - ERROR - ޻ظ -2025-01-11 17:13:44 - INFO - -2025-01-11 17:13:49 - ERROR - ޻ظ -2025-01-11 17:13:49 - INFO - -2025-01-11 17:13:55 - ERROR - ޻ظ -2025-01-11 17:13:55 - INFO - -2025-01-11 17:14:00 - ERROR - ޻ظ -2025-01-11 17:14:00 - INFO - -2025-01-11 17:14:05 - ERROR - ޻ظ -2025-01-11 17:14:05 - INFO - -2025-01-11 17:14:11 - ERROR - ޻ظ -2025-01-11 17:14:11 - INFO - -2025-01-11 17:14:16 - ERROR - ޻ظ -2025-01-11 17:14:16 - INFO - -2025-01-11 17:14:22 - ERROR - ޻ظ -2025-01-11 17:14:22 - INFO - -2025-01-11 17:14:27 - ERROR - ޻ظ -2025-01-11 17:14:27 - INFO - -2025-01-11 17:14:32 - ERROR - ޻ظ -2025-01-11 17:14:33 - INFO - -2025-01-11 17:14:38 - ERROR - ޻ظ -2025-01-11 17:14:38 - INFO - -2025-01-11 17:14:43 - ERROR - ޻ظ -2025-01-11 17:14:43 - INFO - -2025-01-11 17:14:49 - ERROR - ޻ظ -2025-01-11 17:14:49 - INFO - -2025-01-11 17:14:54 - ERROR - ޻ظ -2025-01-11 17:14:54 - INFO - -2025-01-11 17:15:00 - ERROR - ޻ظ -2025-01-11 17:15:00 - INFO - -2025-01-11 17:15:05 - ERROR - ޻ظ -2025-01-11 17:15:05 - INFO - -2025-01-11 17:15:10 - ERROR - ޻ظ -2025-01-11 17:15:11 - INFO - -2025-01-11 17:15:16 - ERROR - ޻ظ -2025-01-11 17:15:16 - INFO - -2025-01-11 17:15:21 - ERROR - ޻ظ -2025-01-11 17:15:21 - INFO - -2025-01-11 17:15:27 - ERROR - ޻ظ -2025-01-11 17:15:27 - INFO - -2025-01-11 17:15:32 - ERROR - ޻ظ -2025-01-11 17:15:32 - INFO - -2025-01-11 17:15:38 - ERROR - ޻ظ -2025-01-11 17:15:38 - INFO - -2025-01-11 17:15:43 - ERROR - ޻ظ -2025-01-11 17:15:43 - INFO - -2025-01-11 17:15:48 - ERROR - ޻ظ -2025-01-11 17:15:48 - INFO - -2025-01-11 17:15:54 - ERROR - ޻ظ -2025-01-11 17:15:54 - INFO - -2025-01-11 17:15:59 - ERROR - ޻ظ -2025-01-11 17:15:59 - INFO - -2025-01-11 17:16:05 - ERROR - ޻ظ -2025-01-11 17:16:05 - INFO - -2025-01-11 17:16:10 - ERROR - ޻ظ -2025-01-11 17:16:10 - INFO - -2025-01-11 17:16:15 - ERROR - ޻ظ -2025-01-11 17:16:16 - INFO - -2025-01-11 17:16:21 - ERROR - ޻ظ -2025-01-11 17:16:21 - INFO - -2025-01-11 17:16:26 - ERROR - ޻ظ -2025-01-11 17:16:26 - INFO - -2025-01-11 17:16:32 - ERROR - ޻ظ -2025-01-11 17:16:32 - INFO - -2025-01-11 17:16:37 - ERROR - ޻ظ -2025-01-11 17:16:37 - INFO - -2025-01-11 17:16:43 - ERROR - ޻ظ -2025-01-11 17:16:43 - INFO - -2025-01-11 17:16:48 - ERROR - ޻ظ -2025-01-11 17:16:48 - INFO - -2025-01-11 17:16:53 - ERROR - ޻ظ -2025-01-11 17:16:54 - INFO - -2025-01-11 17:16:59 - ERROR - ޻ظ -2025-01-11 17:16:59 - INFO - -2025-01-11 17:17:04 - ERROR - ޻ظ -2025-01-11 17:17:04 - INFO - -2025-01-11 17:17:10 - ERROR - ޻ظ -2025-01-11 17:17:10 - INFO - -2025-01-11 17:17:15 - ERROR - ޻ظ -2025-01-11 17:17:15 - INFO - -2025-01-11 17:17:21 - ERROR - ޻ظ -2025-01-11 17:17:21 - INFO - -2025-01-11 17:17:26 - ERROR - ޻ظ -2025-01-11 17:17:26 - INFO - -2025-01-11 17:17:31 - ERROR - ޻ظ -2025-01-11 17:17:31 - INFO - -2025-01-11 17:17:37 - ERROR - ޻ظ -2025-01-11 17:17:37 - INFO - -2025-01-11 17:17:42 - ERROR - ޻ظ -2025-01-11 17:17:42 - INFO - -2025-01-11 17:17:48 - ERROR - ޻ظ -2025-01-11 17:17:48 - INFO - -2025-01-11 17:17:53 - ERROR - ޻ظ -2025-01-11 17:17:53 - INFO - -2025-01-11 17:17:58 - ERROR - ޻ظ -2025-01-11 17:17:59 - INFO - -2025-01-11 17:18:04 - ERROR - ޻ظ -2025-01-11 17:18:04 - INFO - -2025-01-11 17:18:09 - ERROR - ޻ظ -2025-01-11 17:18:09 - INFO - -2025-01-11 17:18:15 - ERROR - ޻ظ -2025-01-11 17:18:15 - INFO - -2025-01-11 17:18:20 - ERROR - ޻ظ -2025-01-11 17:18:20 - INFO - -2025-01-11 17:18:26 - ERROR - ޻ظ -2025-01-11 17:18:26 - INFO - -2025-01-11 17:18:31 - ERROR - ޻ظ -2025-01-11 17:18:31 - INFO - -2025-01-11 17:18:36 - ERROR - ޻ظ -2025-01-11 17:18:37 - INFO - -2025-01-11 17:18:42 - ERROR - ޻ظ -2025-01-11 17:18:42 - INFO - -2025-01-11 17:18:47 - ERROR - ޻ظ -2025-01-11 17:18:47 - INFO - -2025-01-11 17:18:53 - ERROR - ޻ظ -2025-01-11 17:18:53 - INFO - -2025-01-11 17:18:58 - ERROR - ޻ظ -2025-01-11 17:18:58 - INFO - -2025-01-11 17:19:04 - ERROR - ޻ظ -2025-01-11 17:19:04 - INFO - -2025-01-11 17:19:09 - ERROR - ޻ظ -2025-01-11 17:19:09 - INFO - -2025-01-11 17:19:14 - ERROR - ޻ظ -2025-01-11 17:19:14 - INFO - -2025-01-11 17:19:20 - ERROR - ޻ظ -2025-01-11 17:19:20 - INFO - -2025-01-11 17:19:25 - ERROR - ޻ظ -2025-01-11 17:19:25 - INFO - -2025-01-11 17:19:31 - ERROR - ޻ظ -2025-01-11 17:19:31 - INFO - -2025-01-11 17:19:36 - ERROR - ޻ظ -2025-01-11 17:19:36 - INFO - -2025-01-11 17:19:41 - ERROR - ޻ظ -2025-01-11 17:19:42 - INFO - -2025-01-11 17:19:47 - ERROR - ޻ظ -2025-01-11 17:19:47 - INFO - -2025-01-11 17:19:52 - ERROR - ޻ظ -2025-01-11 17:19:52 - INFO - -2025-01-11 17:19:58 - ERROR - ޻ظ -2025-01-11 17:19:58 - INFO - -2025-01-11 17:20:03 - ERROR - ޻ظ -2025-01-11 17:20:03 - INFO - -2025-01-11 17:20:09 - ERROR - ޻ظ -2025-01-11 17:20:09 - INFO - -2025-01-11 17:20:14 - ERROR - ޻ظ -2025-01-11 17:20:14 - INFO - -2025-01-11 17:20:19 - ERROR - ޻ظ -2025-01-11 17:20:20 - INFO - -2025-01-11 17:20:25 - ERROR - ޻ظ -2025-01-11 17:20:25 - INFO - -2025-01-11 17:20:30 - ERROR - ޻ظ -2025-01-11 17:20:30 - INFO - -2025-01-11 17:20:36 - ERROR - ޻ظ -2025-01-11 17:20:36 - INFO - -2025-01-11 17:20:41 - ERROR - ޻ظ -2025-01-11 17:20:41 - INFO - -2025-01-11 17:20:47 - ERROR - ޻ظ -2025-01-11 17:20:47 - INFO - -2025-01-11 17:20:52 - ERROR - ޻ظ -2025-01-11 17:20:52 - INFO - -2025-01-11 17:20:57 - ERROR - ޻ظ -2025-01-11 17:20:57 - INFO - -2025-01-11 17:21:03 - ERROR - ޻ظ -2025-01-11 17:21:03 - INFO - -2025-01-11 17:21:08 - ERROR - ޻ظ -2025-01-11 17:21:08 - INFO - -2025-01-11 17:21:14 - ERROR - ޻ظ -2025-01-11 17:21:14 - INFO - -2025-01-11 17:21:19 - ERROR - ޻ظ -2025-01-11 17:21:19 - INFO - -2025-01-11 17:21:24 - ERROR - ޻ظ -2025-01-11 17:21:25 - INFO - -2025-01-11 17:21:30 - ERROR - ޻ظ -2025-01-11 17:21:30 - INFO - -2025-01-11 17:21:35 - ERROR - ޻ظ -2025-01-11 17:21:35 - INFO - -2025-01-11 17:21:41 - ERROR - ޻ظ -2025-01-11 17:21:41 - INFO - -2025-01-11 17:21:46 - ERROR - ޻ظ -2025-01-11 17:21:46 - INFO - -2025-01-11 17:21:52 - ERROR - ޻ظ -2025-01-11 17:21:52 - INFO - -2025-01-11 17:21:57 - ERROR - ޻ظ -2025-01-11 17:21:57 - INFO - -2025-01-11 17:22:02 - ERROR - ޻ظ -2025-01-11 17:22:03 - INFO - -2025-01-11 17:22:08 - ERROR - ޻ظ -2025-01-11 17:22:08 - INFO - -2025-01-11 17:22:13 - ERROR - ޻ظ -2025-01-11 17:22:13 - INFO - -2025-01-11 17:22:19 - ERROR - ޻ظ -2025-01-11 17:22:19 - INFO - -2025-01-11 17:22:24 - ERROR - ޻ظ -2025-01-11 17:22:24 - INFO - -2025-01-11 17:22:30 - ERROR - ޻ظ -2025-01-11 17:22:30 - INFO - -2025-01-11 17:22:35 - ERROR - ޻ظ -2025-01-11 17:22:35 - INFO - -2025-01-11 17:22:40 - ERROR - ޻ظ -2025-01-11 17:22:40 - INFO - -2025-01-11 17:22:46 - ERROR - ޻ظ -2025-01-11 17:22:46 - INFO - -2025-01-11 17:22:51 - ERROR - ޻ظ -2025-01-11 17:22:51 - INFO - -2025-01-11 17:22:57 - ERROR - ޻ظ -2025-01-11 17:22:57 - INFO - -2025-01-11 17:23:02 - ERROR - ޻ظ -2025-01-11 17:23:02 - INFO - -2025-01-11 17:23:07 - ERROR - ޻ظ -2025-01-11 17:23:08 - INFO - -2025-01-11 17:23:13 - ERROR - ޻ظ -2025-01-11 17:23:13 - INFO - -2025-01-11 17:23:18 - ERROR - ޻ظ -2025-01-11 17:23:18 - INFO - -2025-01-11 17:23:24 - ERROR - ޻ظ -2025-01-11 17:23:24 - INFO - -2025-01-11 17:23:29 - ERROR - ޻ظ -2025-01-11 17:23:29 - INFO - -2025-01-11 17:23:35 - ERROR - ޻ظ -2025-01-11 17:23:35 - INFO - -2025-01-11 17:23:40 - ERROR - ޻ظ -2025-01-11 17:23:40 - INFO - -2025-01-11 17:23:45 - ERROR - ޻ظ -2025-01-11 17:23:46 - INFO - -2025-01-11 17:23:51 - ERROR - ޻ظ -2025-01-11 17:23:51 - INFO - -2025-01-11 17:23:56 - ERROR - ޻ظ -2025-01-11 17:23:56 - INFO - -2025-01-11 17:24:02 - ERROR - ޻ظ -2025-01-11 17:24:02 - INFO - -2025-01-11 17:24:07 - ERROR - ޻ظ -2025-01-11 17:24:07 - INFO - -2025-01-11 17:24:13 - ERROR - ޻ظ -2025-01-11 17:24:13 - INFO - -2025-01-11 17:24:18 - ERROR - ޻ظ -2025-01-11 17:24:18 - INFO - -2025-01-11 17:24:23 - ERROR - ޻ظ -2025-01-11 17:24:23 - INFO - -2025-01-11 17:24:29 - ERROR - ޻ظ -2025-01-11 17:24:29 - INFO - -2025-01-11 17:24:34 - ERROR - ޻ظ -2025-01-11 17:24:34 - INFO - -2025-01-11 17:24:40 - ERROR - ޻ظ -2025-01-11 17:24:40 - INFO - -2025-01-11 17:24:45 - ERROR - ޻ظ -2025-01-11 17:24:45 - INFO - -2025-01-11 17:24:50 - ERROR - ޻ظ -2025-01-11 17:24:51 - INFO - -2025-01-11 17:24:56 - ERROR - ޻ظ -2025-01-11 17:24:56 - INFO - -2025-01-11 17:25:01 - ERROR - ޻ظ -2025-01-11 17:25:01 - INFO - -2025-01-11 17:25:07 - ERROR - ޻ظ -2025-01-11 17:25:07 - INFO - -2025-01-11 17:25:12 - ERROR - ޻ظ -2025-01-11 17:25:12 - INFO - -2025-01-11 17:25:18 - ERROR - ޻ظ -2025-01-11 17:25:18 - INFO - -2025-01-11 17:25:23 - ERROR - ޻ظ -2025-01-11 17:25:23 - INFO - -2025-01-11 17:25:28 - ERROR - ޻ظ -2025-01-11 17:25:29 - INFO - -2025-01-11 17:25:34 - ERROR - ޻ظ -2025-01-11 17:25:34 - INFO - -2025-01-11 17:25:39 - ERROR - ޻ظ -2025-01-11 17:25:39 - INFO - -2025-01-11 17:25:45 - ERROR - ޻ظ -2025-01-11 17:25:45 - INFO - -2025-01-11 17:25:50 - ERROR - ޻ظ -2025-01-11 17:25:50 - INFO - -2025-01-11 17:25:56 - ERROR - ޻ظ -2025-01-11 17:25:56 - INFO - -2025-01-11 17:26:01 - ERROR - ޻ظ -2025-01-11 17:26:01 - INFO - -2025-01-11 17:26:06 - ERROR - ޻ظ -2025-01-11 17:26:06 - INFO - -2025-01-11 17:26:12 - ERROR - ޻ظ -2025-01-11 17:26:12 - INFO - -2025-01-11 17:26:17 - ERROR - ޻ظ -2025-01-11 17:26:17 - INFO - -2025-01-11 17:26:23 - ERROR - ޻ظ -2025-01-11 17:26:23 - INFO - -2025-01-11 17:26:28 - ERROR - ޻ظ -2025-01-11 17:26:28 - INFO - -2025-01-11 17:26:33 - ERROR - ޻ظ -2025-01-11 17:26:34 - INFO - -2025-01-11 17:26:39 - ERROR - ޻ظ -2025-01-11 17:26:39 - INFO - -2025-01-11 17:26:44 - ERROR - ޻ظ -2025-01-11 17:26:44 - INFO - -2025-01-11 17:26:50 - ERROR - ޻ظ -2025-01-11 17:26:50 - INFO - -2025-01-11 17:26:55 - ERROR - ޻ظ -2025-01-11 17:26:55 - INFO - -2025-01-11 17:27:01 - ERROR - ޻ظ -2025-01-11 17:27:01 - INFO - -2025-01-11 17:27:06 - ERROR - ޻ظ -2025-01-11 17:27:06 - INFO - -2025-01-11 17:27:11 - ERROR - ޻ظ -2025-01-11 17:27:12 - INFO - -2025-01-11 17:27:17 - ERROR - ޻ظ -2025-01-11 17:27:17 - INFO - -2025-01-11 17:27:22 - ERROR - ޻ظ -2025-01-11 17:27:22 - INFO - -2025-01-11 17:27:28 - ERROR - ޻ظ -2025-01-11 17:27:28 - INFO - -2025-01-11 17:27:33 - ERROR - ޻ظ -2025-01-11 17:27:33 - INFO - -2025-01-11 17:27:39 - ERROR - ޻ظ -2025-01-11 17:27:39 - INFO - -2025-01-11 17:27:44 - ERROR - ޻ظ -2025-01-11 17:27:44 - INFO - -2025-01-11 17:27:49 - ERROR - ޻ظ -2025-01-11 17:27:49 - INFO - -2025-01-11 17:27:55 - ERROR - ޻ظ -2025-01-11 17:27:55 - INFO - -2025-01-11 17:28:00 - ERROR - ޻ظ -2025-01-11 17:28:00 - INFO - -2025-01-11 17:28:06 - ERROR - ޻ظ -2025-01-11 17:28:06 - INFO - -2025-01-11 17:28:11 - ERROR - ޻ظ -2025-01-11 17:28:11 - INFO - -2025-01-11 17:28:16 - ERROR - ޻ظ -2025-01-11 17:28:17 - INFO - -2025-01-11 17:28:22 - ERROR - ޻ظ -2025-01-11 17:28:22 - INFO - -2025-01-11 17:28:27 - ERROR - ޻ظ -2025-01-11 17:28:27 - INFO - -2025-01-11 17:28:33 - ERROR - ޻ظ -2025-01-11 17:28:33 - INFO - -2025-01-11 17:28:38 - ERROR - ޻ظ -2025-01-11 17:28:38 - INFO - -2025-01-11 17:28:44 - ERROR - ޻ظ -2025-01-11 17:28:44 - INFO - -2025-01-11 17:28:49 - ERROR - ޻ظ -2025-01-11 17:28:49 - INFO - -2025-01-11 17:28:54 - ERROR - ޻ظ -2025-01-11 17:28:55 - INFO - -2025-01-11 17:29:00 - ERROR - ޻ظ -2025-01-11 17:29:00 - INFO - -2025-01-11 17:29:05 - ERROR - ޻ظ -2025-01-11 17:29:05 - INFO - -2025-01-11 17:29:11 - ERROR - ޻ظ -2025-01-11 17:29:11 - INFO - -2025-01-11 17:29:16 - ERROR - ޻ظ -2025-01-11 17:29:16 - INFO - -2025-01-11 17:29:21 - ERROR - ޻ظ -2025-01-11 17:29:22 - INFO - -2025-01-11 17:29:27 - ERROR - ޻ظ -2025-01-11 17:29:27 - INFO - -2025-01-11 17:29:32 - ERROR - ޻ظ -2025-01-11 17:29:32 - INFO - -2025-01-11 17:29:38 - ERROR - ޻ظ -2025-01-11 17:29:38 - INFO - -2025-01-11 17:29:43 - ERROR - ޻ظ -2025-01-11 17:29:43 - INFO - -2025-01-11 17:29:49 - ERROR - ޻ظ -2025-01-11 17:29:49 - INFO - -2025-01-11 17:29:54 - ERROR - ޻ظ -2025-01-11 17:29:54 - INFO - -2025-01-11 17:29:59 - ERROR - ޻ظ -2025-01-11 17:30:00 - INFO - -2025-01-11 17:30:05 - ERROR - ޻ظ -2025-01-11 17:30:05 - INFO - -2025-01-11 17:30:10 - ERROR - ޻ظ -2025-01-11 17:30:10 - INFO - -2025-01-11 17:30:16 - ERROR - ޻ظ -2025-01-11 17:30:16 - INFO - -2025-01-11 17:30:21 - ERROR - ޻ظ -2025-01-11 17:30:21 - INFO - -2025-01-11 17:30:27 - ERROR - ޻ظ -2025-01-11 17:30:27 - INFO - -2025-01-11 17:30:32 - ERROR - ޻ظ -2025-01-11 17:30:32 - INFO - -2025-01-11 17:30:37 - ERROR - ޻ظ -2025-01-11 17:30:37 - INFO - -2025-01-11 17:30:43 - ERROR - ޻ظ -2025-01-11 17:30:43 - INFO - -2025-01-11 17:30:48 - ERROR - ޻ظ -2025-01-11 17:30:48 - INFO - -2025-01-11 17:30:54 - ERROR - ޻ظ -2025-01-11 17:30:54 - INFO - -2025-01-11 17:30:59 - ERROR - ޻ظ -2025-01-11 17:30:59 - INFO - -2025-01-11 17:31:04 - ERROR - ޻ظ -2025-01-11 17:31:05 - INFO - -2025-01-11 17:31:10 - ERROR - ޻ظ -2025-01-11 17:31:10 - INFO - -2025-01-11 17:31:15 - ERROR - ޻ظ -2025-01-11 17:31:15 - INFO - -2025-01-11 17:31:21 - ERROR - ޻ظ -2025-01-11 17:31:21 - INFO - -2025-01-11 17:31:26 - ERROR - ޻ظ -2025-01-11 17:31:26 - INFO - -2025-01-11 17:31:32 - ERROR - ޻ظ -2025-01-11 17:31:32 - INFO - -2025-01-11 17:31:37 - ERROR - ޻ظ -2025-01-11 17:31:37 - INFO - -2025-01-11 17:31:42 - ERROR - ޻ظ -2025-01-11 17:31:42 - INFO - -2025-01-11 17:31:48 - ERROR - ޻ظ -2025-01-11 17:31:48 - INFO - -2025-01-11 17:31:53 - ERROR - ޻ظ -2025-01-11 17:31:53 - INFO - -2025-01-11 17:31:59 - ERROR - ޻ظ -2025-01-11 17:31:59 - INFO - -2025-01-11 17:32:04 - ERROR - ޻ظ -2025-01-11 17:32:04 - INFO - -2025-01-11 17:32:09 - ERROR - ޻ظ -2025-01-11 17:32:10 - INFO - -2025-01-11 17:32:15 - ERROR - ޻ظ -2025-01-11 17:32:15 - INFO - -2025-01-11 17:32:20 - ERROR - ޻ظ -2025-01-11 17:32:20 - INFO - -2025-01-11 17:32:26 - ERROR - ޻ظ -2025-01-11 17:32:26 - INFO - -2025-01-11 17:32:31 - ERROR - ޻ظ -2025-01-11 17:32:31 - INFO - -2025-01-11 17:32:37 - ERROR - ޻ظ -2025-01-11 17:32:37 - INFO - -2025-01-11 17:32:42 - ERROR - ޻ظ -2025-01-11 17:32:42 - INFO - -2025-01-11 17:32:47 - ERROR - ޻ظ -2025-01-11 17:32:48 - INFO - -2025-01-11 17:32:53 - ERROR - ޻ظ -2025-01-11 17:32:53 - INFO - -2025-01-11 17:32:58 - ERROR - ޻ظ -2025-01-11 17:32:58 - INFO - -2025-01-11 17:33:04 - ERROR - ޻ظ -2025-01-11 17:33:04 - INFO - -2025-01-11 17:33:09 - ERROR - ޻ظ -2025-01-11 17:33:09 - INFO - -2025-01-11 17:33:15 - ERROR - ޻ظ -2025-01-11 17:33:15 - INFO - -2025-01-11 17:33:20 - ERROR - ޻ظ -2025-01-11 17:33:20 - INFO - -2025-01-11 17:33:25 - ERROR - ޻ظ -2025-01-11 17:33:25 - INFO - -2025-01-11 17:33:31 - ERROR - ޻ظ -2025-01-11 17:33:31 - INFO - -2025-01-11 17:33:36 - ERROR - ޻ظ -2025-01-11 17:33:36 - INFO - -2025-01-11 17:33:42 - ERROR - ޻ظ -2025-01-11 17:33:42 - INFO - -2025-01-11 17:33:47 - ERROR - ޻ظ -2025-01-11 17:33:47 - INFO - -2025-01-11 17:33:52 - ERROR - ޻ظ -2025-01-11 17:33:53 - INFO - -2025-01-11 17:33:58 - ERROR - ޻ظ -2025-01-11 17:33:58 - INFO - -2025-01-11 17:34:03 - ERROR - ޻ظ -2025-01-11 17:34:03 - INFO - -2025-01-11 17:34:09 - ERROR - ޻ظ -2025-01-11 17:34:09 - INFO - -2025-01-11 17:34:14 - ERROR - ޻ظ -2025-01-11 17:34:14 - INFO - -2025-01-11 17:34:20 - ERROR - ޻ظ -2025-01-11 17:34:20 - INFO - -2025-01-11 17:34:25 - ERROR - ޻ظ -2025-01-11 17:34:25 - INFO - -2025-01-11 17:34:30 - ERROR - ޻ظ -2025-01-11 17:34:31 - INFO - -2025-01-11 17:34:36 - ERROR - ޻ظ -2025-01-11 17:34:36 - INFO - -2025-01-11 17:34:41 - ERROR - ޻ظ -2025-01-11 17:34:41 - INFO - -2025-01-11 17:34:47 - ERROR - ޻ظ -2025-01-11 17:34:47 - INFO - -2025-01-11 17:34:52 - ERROR - ޻ظ -2025-01-11 17:34:52 - INFO - -2025-01-11 17:34:57 - ERROR - ޻ظ -2025-01-11 17:34:58 - INFO - -2025-01-11 17:35:03 - ERROR - ޻ظ -2025-01-11 17:35:03 - INFO - -2025-01-11 17:35:08 - ERROR - ޻ظ -2025-01-11 17:35:08 - INFO - -2025-01-11 17:35:14 - ERROR - ޻ظ -2025-01-11 17:35:14 - INFO - -2025-01-11 17:35:19 - ERROR - ޻ظ -2025-01-11 17:35:19 - INFO - -2025-01-11 17:35:25 - ERROR - ޻ظ -2025-01-11 17:35:25 - INFO - -2025-01-11 17:35:30 - ERROR - ޻ظ -2025-01-11 17:35:30 - INFO - -2025-01-11 17:35:35 - ERROR - ޻ظ -2025-01-11 17:35:36 - INFO - -2025-01-11 17:35:41 - ERROR - ޻ظ -2025-01-11 17:35:41 - INFO - -2025-01-11 17:35:46 - ERROR - ޻ظ -2025-01-11 17:35:46 - INFO - -2025-01-11 17:35:52 - ERROR - ޻ظ -2025-01-11 17:35:52 - INFO - -2025-01-11 17:35:57 - ERROR - ޻ظ -2025-01-11 17:35:57 - INFO - -2025-01-11 17:36:03 - ERROR - ޻ظ -2025-01-11 17:36:03 - INFO - -2025-01-11 17:36:08 - ERROR - ޻ظ -2025-01-11 17:36:08 - INFO - -2025-01-11 17:36:13 - ERROR - ޻ظ -2025-01-11 17:36:13 - INFO - -2025-01-11 17:36:19 - ERROR - ޻ظ -2025-01-11 17:36:19 - INFO - -2025-01-11 17:36:24 - ERROR - ޻ظ -2025-01-11 17:36:24 - INFO - -2025-01-11 17:36:30 - ERROR - ޻ظ -2025-01-11 17:36:30 - INFO - -2025-01-11 17:36:35 - ERROR - ޻ظ -2025-01-11 17:36:35 - INFO - -2025-01-11 17:36:40 - ERROR - ޻ظ -2025-01-11 17:36:41 - INFO - -2025-01-11 17:36:46 - ERROR - ޻ظ -2025-01-11 17:36:46 - INFO - -2025-01-11 17:36:51 - ERROR - ޻ظ -2025-01-11 17:36:51 - INFO - -2025-01-11 17:36:57 - ERROR - ޻ظ -2025-01-11 17:36:57 - INFO - -2025-01-11 17:37:02 - ERROR - ޻ظ -2025-01-11 17:37:02 - INFO - -2025-01-11 17:37:08 - ERROR - ޻ظ -2025-01-11 17:37:08 - INFO - -2025-01-11 17:37:13 - ERROR - ޻ظ -2025-01-11 17:37:13 - INFO - -2025-01-11 17:37:18 - ERROR - ޻ظ -2025-01-11 17:37:18 - INFO - -2025-01-11 17:37:24 - ERROR - ޻ظ -2025-01-11 17:37:24 - INFO - -2025-01-11 17:37:29 - ERROR - ޻ظ -2025-01-11 17:37:29 - INFO - -2025-01-11 17:37:35 - ERROR - ޻ظ -2025-01-11 17:37:35 - INFO - -2025-01-11 17:37:40 - ERROR - ޻ظ -2025-01-11 17:37:40 - INFO - -2025-01-11 17:37:45 - ERROR - ޻ظ -2025-01-11 17:37:46 - INFO - -2025-01-11 17:37:51 - ERROR - ޻ظ -2025-01-11 17:37:51 - INFO - -2025-01-11 17:37:56 - ERROR - ޻ظ -2025-01-11 17:37:56 - INFO - -2025-01-11 17:38:02 - ERROR - ޻ظ -2025-01-11 17:38:02 - INFO - -2025-01-11 17:38:07 - ERROR - ޻ظ -2025-01-11 17:38:07 - INFO - -2025-01-11 17:38:13 - ERROR - ޻ظ -2025-01-11 17:38:13 - INFO - -2025-01-11 17:38:18 - ERROR - ޻ظ -2025-01-11 17:38:18 - INFO - -2025-01-11 17:38:23 - ERROR - ޻ظ -2025-01-11 17:38:24 - INFO - -2025-01-11 17:38:29 - ERROR - ޻ظ -2025-01-11 17:38:29 - INFO - -2025-01-11 17:38:34 - ERROR - ޻ظ -2025-01-11 17:38:34 - INFO - -2025-01-11 17:38:40 - ERROR - ޻ظ -2025-01-11 17:38:40 - INFO - -2025-01-11 17:38:45 - ERROR - ޻ظ -2025-01-11 17:38:45 - INFO - -2025-01-11 17:38:50 - ERROR - ޻ظ -2025-01-11 17:38:51 - INFO - -2025-01-11 17:38:56 - ERROR - ޻ظ -2025-01-11 17:38:56 - INFO - -2025-01-11 17:39:01 - ERROR - ޻ظ -2025-01-11 17:39:01 - INFO - -2025-01-11 17:39:07 - ERROR - ޻ظ -2025-01-11 17:39:07 - INFO - -2025-01-11 17:39:12 - ERROR - ޻ظ -2025-01-11 17:39:12 - INFO - -2025-01-11 17:39:18 - ERROR - ޻ظ -2025-01-11 17:39:18 - INFO - -2025-01-11 17:39:23 - ERROR - ޻ظ -2025-01-11 17:39:23 - INFO - -2025-01-11 17:39:28 - ERROR - ޻ظ -2025-01-11 17:39:29 - INFO - -2025-01-11 17:39:34 - ERROR - ޻ظ -2025-01-11 17:39:34 - INFO - -2025-01-11 17:39:39 - ERROR - ޻ظ -2025-01-11 17:39:39 - INFO - -2025-01-11 17:39:45 - ERROR - ޻ظ -2025-01-11 17:39:45 - INFO - -2025-01-11 17:39:50 - ERROR - ޻ظ -2025-01-11 17:39:50 - INFO - -2025-01-11 17:39:56 - ERROR - ޻ظ -2025-01-11 17:39:56 - INFO - -2025-01-11 17:40:01 - ERROR - ޻ظ -2025-01-11 17:40:01 - INFO - -2025-01-11 17:40:06 - ERROR - ޻ظ -2025-01-11 17:40:06 - INFO - -2025-01-11 17:40:12 - ERROR - ޻ظ -2025-01-11 17:40:12 - INFO - -2025-01-11 17:40:17 - ERROR - ޻ظ -2025-01-11 17:40:17 - INFO - -2025-01-11 17:40:23 - ERROR - ޻ظ -2025-01-11 17:40:23 - INFO - -2025-01-11 17:40:28 - ERROR - ޻ظ -2025-01-11 17:40:28 - INFO - -2025-01-11 17:40:33 - ERROR - ޻ظ -2025-01-11 17:40:34 - INFO - -2025-01-11 17:40:39 - ERROR - ޻ظ -2025-01-11 17:40:39 - INFO - -2025-01-11 17:40:44 - ERROR - ޻ظ -2025-01-11 17:40:44 - INFO - -2025-01-11 17:40:50 - ERROR - ޻ظ -2025-01-11 17:40:50 - INFO - -2025-01-11 17:40:55 - ERROR - ޻ظ -2025-01-11 17:40:55 - INFO - -2025-01-11 17:41:01 - ERROR - ޻ظ -2025-01-11 17:41:01 - INFO - -2025-01-11 17:41:06 - ERROR - ޻ظ -2025-01-11 17:41:06 - INFO - -2025-01-11 17:41:11 - ERROR - ޻ظ -2025-01-11 17:41:11 - INFO - -2025-01-11 17:41:17 - ERROR - ޻ظ -2025-01-11 17:41:17 - INFO - -2025-01-11 17:41:22 - ERROR - ޻ظ -2025-01-11 17:41:22 - INFO - -2025-01-11 17:41:28 - ERROR - ޻ظ -2025-01-11 17:41:28 - INFO - -2025-01-11 17:41:33 - ERROR - ޻ظ -2025-01-11 17:41:33 - INFO - -2025-01-11 17:41:38 - ERROR - ޻ظ -2025-01-11 17:41:39 - INFO - -2025-01-11 17:41:44 - ERROR - ޻ظ -2025-01-11 17:41:44 - INFO - -2025-01-11 17:41:49 - ERROR - ޻ظ -2025-01-11 17:41:49 - INFO - -2025-01-11 17:41:55 - ERROR - ޻ظ -2025-01-11 17:41:55 - INFO - -2025-01-11 17:42:00 - ERROR - ޻ظ -2025-01-11 17:42:00 - INFO - -2025-01-11 17:42:06 - ERROR - ޻ظ -2025-01-11 17:42:06 - INFO - -2025-01-11 17:42:11 - ERROR - ޻ظ -2025-01-11 17:42:11 - INFO - -2025-01-11 17:42:16 - ERROR - ޻ظ -2025-01-11 17:42:17 - INFO - -2025-01-11 17:42:22 - ERROR - ޻ظ -2025-01-11 17:42:22 - INFO - -2025-01-11 17:42:27 - ERROR - ޻ظ -2025-01-11 17:42:27 - INFO - -2025-01-11 17:42:33 - ERROR - ޻ظ -2025-01-11 17:42:33 - INFO - -2025-01-11 17:42:38 - ERROR - ޻ظ -2025-01-11 17:42:38 - INFO - -2025-01-11 17:42:43 - ERROR - ޻ظ -2025-01-11 17:42:44 - INFO - -2025-01-11 17:42:49 - ERROR - ޻ظ -2025-01-11 17:42:49 - INFO - -2025-01-11 17:42:54 - ERROR - ޻ظ -2025-01-11 17:42:54 - INFO - -2025-01-11 17:43:00 - ERROR - ޻ظ -2025-01-11 17:43:00 - INFO - -2025-01-11 17:43:05 - ERROR - ޻ظ -2025-01-11 17:43:05 - INFO - -2025-01-11 17:43:11 - ERROR - ޻ظ -2025-01-11 17:43:11 - INFO - -2025-01-11 17:43:16 - ERROR - ޻ظ -2025-01-11 17:43:16 - INFO - -2025-01-11 17:43:21 - ERROR - ޻ظ -2025-01-11 17:43:22 - INFO - -2025-01-11 17:43:27 - ERROR - ޻ظ -2025-01-11 17:43:27 - INFO - -2025-01-11 17:43:32 - ERROR - ޻ظ -2025-01-11 17:43:32 - INFO - -2025-01-11 17:43:38 - ERROR - ޻ظ -2025-01-11 17:43:38 - INFO - -2025-01-11 17:43:43 - ERROR - ޻ظ -2025-01-11 17:43:43 - INFO - -2025-01-11 17:43:49 - ERROR - ޻ظ -2025-01-11 17:43:49 - INFO - -2025-01-11 17:43:54 - ERROR - ޻ظ -2025-01-11 17:43:54 - INFO - -2025-01-11 17:43:59 - ERROR - ޻ظ -2025-01-11 17:43:59 - INFO - -2025-01-11 17:44:05 - ERROR - ޻ظ -2025-01-11 17:44:05 - INFO - -2025-01-11 17:44:10 - ERROR - ޻ظ -2025-01-11 17:44:10 - INFO - -2025-01-11 17:44:16 - ERROR - ޻ظ -2025-01-11 17:44:16 - INFO - -2025-01-11 17:44:21 - ERROR - ޻ظ -2025-01-11 17:44:21 - INFO - -2025-01-11 17:44:26 - ERROR - ޻ظ -2025-01-11 17:44:27 - INFO - -2025-01-11 17:44:32 - ERROR - ޻ظ -2025-01-11 17:44:32 - INFO - -2025-01-11 17:44:37 - ERROR - ޻ظ -2025-01-11 17:44:37 - INFO - -2025-01-11 17:44:43 - ERROR - ޻ظ -2025-01-11 17:44:43 - INFO - -2025-01-11 17:44:48 - ERROR - ޻ظ -2025-01-11 17:44:48 - INFO - -2025-01-11 17:44:54 - ERROR - ޻ظ -2025-01-11 17:44:54 - INFO - -2025-01-11 17:44:59 - ERROR - ޻ظ -2025-01-11 17:44:59 - INFO - -2025-01-11 17:45:04 - ERROR - ޻ظ -2025-01-11 17:45:05 - INFO - -2025-01-11 17:45:10 - ERROR - ޻ظ -2025-01-11 17:45:10 - INFO - -2025-01-11 17:45:15 - ERROR - ޻ظ -2025-01-11 17:45:15 - INFO - -2025-01-11 17:45:21 - ERROR - ޻ظ -2025-01-11 17:45:21 - INFO - -2025-01-11 17:45:26 - ERROR - ޻ظ -2025-01-11 17:45:26 - INFO - -2025-01-11 17:45:32 - ERROR - ޻ظ -2025-01-11 17:45:32 - INFO - -2025-01-11 17:45:37 - ERROR - ޻ظ -2025-01-11 17:45:37 - INFO - -2025-01-11 17:45:42 - ERROR - ޻ظ -2025-01-11 17:45:43 - INFO - -2025-01-11 17:45:48 - ERROR - ޻ظ -2025-01-11 17:45:48 - INFO - -2025-01-11 17:45:53 - ERROR - ޻ظ -2025-01-11 17:45:53 - INFO - -2025-01-11 17:45:59 - ERROR - ޻ظ -2025-01-11 17:45:59 - INFO - -2025-01-11 17:46:04 - ERROR - ޻ظ -2025-01-11 17:46:04 - INFO - -2025-01-11 17:46:10 - ERROR - ޻ظ -2025-01-11 17:46:10 - INFO - -2025-01-11 17:46:15 - ERROR - ޻ظ -2025-01-11 17:46:15 - INFO - -2025-01-11 17:46:20 - ERROR - ޻ظ -2025-01-11 17:46:20 - INFO - -2025-01-11 17:46:26 - ERROR - ޻ظ -2025-01-11 17:46:26 - INFO - -2025-01-11 17:46:31 - ERROR - ޻ظ -2025-01-11 17:46:31 - INFO - -2025-01-11 17:46:37 - ERROR - ޻ظ -2025-01-11 17:46:37 - INFO - -2025-01-11 17:46:42 - ERROR - ޻ظ -2025-01-11 17:46:42 - INFO - -2025-01-11 17:46:47 - ERROR - ޻ظ -2025-01-11 17:46:48 - INFO - -2025-01-11 17:46:53 - ERROR - ޻ظ -2025-01-11 17:46:53 - INFO - -2025-01-11 17:46:58 - ERROR - ޻ظ -2025-01-11 17:46:58 - INFO - -2025-01-11 17:47:04 - ERROR - ޻ظ -2025-01-11 17:47:04 - INFO - -2025-01-11 17:47:09 - ERROR - ޻ظ -2025-01-11 17:47:09 - INFO - -2025-01-11 17:47:15 - ERROR - ޻ظ -2025-01-11 17:47:15 - INFO - -2025-01-11 17:47:20 - ERROR - ޻ظ -2025-01-11 17:47:20 - INFO - -2025-01-11 17:47:25 - ERROR - ޻ظ -2025-01-11 17:47:25 - INFO - -2025-01-11 17:47:31 - ERROR - ޻ظ -2025-01-11 17:47:31 - INFO - -2025-01-11 17:47:36 - ERROR - ޻ظ -2025-01-11 17:47:36 - INFO - -2025-01-11 17:47:42 - ERROR - ޻ظ -2025-01-11 17:47:42 - INFO - -2025-01-11 17:47:47 - ERROR - ޻ظ -2025-01-11 17:47:47 - INFO - -2025-01-11 17:47:52 - ERROR - ޻ظ -2025-01-11 17:47:53 - INFO - -2025-01-11 17:47:58 - ERROR - ޻ظ -2025-01-11 17:47:58 - INFO - -2025-01-11 17:48:03 - ERROR - ޻ظ -2025-01-11 17:48:03 - INFO - -2025-01-11 17:48:09 - ERROR - ޻ظ -2025-01-11 17:48:09 - INFO - -2025-01-11 17:48:14 - ERROR - ޻ظ -2025-01-11 17:48:14 - INFO - -2025-01-11 17:48:20 - ERROR - ޻ظ -2025-01-11 17:48:20 - INFO - -2025-01-11 17:48:25 - ERROR - ޻ظ -2025-01-11 17:48:25 - INFO - -2025-01-11 17:48:30 - ERROR - ޻ظ -2025-01-11 17:48:31 - INFO - -2025-01-11 17:48:36 - ERROR - ޻ظ -2025-01-11 17:48:36 - INFO - -2025-01-11 17:48:41 - ERROR - ޻ظ -2025-01-11 17:48:41 - INFO - -2025-01-11 17:48:47 - ERROR - ޻ظ -2025-01-11 17:48:47 - INFO - -2025-01-11 17:48:52 - ERROR - ޻ظ -2025-01-11 17:48:52 - INFO - -2025-01-11 17:48:58 - ERROR - ޻ظ -2025-01-11 17:48:58 - INFO - -2025-01-11 17:49:03 - ERROR - ޻ظ -2025-01-11 17:49:03 - INFO - -2025-01-11 17:49:08 - ERROR - ޻ظ -2025-01-11 17:49:08 - INFO - -2025-01-11 17:49:14 - ERROR - ޻ظ -2025-01-11 17:49:14 - INFO - -2025-01-11 17:49:19 - ERROR - ޻ظ -2025-01-11 17:49:19 - INFO - -2025-01-11 17:49:25 - ERROR - ޻ظ -2025-01-11 17:49:25 - INFO - -2025-01-11 17:49:30 - ERROR - ޻ظ -2025-01-11 17:49:30 - INFO - -2025-01-11 17:49:35 - ERROR - ޻ظ -2025-01-11 17:49:36 - INFO - -2025-01-11 17:49:41 - ERROR - ޻ظ -2025-01-11 17:49:41 - INFO - -2025-01-11 17:49:46 - ERROR - ޻ظ -2025-01-11 17:49:46 - INFO - -2025-01-11 17:49:52 - ERROR - ޻ظ -2025-01-11 17:49:52 - INFO - -2025-01-11 17:49:57 - ERROR - ޻ظ -2025-01-11 17:49:57 - INFO - -2025-01-11 17:50:03 - ERROR - ޻ظ -2025-01-11 17:50:03 - INFO - -2025-01-11 17:50:08 - ERROR - ޻ظ -2025-01-11 17:50:08 - INFO - -2025-01-11 17:50:13 - ERROR - ޻ظ -2025-01-11 17:50:13 - INFO - -2025-01-11 17:50:19 - ERROR - ޻ظ -2025-01-11 17:50:19 - INFO - -2025-01-11 17:50:24 - ERROR - ޻ظ -2025-01-11 17:50:24 - INFO - -2025-01-11 17:50:30 - ERROR - ޻ظ -2025-01-11 17:50:30 - INFO - -2025-01-11 17:50:35 - ERROR - ޻ظ -2025-01-11 17:50:35 - INFO - -2025-01-11 17:50:40 - ERROR - ޻ظ -2025-01-11 17:50:41 - INFO - -2025-01-11 17:50:46 - ERROR - ޻ظ -2025-01-11 17:50:46 - INFO - -2025-01-11 17:50:51 - ERROR - ޻ظ -2025-01-11 17:50:51 - INFO - -2025-01-11 17:50:57 - ERROR - ޻ظ -2025-01-11 17:50:57 - INFO - -2025-01-11 17:51:02 - ERROR - ޻ظ -2025-01-11 17:51:02 - INFO - -2025-01-11 17:51:08 - ERROR - ޻ظ -2025-01-11 17:51:08 - INFO - -2025-01-11 17:51:13 - ERROR - ޻ظ -2025-01-11 17:51:13 - INFO - -2025-01-11 17:51:18 - ERROR - ޻ظ -2025-01-11 17:51:18 - INFO - -2025-01-11 17:51:24 - ERROR - ޻ظ -2025-01-11 17:51:24 - INFO - -2025-01-11 17:51:29 - ERROR - ޻ظ -2025-01-11 17:51:29 - INFO - -2025-01-11 17:51:35 - ERROR - ޻ظ -2025-01-11 17:51:35 - INFO - -2025-01-11 17:51:40 - ERROR - ޻ظ -2025-01-11 17:51:40 - INFO - -2025-01-11 17:51:45 - ERROR - ޻ظ -2025-01-11 17:51:46 - INFO - -2025-01-11 17:51:51 - ERROR - ޻ظ -2025-01-11 17:51:51 - INFO - -2025-01-11 17:51:56 - ERROR - ޻ظ -2025-01-11 17:51:56 - INFO - -2025-01-11 17:52:02 - ERROR - ޻ظ -2025-01-11 17:52:02 - INFO - -2025-01-11 17:52:07 - ERROR - ޻ظ -2025-01-11 17:52:07 - INFO - -2025-01-11 17:52:13 - ERROR - ޻ظ -2025-01-11 17:52:13 - INFO - -2025-01-11 17:52:18 - ERROR - ޻ظ -2025-01-11 17:52:18 - INFO - -2025-01-11 17:52:23 - ERROR - ޻ظ -2025-01-11 17:52:23 - INFO - -2025-01-11 17:52:29 - ERROR - ޻ظ -2025-01-11 17:52:29 - INFO - -2025-01-11 17:52:34 - ERROR - ޻ظ -2025-01-11 17:52:34 - INFO - -2025-01-11 17:52:40 - ERROR - ޻ظ -2025-01-11 17:52:40 - INFO - -2025-01-11 17:52:45 - ERROR - ޻ظ -2025-01-11 17:52:45 - INFO - -2025-01-11 17:52:50 - ERROR - ޻ظ -2025-01-11 17:52:51 - INFO - -2025-01-11 17:52:56 - ERROR - ޻ظ -2025-01-11 17:52:56 - INFO - -2025-01-11 17:53:01 - ERROR - ޻ظ -2025-01-11 17:53:01 - INFO - -2025-01-11 17:53:07 - ERROR - ޻ظ -2025-01-11 17:53:07 - INFO - -2025-01-11 17:53:12 - ERROR - ޻ظ -2025-01-11 17:53:12 - INFO - -2025-01-11 17:53:18 - ERROR - ޻ظ -2025-01-11 17:53:18 - INFO - -2025-01-11 17:53:23 - ERROR - ޻ظ -2025-01-11 17:53:23 - INFO - -2025-01-11 17:53:28 - ERROR - ޻ظ -2025-01-11 17:53:28 - INFO - -2025-01-11 17:53:34 - ERROR - ޻ظ -2025-01-11 17:53:34 - INFO - -2025-01-11 17:53:39 - ERROR - ޻ظ -2025-01-11 17:53:39 - INFO - -2025-01-11 17:53:45 - ERROR - ޻ظ -2025-01-11 17:53:45 - INFO - -2025-01-11 17:53:50 - ERROR - ޻ظ -2025-01-11 17:53:50 - INFO - -2025-01-11 17:53:55 - ERROR - ޻ظ -2025-01-11 17:53:56 - INFO - -2025-01-11 17:54:01 - ERROR - ޻ظ -2025-01-11 17:54:01 - INFO - -2025-01-11 17:54:06 - ERROR - ޻ظ -2025-01-11 17:54:06 - INFO - -2025-01-11 17:54:12 - ERROR - ޻ظ -2025-01-11 17:54:12 - INFO - -2025-01-11 17:54:17 - ERROR - ޻ظ -2025-01-11 17:54:17 - INFO - -2025-01-11 17:54:23 - ERROR - ޻ظ -2025-01-11 17:54:23 - INFO - -2025-01-11 17:54:28 - ERROR - ޻ظ -2025-01-11 17:54:28 - INFO - -2025-01-11 17:54:33 - ERROR - ޻ظ -2025-01-11 17:54:34 - INFO - -2025-01-11 17:54:39 - ERROR - ޻ظ -2025-01-11 17:54:39 - INFO - -2025-01-11 17:54:44 - ERROR - ޻ظ -2025-01-11 17:54:44 - INFO - -2025-01-11 17:54:50 - ERROR - ޻ظ -2025-01-11 17:54:50 - INFO - -2025-01-11 17:54:55 - ERROR - ޻ظ -2025-01-11 17:54:55 - INFO - -2025-01-11 17:55:00 - ERROR - ޻ظ -2025-01-11 17:55:01 - INFO - -2025-01-11 17:55:06 - ERROR - ޻ظ -2025-01-11 17:55:06 - INFO - -2025-01-11 17:55:11 - ERROR - ޻ظ -2025-01-11 17:55:11 - INFO - -2025-01-11 17:55:17 - ERROR - ޻ظ -2025-01-11 17:55:17 - INFO - -2025-01-11 17:55:22 - ERROR - ޻ظ -2025-01-11 17:55:22 - INFO - -2025-01-11 17:55:28 - ERROR - ޻ظ -2025-01-11 17:55:28 - INFO - -2025-01-11 17:55:33 - ERROR - ޻ظ -2025-01-11 17:55:33 - INFO - -2025-01-11 17:55:38 - ERROR - ޻ظ -2025-01-11 17:55:39 - INFO - -2025-01-11 17:55:44 - ERROR - ޻ظ -2025-01-11 17:55:44 - INFO - -2025-01-11 17:55:49 - ERROR - ޻ظ -2025-01-11 17:55:49 - INFO - -2025-01-11 17:55:55 - ERROR - ޻ظ -2025-01-11 17:55:55 - INFO - -2025-01-11 17:56:00 - ERROR - ޻ظ -2025-01-11 17:56:00 - INFO - -2025-01-11 17:56:06 - ERROR - ޻ظ -2025-01-11 17:56:06 - INFO - -2025-01-11 17:56:11 - ERROR - ޻ظ -2025-01-11 17:56:11 - INFO - -2025-01-11 17:56:16 - ERROR - ޻ظ -2025-01-11 17:56:16 - INFO - -2025-01-11 17:56:22 - ERROR - ޻ظ -2025-01-11 17:56:22 - INFO - -2025-01-11 17:56:27 - ERROR - ޻ظ -2025-01-11 17:56:27 - INFO - -2025-01-11 17:56:33 - ERROR - ޻ظ -2025-01-11 17:56:33 - INFO - -2025-01-11 17:56:38 - ERROR - ޻ظ -2025-01-11 17:56:38 - INFO - -2025-01-11 17:56:43 - ERROR - ޻ظ -2025-01-11 17:56:44 - INFO - -2025-01-11 17:56:49 - ERROR - ޻ظ -2025-01-11 17:56:49 - INFO - -2025-01-11 17:56:54 - ERROR - ޻ظ -2025-01-11 17:56:54 - INFO - -2025-01-11 17:57:00 - ERROR - ޻ظ -2025-01-11 17:57:00 - INFO - -2025-01-11 17:57:05 - ERROR - ޻ظ -2025-01-11 17:57:05 - INFO - -2025-01-11 17:57:11 - ERROR - ޻ظ -2025-01-11 17:57:11 - INFO - -2025-01-11 17:57:16 - ERROR - ޻ظ -2025-01-11 17:57:16 - INFO - -2025-01-11 17:57:21 - ERROR - ޻ظ -2025-01-11 17:57:21 - INFO - -2025-01-11 17:57:27 - ERROR - ޻ظ -2025-01-11 17:57:27 - INFO - -2025-01-11 17:57:32 - ERROR - ޻ظ -2025-01-11 17:57:32 - INFO - -2025-01-11 17:57:38 - ERROR - ޻ظ -2025-01-11 17:57:38 - INFO - -2025-01-11 17:57:43 - ERROR - ޻ظ -2025-01-11 17:57:43 - INFO - -2025-01-11 17:57:48 - ERROR - ޻ظ -2025-01-11 17:57:49 - INFO - -2025-01-11 17:57:54 - ERROR - ޻ظ -2025-01-11 17:57:54 - INFO - -2025-01-11 17:57:59 - ERROR - ޻ظ -2025-01-11 17:57:59 - INFO - -2025-01-11 17:58:05 - ERROR - ޻ظ -2025-01-11 17:58:05 - INFO - -2025-01-11 17:58:10 - ERROR - ޻ظ -2025-01-11 17:58:10 - INFO - -2025-01-11 17:58:16 - ERROR - ޻ظ -2025-01-11 17:58:16 - INFO - -2025-01-11 17:58:21 - ERROR - ޻ظ -2025-01-11 17:58:21 - INFO - -2025-01-11 17:58:26 - ERROR - ޻ظ -2025-01-11 17:58:26 - INFO - -2025-01-11 17:58:32 - ERROR - ޻ظ -2025-01-11 17:58:32 - INFO - -2025-01-11 17:58:37 - ERROR - ޻ظ -2025-01-11 17:58:37 - INFO - -2025-01-11 17:58:43 - ERROR - ޻ظ -2025-01-11 17:58:43 - INFO - -2025-01-11 17:58:48 - ERROR - ޻ظ -2025-01-11 17:58:48 - INFO - -2025-01-11 17:58:53 - ERROR - ޻ظ -2025-01-11 17:58:54 - INFO - -2025-01-11 17:58:59 - ERROR - ޻ظ -2025-01-11 17:58:59 - INFO - -2025-01-11 17:59:04 - ERROR - ޻ظ -2025-01-11 17:59:04 - INFO - -2025-01-11 17:59:10 - ERROR - ޻ظ -2025-01-11 17:59:10 - INFO - -2025-01-11 17:59:15 - ERROR - ޻ظ -2025-01-11 17:59:15 - INFO - -2025-01-11 17:59:21 - ERROR - ޻ظ -2025-01-11 17:59:21 - INFO - -2025-01-11 17:59:26 - ERROR - ޻ظ -2025-01-11 17:59:26 - INFO - -2025-01-11 17:59:31 - ERROR - ޻ظ -2025-01-11 17:59:32 - INFO - -2025-01-11 17:59:37 - ERROR - ޻ظ -2025-01-11 17:59:37 - INFO - -2025-01-11 17:59:42 - ERROR - ޻ظ -2025-01-11 17:59:42 - INFO - -2025-01-11 17:59:48 - ERROR - ޻ظ -2025-01-11 17:59:48 - INFO - -2025-01-11 17:59:53 - ERROR - ޻ظ -2025-01-11 17:59:53 - INFO - -2025-01-11 17:59:58 - ERROR - ޻ظ -2025-01-11 17:59:59 - INFO - -2025-01-11 18:00:04 - ERROR - ޻ظ -2025-01-11 18:00:04 - INFO - -2025-01-11 18:00:09 - ERROR - ޻ظ -2025-01-11 18:00:09 - INFO - -2025-01-11 18:00:15 - ERROR - ޻ظ -2025-01-11 18:00:15 - INFO - -2025-01-11 18:00:20 - ERROR - ޻ظ -2025-01-11 18:00:20 - INFO - -2025-01-11 18:00:26 - ERROR - ޻ظ -2025-01-11 18:00:26 - INFO - -2025-01-11 18:00:31 - ERROR - ޻ظ -2025-01-11 18:00:31 - INFO - -2025-01-11 18:00:36 - ERROR - ޻ظ -2025-01-11 18:00:37 - INFO - -2025-01-11 18:00:42 - ERROR - ޻ظ -2025-01-11 18:00:42 - INFO - -2025-01-11 18:00:47 - ERROR - ޻ظ -2025-01-11 18:00:47 - INFO - -2025-01-11 18:00:53 - ERROR - ޻ظ -2025-01-11 18:00:53 - INFO - -2025-01-11 18:00:58 - ERROR - ޻ظ -2025-01-11 18:00:58 - INFO - -2025-01-11 18:01:04 - ERROR - ޻ظ -2025-01-11 18:01:04 - INFO - -2025-01-11 18:01:09 - ERROR - ޻ظ -2025-01-11 18:01:09 - INFO - -2025-01-11 18:01:14 - ERROR - ޻ظ -2025-01-11 18:01:14 - INFO - -2025-01-11 18:01:20 - ERROR - ޻ظ -2025-01-11 18:01:20 - INFO - -2025-01-11 18:01:25 - ERROR - ޻ظ -2025-01-11 18:01:25 - INFO - -2025-01-11 18:01:31 - ERROR - ޻ظ -2025-01-11 18:01:31 - INFO - -2025-01-11 18:01:36 - ERROR - ޻ظ -2025-01-11 18:01:36 - INFO - -2025-01-11 18:01:41 - ERROR - ޻ظ -2025-01-11 18:01:42 - INFO - -2025-01-11 18:01:47 - ERROR - ޻ظ -2025-01-11 18:01:47 - INFO - -2025-01-11 18:01:52 - ERROR - ޻ظ -2025-01-11 18:01:52 - INFO - -2025-01-11 18:01:58 - ERROR - ޻ظ -2025-01-11 18:01:58 - INFO - -2025-01-11 18:02:03 - ERROR - ޻ظ -2025-01-11 18:02:03 - INFO - -2025-01-11 18:02:09 - ERROR - ޻ظ -2025-01-11 18:02:09 - INFO - -2025-01-11 18:02:14 - ERROR - ޻ظ -2025-01-11 18:02:14 - INFO - -2025-01-11 18:02:19 - ERROR - ޻ظ -2025-01-11 18:02:19 - INFO - -2025-01-11 18:02:25 - ERROR - ޻ظ -2025-01-11 18:02:25 - INFO - -2025-01-11 18:02:30 - ERROR - ޻ظ -2025-01-11 18:02:30 - INFO - -2025-01-11 18:02:36 - ERROR - ޻ظ -2025-01-11 18:02:36 - INFO - -2025-01-11 18:02:41 - ERROR - ޻ظ -2025-01-11 18:02:41 - INFO - -2025-01-11 18:02:46 - ERROR - ޻ظ -2025-01-11 18:02:47 - INFO - -2025-01-11 18:02:52 - ERROR - ޻ظ -2025-01-11 18:02:52 - INFO - -2025-01-11 18:02:57 - ERROR - ޻ظ -2025-01-11 18:02:57 - INFO - -2025-01-11 18:03:03 - ERROR - ޻ظ -2025-01-11 18:03:03 - INFO - -2025-01-11 18:03:08 - ERROR - ޻ظ -2025-01-11 18:03:08 - INFO - -2025-01-11 18:03:14 - ERROR - ޻ظ -2025-01-11 18:03:14 - INFO - -2025-01-11 18:03:19 - ERROR - ޻ظ -2025-01-11 18:03:19 - INFO - -2025-01-11 18:03:24 - ERROR - ޻ظ -2025-01-11 18:03:25 - INFO - -2025-01-11 18:03:30 - ERROR - ޻ظ -2025-01-11 18:03:30 - INFO - -2025-01-11 18:03:35 - ERROR - ޻ظ -2025-01-11 18:03:35 - INFO - -2025-01-11 18:03:41 - ERROR - ޻ظ -2025-01-11 18:03:41 - INFO - -2025-01-11 18:03:46 - ERROR - ޻ظ -2025-01-11 18:03:46 - INFO - -2025-01-11 18:03:51 - ERROR - ޻ظ -2025-01-11 18:03:52 - INFO - -2025-01-11 18:03:57 - ERROR - ޻ظ -2025-01-11 18:03:57 - INFO - -2025-01-11 18:04:02 - ERROR - ޻ظ -2025-01-11 18:04:02 - INFO - -2025-01-11 18:04:08 - ERROR - ޻ظ -2025-01-11 18:04:08 - INFO - -2025-01-11 18:04:13 - ERROR - ޻ظ -2025-01-11 18:04:13 - INFO - -2025-01-11 18:04:19 - ERROR - ޻ظ -2025-01-11 18:04:19 - INFO - -2025-01-11 18:04:24 - ERROR - ޻ظ -2025-01-11 18:04:24 - INFO - -2025-01-11 18:04:29 - ERROR - ޻ظ -2025-01-11 18:04:30 - INFO - -2025-01-11 18:04:35 - ERROR - ޻ظ -2025-01-11 18:04:35 - INFO - -2025-01-11 18:04:40 - ERROR - ޻ظ -2025-01-11 18:04:40 - INFO - -2025-01-11 18:04:46 - ERROR - ޻ظ -2025-01-11 18:04:46 - INFO - -2025-01-11 18:04:51 - ERROR - ޻ظ -2025-01-11 18:04:51 - INFO - -2025-01-11 18:04:56 - ERROR - ޻ظ -2025-01-11 18:04:57 - INFO - -2025-01-11 18:05:02 - ERROR - ޻ظ -2025-01-11 18:05:02 - INFO - -2025-01-11 18:05:07 - ERROR - ޻ظ -2025-01-11 18:05:07 - INFO - -2025-01-11 18:05:13 - ERROR - ޻ظ -2025-01-11 18:05:13 - INFO - -2025-01-11 18:05:18 - ERROR - ޻ظ -2025-01-11 18:05:18 - INFO - -2025-01-11 18:05:24 - ERROR - ޻ظ -2025-01-11 18:05:24 - INFO - -2025-01-11 18:05:29 - ERROR - ޻ظ -2025-01-11 18:05:29 - INFO - -2025-01-11 18:05:34 - ERROR - ޻ظ -2025-01-11 18:05:35 - INFO - -2025-01-11 18:05:40 - ERROR - ޻ظ -2025-01-11 18:05:40 - INFO - -2025-01-11 18:05:45 - ERROR - ޻ظ -2025-01-11 18:05:45 - INFO - -2025-01-11 18:05:51 - ERROR - ޻ظ -2025-01-11 18:05:51 - INFO - -2025-01-11 18:05:56 - ERROR - ޻ظ -2025-01-11 18:05:56 - INFO - -2025-01-11 18:06:02 - ERROR - ޻ظ -2025-01-11 18:06:02 - INFO - -2025-01-11 18:06:07 - ERROR - ޻ظ -2025-01-11 18:06:07 - INFO - -2025-01-11 18:06:12 - ERROR - ޻ظ -2025-01-11 18:06:12 - INFO - -2025-01-11 18:06:18 - ERROR - ޻ظ -2025-01-11 18:06:18 - INFO - -2025-01-11 18:06:23 - ERROR - ޻ظ -2025-01-11 18:06:23 - INFO - -2025-01-11 18:06:29 - ERROR - ޻ظ -2025-01-11 18:06:29 - INFO - -2025-01-11 18:06:34 - ERROR - ޻ظ -2025-01-11 18:06:34 - INFO - -2025-01-11 18:06:39 - ERROR - ޻ظ -2025-01-11 18:06:40 - INFO - -2025-01-11 18:06:45 - ERROR - ޻ظ -2025-01-11 18:06:45 - INFO - -2025-01-11 18:06:50 - ERROR - ޻ظ -2025-01-11 18:06:50 - INFO - +024-12-16 14:46:23 - INFO - ����ϵͳ +2024-12-16 14:46:55 - ERROR - �޻ظ� +2024-12-16 14:47:22 - INFO - �û������˳����� +2024-12-16 15:40:00 - INFO - ����ϵͳ +2024-12-16 15:40:22 - ERROR - ��¼����ʧ�� +2024-12-16 15:40:22 - INFO - �˳�ϵͳ +2024-12-16 15:59:52 - INFO - ����ϵͳ +2024-12-16 16:00:25 - ERROR - �޻ظ� +2024-12-17 09:37:22 - INFO - ����ϵͳ +2024-12-17 09:37:30 - INFO - ����Ͷ�ϴ���:1 +2024-12-17 09:37:31 - INFO - �л����������� +2024-12-17 09:37:31 - INFO - �л����Զ�����״̬ +2024-12-17 09:37:32 - INFO - ��һ��ȷ������ +2024-12-17 09:37:32 - INFO - ��Ӧ��1:Ͷ�Ͽ�ʼ +2024-12-17 09:37:32 - INFO - ����IO����: 3��1 +2024-12-17 09:37:37 - INFO - ����IO����: 3��0 +2024-12-17 09:37:37 - INFO - Ͷ�Ͽ�ʼ +2024-12-17 09:37:42 - INFO - ������� +2024-12-17 09:37:42 - INFO - Ͷ��ֹͣ +2024-12-17 09:37:44 - INFO - �л����������� +2024-12-17 09:37:44 - INFO - �л����Զ�����״̬ +2024-12-17 09:37:44 - INFO - ������� +2024-12-17 09:37:44 - ERROR - super-class __init__() of type StopDialog was never called +2024-12-17 09:37:44 - ERROR - ��е��δ����ʵ��·�ߵ��ƶ���δ��Ѱ�ҵ�����·����λ +2024-12-17 09:37:44 - INFO - ����IO����: 3��2 +2024-12-17 09:37:44 - INFO - �ƶ���λ��:����ֱ�ߣ�X:7.0-Y:50.0-Z:1.0-U:12.0-V:0.0-W:1.0 +2024-12-17 09:37:44 - INFO - ����IO����: 3��0 +2024-12-17 09:37:54 - ERROR - �޻ظ� +2024-12-17 19:35:21 - INFO - ����ϵͳ +2024-12-17 19:35:53 - ERROR - �޻ظ� +2024-12-20 17:01:09 - INFO - ����ϵͳ +2024-12-20 17:01:11 - ERROR - ��¼����ʧ�� +2024-12-20 17:01:11 - INFO - �˳�ϵͳ diff --git a/log/log.log.2024-12-14 b/log/log.log.2024-12-14 new file mode 100644 index 0000000..b6b837c --- /dev/null +++ b/log/log.log.2024-12-14 @@ -0,0 +1,40 @@ +2024-12-14 16:10:42 - INFO - ϵͳ +2024-12-14 16:11:15 - ERROR - ޻ظ +2024-12-14 16:14:02 - INFO - ƶλ:·m0:1.0-m2:0.0-m3:0.0-m4:0.0-m5:0.0-m6:0.0 +2024-12-14 16:14:06 - ERROR - ޻ظ +2024-12-14 16:14:10 - INFO - Ͷϴ:1 +2024-12-14 16:14:11 - INFO - л +2024-12-14 16:14:11 - INFO - лԶ״̬ +2024-12-14 16:14:12 - INFO - һȷ +2024-12-14 16:14:12 - INFO - Ӧ1:ͶϿʼ +2024-12-14 16:14:12 - INFO - IO: 31 +2024-12-14 16:14:14 - ERROR - ޻ظ +2024-12-14 16:14:17 - INFO - IO: 30 +2024-12-14 16:14:17 - INFO - ͶϿʼ +2024-12-14 16:14:21 - ERROR - ޻ظ +2024-12-14 16:21:15 - INFO - ˳ϵͳ +2024-12-14 16:21:15 - ERROR - ޻ظ +2024-12-14 16:21:15 - ERROR - model +2024-12-14 16:21:27 - INFO - ϵͳ +2024-12-14 16:21:59 - ERROR - ޻ظ +2024-12-14 16:37:33 - INFO - л +2024-12-14 16:37:33 - INFO - лԶ״̬ +2024-12-14 16:37:34 - INFO - һȷ +2024-12-14 16:37:34 - INFO - Ӧ1:ͶϿʼ +2024-12-14 16:37:34 - INFO - IO: 31 +2024-12-14 16:37:38 - ERROR - ޻ظ +2024-12-14 16:37:39 - INFO - Ͷϴ:10 +2024-12-14 16:37:39 - INFO - л +2024-12-14 16:37:39 - INFO - лԶ״̬ +2024-12-14 16:37:39 - INFO - IO: 30 +2024-12-14 16:37:39 - INFO - ͶϿʼ +2024-12-14 16:37:46 - ERROR - ޻ظ +2024-12-14 16:39:27 - INFO - +2024-12-14 16:39:27 - INFO - Ͷֹͣ +2024-12-14 16:39:28 - INFO - +2024-12-14 16:39:28 - INFO - Ͷֹͣ +2024-12-14 16:39:30 - INFO - Ͷͣ +2024-12-14 16:39:30 - ERROR - ޻ظ +2024-12-14 16:39:30 - INFO - Ͷͣ +2024-12-14 16:39:38 - ERROR - ޻ظ +2024-12-14 16:41:47 - INFO - û˳ From 1e31f7838bd7fe2aed8e85f87dc26f4a1fca099f Mon Sep 17 00:00:00 2001 From: cdeyw <827523911@qq.com> Date: Thu, 16 Jan 2025 09:25:49 +0000 Subject: [PATCH 2/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Trace/handeye=5Fcalibr?= =?UTF-8?q?ation.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trace/handeye_calibration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Trace/handeye_calibration.py b/Trace/handeye_calibration.py index 619fa55..de2128e 100644 --- a/Trace/handeye_calibration.py +++ b/Trace/handeye_calibration.py @@ -54,7 +54,7 @@ def R_matrix(x,y,z,u,v,w): # 图像识别结果:xyz和法向量 -def getPosition(x,y,z,a,b,c,points): +def getPosition(x,y,z,a,b,c,rotation,points): target = np.asarray([x, y, z,1]) camera2robot = np.loadtxt('./Trace/com_pose2.txt', delimiter=' ') #相对目录且分隔符采用os.sep # robot2base = rotation From 0febde6d124ea84ed679d5b005776b95f1e10e77 Mon Sep 17 00:00:00 2001 From: cdeyw <827523911@qq.com> Date: Thu, 16 Jan 2025 09:25:49 +0000 Subject: [PATCH 3/7] =?UTF-8?q?UPDATE=20Vision=20=E4=BF=AE=E5=A4=8DZ?= =?UTF-8?q?=E8=BD=B4=E6=8A=93=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trace/handeye_calibration.py | 2 +- Vision/camera_coordinate_dete.py | 2 +- Vision/camera_coordinate_dete_planevison.py | 493 ++++++++++++++++++++ Vision/tool/utils.py | 74 ++- get_position_test.py | 20 +- 5 files changed, 578 insertions(+), 13 deletions(-) create mode 100644 Vision/camera_coordinate_dete_planevison.py diff --git a/Trace/handeye_calibration.py b/Trace/handeye_calibration.py index 619fa55..de2128e 100644 --- a/Trace/handeye_calibration.py +++ b/Trace/handeye_calibration.py @@ -54,7 +54,7 @@ def R_matrix(x,y,z,u,v,w): # 图像识别结果:xyz和法向量 -def getPosition(x,y,z,a,b,c,points): +def getPosition(x,y,z,a,b,c,rotation,points): target = np.asarray([x, y, z,1]) camera2robot = np.loadtxt('./Trace/com_pose2.txt', delimiter=' ') #相对目录且分隔符采用os.sep # robot2base = rotation diff --git a/Vision/camera_coordinate_dete.py b/Vision/camera_coordinate_dete.py index 15ce6cd..87ca44f 100644 --- a/Vision/camera_coordinate_dete.py +++ b/Vision/camera_coordinate_dete.py @@ -75,7 +75,7 @@ class Detection: self.model = yolov8_segment_openvino(model_path, device, conf_thres=0.3, iou_thres=0.3) - def get_position(self, Point_isVision=False, Box_isPoint=True, First_Depth =True, Iter_Max_Pixel = 30, save_img_point=0, Height_reduce = 60, width_reduce = 100, Xmin =330, Xmax = 1050, Ymin =290 ,Ymax = 690 ): + def get_position(self, Point_isVision=False, Box_isPoint=True, First_Depth =True, Iter_Max_Pixel = 30, save_img_point=0, Height_reduce = 80, width_reduce = 60, Xmin =160, Xmax = 1050, Ymin =290 ,Ymax = 780): """ 检测料袋相关信息 :param Point_isVision: 点云可视化 diff --git a/Vision/camera_coordinate_dete_planevison.py b/Vision/camera_coordinate_dete_planevison.py new file mode 100644 index 0000000..a574df0 --- /dev/null +++ b/Vision/camera_coordinate_dete_planevison.py @@ -0,0 +1,493 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +''' +@Project :AutoControlSystem-master +@File :camera_coordinate_dete.py +@IDE :PyCharm +@Author :hjw +@Date :2024/8/27 14:24 +''' + +import numpy as np +import cv2 +import open3d as o3d +import time +from Vision.tool.CameraRVC import camera_rvc +from Vision.tool.CameraPe import camera_pe +from Vision.yolo.yolov8_pt_seg import yolov8_segment +from Vision.yolo.yolov8_openvino import yolov8_segment_openvino +from Vision.tool.utils import find_position +from Vision.tool.utils import class_names +from Vision.tool.utils import get_disk_space +from Vision.tool.utils import remove_nan_mean_value +from Vision.tool.utils import out_bounds_dete +from Vision.tool.utils import uv_to_XY +from Vision.tool.utils import fit_plane_vision +import os + +class Detection_plane_vsion: + + def __init__(self, use_openvino_model=False, cameraType = 'RVC'): + self.use_openvino_model = use_openvino_model + self.cameraType = cameraType + if self.use_openvino_model == False: + model_path = ''.join([os.getcwd(), '/Vision/model/pt/one_bag.pt']) + device = 'cpu' + self.model = yolov8_segment() + self.model.load_model(model_path, device) + else: + model_path = ''.join([os.getcwd(), '/Vision/model/openvino/one_bag.xml']) + device = 'CPU' + self.model = yolov8_segment_openvino(model_path, device, conf_thres=0.6, iou_thres=0.6) + + img_path = ''.join([os.getcwd(), '/Vision/model/data/2025_01_16_08_47_02.png']) + point_path = ''.join([os.getcwd(), '/Vision/model/data/2025_01_16_08_47_02.xyz']) + self.img = cv2.imread(img_path) + self.img = cv2.resize(self.img,((int(self.img.shape[1]/2),int(self.img.shape[0]/2)))) + self.point = np.loadtxt(point_path).reshape(self.img.shape[0], self.img.shape[1], 3) + self.seg_distance_threshold = 5 + pass + + def get_position(self, Point_isVision=False, Box_isPoint=True, First_Depth=True, Iter_Max_Pixel=30, + save_img_point=0, Height_reduce=60, width_reduce=100, Xmin=0, Xmax=1050, Ymin=0, Ymax=780): + """ + 检测料袋相关信息 + :param Point_isVision: 点云可视化 + :param Box_isPoint: True 返回点云值; False 返回box相机坐标 + :param First_Depth: True 返回料袋中心点深度最小的点云值; False 返回面积最大的料袋中心点云值 + :param Iter_Max_Pixel: [int] 点云为NAN时,向该点周围寻找替代值,寻找最大区域(Iter_Max_Pixel×Iter_Max_Pixel) + :param save_img_point: 0不保存 ; 1保存原图 ;2保存处理后的图 ; 3保存点云和原图;4 保存点云和处理后的图; 5 异常数据保存(点云NAN) + :param Height_reduce: 检测框的高内缩像素 + :param width_reduce: 检测框的宽内缩像素 + :param Xmin: 限定料袋中心点的范围 + :param Xmax: 限定料袋中心点的范围 + :param Ymin: 限定料袋中心点的范围 + :param Ymax: 限定料袋中心点的范围 + + :return ret: bool 相机是否正常工作 + :return img: ndarray 返回img + :return xyz: list 目标中心点云值形如[x,y,z] + :return nx_ny_nz: list 拟合平面法向量,形如[a,b,c] + :return box_list: list 内缩检测框四顶点,形如[[x1,y1],[],[],[]] + + """ + #ret, img, pm, _depth_align = self.camera_rvc.get_img_and_point_map() # 拍照,获取图像及 + ret = 1 + img = self.img + pm = self.point + # self.camera_rvc.caminit_isok = True + + if True: + if ret == 1: + if save_img_point != 0: + if get_disk_space(path=os.getcwd()) < 15: # 内存小于15G,停止保存数据 + save_img_point = 0 + print('系统内存不足,无法保存数据') + else: + save_path = ''.join([os.getcwd(), '/Vision/model/data/', + time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time()))]) + save_img_name = ''.join([save_path, '.png']) + save_point_name = ''.join([save_path, '.xyz']) + if save_img_point == 5: + Abnormal_data_img = img.copy() + if save_img_point == 1 or save_img_point == 3: + cv2.imwrite(save_img_name, img) + if save_img_point == 3 or save_img_point == 4 or save_img_point == 5: + row_list = list(range(1, img.shape[0], 2)) + column_list = list(range(1, img.shape[1], 2)) + pm_save = pm.copy() + pm_save1 = np.delete(pm_save, row_list, axis=0) + point_new = np.delete(pm_save1, column_list, axis=1) + point_new = point_new.reshape(-1, 3) + if save_img_point == 5: + Abnormal_data_point = point_new.copy() + else: + np.savetxt(save_point_name, point_new) + if self.use_openvino_model == False: + flag, det_cpu, dst_img, masks, category_names = self.model.model_inference(img, 0) + else: + flag, det_cpu, scores, masks, category_names = self.model.segment_objects(img) + if flag == 1: + xyz = [] + nx_ny_nz = [] + RegionalArea = [] + Depth_Z = [] + uv = [] + seg_point = [] + box_list = [] + if Point_isVision == True: + pm2 = pm.copy() + pm2 = pm2.reshape(-1, 3) + pm2 = pm2[~np.isnan(pm2).all(axis=-1), :] + pm2[:, 2] = pm2[:, 2] + 0.25 + pcd2 = o3d.geometry.PointCloud() + pcd2.points = o3d.utility.Vector3dVector(pm2) + # o3d.visualization.draw_geometries([pcd2]) + + for i, item in enumerate(det_cpu): + + # 画box + box_x1, box_y1, box_x2, box_y2 = item[0:4].astype(np.int32) + if self.use_openvino_model == False: + label = category_names[int(item[5])] + else: + label = class_names[int(item[4])] + rand_color = (0, 255, 255) + score = item[4] + org = (int((box_x1 + box_x2) / 2), int((box_y1 + box_y2) / 2)) + x_center = int((box_x1 + box_x2) / 2) + y_center = int((box_y1 + box_y2) / 2) + text = '{}|{:.2f}'.format(label, score) + cv2.putText(img, text, org=org, fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=0.8, + color=rand_color, + thickness=2) + # 画mask + # mask = masks[i].cpu().numpy().astype(int) + if self.use_openvino_model == False: + mask = masks[i].cpu().data.numpy().astype(int) + else: + mask = masks[i].astype(int) + mask = mask[box_y1:box_y2, box_x1:box_x2] + + # mask = masks[i].numpy().astype(int) + h, w = box_y2 - box_y1, box_x2 - box_x1 + mask_colored = np.zeros((h, w, 3), dtype=np.uint8) + mask_colored[np.where(mask)] = rand_color + ################################## + imgray = cv2.cvtColor(mask_colored, cv2.COLOR_BGR2GRAY) + # cv2.imshow('mask',imgray) + # cv2.waitKey(1) + # 2、二进制图像 + ret, binary = cv2.threshold(imgray, 10, 255, 0) + # 阈值 二进制图像 + # cv2.imshow('bin',binary) + # cv2.waitKey(1) + contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) + # all_point_list = contours_in(contours) + # print(len(all_point_list)) + max_contour = None + max_perimeter = 0 + for contour in contours: # 排除小分割区域或干扰区域 + perimeter = cv2.arcLength(contour, True) + if perimeter > max_perimeter: + max_perimeter = perimeter + max_contour = contour + + ''' + 拟合最小外接矩形,计算矩形中心 + ''' + + rect = cv2.minAreaRect(max_contour) + if rect[1][0] - width_reduce > 30 and rect[1][1] - Height_reduce > 30: + rect_reduce = ( + (rect[0][0], rect[0][1]), (rect[1][0] - width_reduce, rect[1][1] - Height_reduce), + rect[2]) + else: + rect_reduce = ( + (rect[0][0], rect[0][1]), (rect[1][0], rect[1][1]), rect[2]) + + # cv2.boxPoints可以将轮廓点转换为四个角点坐标 + box_outside = cv2.boxPoints(rect) + # 这一步不影响后面的画图,但是可以保证四个角点坐标为顺时针 + startidx = box_outside.sum(axis=1).argmin() + box_outside = np.roll(box_outside, 4 - startidx, 0) + box_outside = np.intp(box_outside) + box_outside = box_outside.reshape((-1, 1, 2)).astype(np.int32) + + # cv2.boxPoints可以将轮廓点转换为四个角点坐标 + box_reduce = cv2.boxPoints(rect_reduce) + startidx = box_reduce.sum(axis=1).argmin() + box_reduce = np.roll(box_reduce, 4 - startidx, 0) + box_reduce = np.intp(box_reduce) + box_reduce = box_reduce.reshape((-1, 1, 2)).astype(np.int32) + + ''' + 提取区域范围内的(x, y) + ''' + mask_inside = np.zeros(binary.shape, np.uint8) + cv2.fillPoly(mask_inside, [box_reduce], (255)) + pixel_point2 = cv2.findNonZero(mask_inside) + # result = np.zeros_like(color_image) + select_point = [] + for i in range(pixel_point2.shape[0]): + select_point.append(pm[pixel_point2[i][0][1] + box_y1, pixel_point2[i][0][0] + box_x1]) + select_point = np.array(select_point) + pm_seg = select_point.reshape(-1, 3) + pm_seg = pm_seg[~np.isnan(pm_seg).all(axis=-1), :] # 剔除 nan + if pm_seg.size < 100: + print("分割点云数量较少,无法拟合平面") + continue + + # cv2.imshow('result', point_result) + ''' + 拟合平面,计算法向量 + ''' + pcd = o3d.geometry.PointCloud() + pcd.points = o3d.utility.Vector3dVector(pm_seg) + plane_model, inliers = pcd.segment_plane(distance_threshold=self.seg_distance_threshold, + ransac_n=5, + num_iterations=5000) + [a, b, c, d] = plane_model + print('[a, b, c, d]',[a, b, c, d] ) + # print(f"Plane equation: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0") + # inlier_cloud = pcd.select_by_index(inliers) # 点云可视化 + # inlier_cloud.paint_uniform_color([1.0, 0, 0]) + # outlier_cloud = pcd.select_by_index(inliers, invert=True) + # outlier_cloud.paint_uniform_color([0, 1, 0]) + # o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud]) + + box_outside = box_outside + [[[box_x1, box_y1]], [[box_x1, box_y1]], [[box_x1, box_y1]], + [[box_x1, box_y1]]] + box = box_reduce + [[[box_x1, box_y1]], [[box_x1, box_y1]], [[box_x1, box_y1]], + [[box_x1, box_y1]]] + + box[0][0][1], box[0][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[0][0][1], + box[0][0][0]) + box[1][0][1], box[1][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[1][0][1], + box[1][0][0]) + box[2][0][1], box[2][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[2][0][1], + box[2][0][0]) + box[3][0][1], box[3][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[3][0][1], + box[3][0][0]) + if Box_isPoint == True: + box_point_x1, box_point_y1, box_point_z1 = remove_nan_mean_value(pm, box[0][0][1], + box[0][0][0], + iter_max=Iter_Max_Pixel) + box_point_x2, box_point_y2, box_point_z2 = remove_nan_mean_value(pm, box[1][0][1], + box[1][0][0], + iter_max=Iter_Max_Pixel) + box_point_x3, box_point_y3, box_point_z3 = remove_nan_mean_value(pm, box[2][0][1], + box[2][0][0], + iter_max=Iter_Max_Pixel) + box_point_x4, box_point_y4, box_point_z4 = remove_nan_mean_value(pm, box[3][0][1], + box[3][0][0], + iter_max=Iter_Max_Pixel) + else: + x1, y1, z1 = uv_to_XY(box[0][0][0], box[0][0][1]) + x2, y2, z2 = uv_to_XY(box[1][0][0], box[1][0][1]) + x3, y3, z3 = uv_to_XY(box[2][0][0], box[2][0][1]) + x4, y4, z4 = uv_to_XY(box[3][0][0], box[3][0][1]) + x_rotation_center = int((box[0][0][0] + box[1][0][0] + box[2][0][0] + box[3][0][0]) / 4) + y_rotation_center = int((box[0][0][1] + box[1][0][1] + box[2][0][1] + box[3][0][1]) / 4) + point_x, point_y, point_z = remove_nan_mean_value(pm, y_rotation_center, x_rotation_center, + iter_max=Iter_Max_Pixel) + if x_rotation_center < Xmin or x_rotation_center > Xmax or y_rotation_center < Ymin or y_rotation_center > Ymax: + continue + cv2.circle(img, (x_rotation_center, y_rotation_center), 4, (255, 255, 255), 5) # 标出中心点 + if np.isnan(point_x): # 点云值为无效值 + continue + else: + if Box_isPoint == True: + box_list.append( + [[box_point_x1, box_point_y1, box_point_z1], + [box_point_x2, box_point_y2, box_point_z2], + [box_point_x3, box_point_y3, box_point_z3], + [box_point_x4, box_point_y4, box_point_z4]]) + print(box_list) + else: + box_list.append([[x1, y1, z1], + [x2, y2, z2], + [x3, y3, z3], + [x4, y4, z4], + ]) + if self.cameraType == 'RVC': + xyz.append([point_x * 1000, point_y * 1000, point_z * 1000]) + Depth_Z.append(point_z * 1000) + elif self.cameraType == 'Pe': + xyz.append([point_x, point_y, point_z]) + Depth_Z.append(point_z) + nx_ny_nz.append([a, b, c]) + RegionalArea.append(cv2.contourArea(max_contour)) + uv.append([x_rotation_center, y_rotation_center]) + seg_point.append(pm_seg) + cv2.polylines(img, [box], True, (0, 255, 0), 2) + cv2.polylines(img, [box_outside], True, (226, 12, 89), 2) + + _idx = find_position(Depth_Z, RegionalArea, 100, First_Depth) + + if _idx == None: + if save_img_point == 5: + cv2.imwrite(save_img_name, Abnormal_data_img) + np.savetxt(save_point_name, Abnormal_data_point) + return 1, img, None, None, None + else: + cv2.circle(img, (uv[_idx][0], uv[_idx][1]), 30, (0, 0, 255), 20) # 标出中心点 + + if Point_isVision == True: + # 拟合平面展示 + plane_vision = fit_plane_vision(box_list, [a, b, c, d]) + pcd = o3d.geometry.PointCloud() + pcd.points = o3d.utility.Vector3dVector(seg_point[_idx]) + plane_model, inliers = pcd.segment_plane(distance_threshold=self.seg_distance_threshold, + ransac_n=5, + num_iterations=5000) + inlier_cloud = pcd.select_by_index(inliers) # 点云可视化 + inlier_cloud.paint_uniform_color([1.0, 0, 0]) + outlier_cloud = pcd.select_by_index(inliers, invert=True) + outlier_cloud.paint_uniform_color([0, 0, 1]) + o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud, pcd2, plane_vision]) + if save_img_point == 2 or save_img_point == 4: + save_img = cv2.resize(img, (720, 540)) + cv2.imwrite(save_img_name, save_img) + return 1, img, xyz[_idx], nx_ny_nz[_idx], box_list[_idx] + else: + if save_img_point == 2 or save_img_point == 4: + save_img = cv2.resize(img, (720, 540)) + cv2.imwrite(save_img_name, save_img) + if save_img_point == 5: + cv2.imwrite(save_img_name, Abnormal_data_img) + np.savetxt(save_point_name, Abnormal_data_point) + return 1, img, None, None, None + + else: + print("RVC X Camera capture failed!") + return 0, None, None, None, None + + else: + print("RVC X Camera is not opened!") + return 0, None, None, None, None + + def get_take_photo_position(self, Height_reduce=30, width_reduce=30): + """ + 专用于拍照位置点查找,检测当前拍照点能否检测到料袋 + :param Height_reduce: + :param width_reduce: + :return ret: bool 相机是否正常工作 + :return img: ndarry 返回img + :return find_target: bool 是否有目标 + :return xyz: list 目标中心点云值,形如[x,y,z] + + """ + ret = 1 + img = self.img + pm = self.point + find_target = False + + if ret == 1: + if self.use_openvino_model == False: + flag, det_cpu, dst_img, masks, category_names = self.model.model_inference(img, 0) + else: + flag, det_cpu, scores, masks, category_names = self.model.segment_objects(img) + if flag == 1: + xyz = [] + RegionalArea = [] + Depth_Z = [] + uv = [] + for i, item in enumerate(det_cpu): + find_target = True + # 画box + box_x1, box_y1, box_x2, box_y2 = item[0:4].astype(np.int32) + if self.use_openvino_model == False: + label = category_names[int(item[5])] + else: + label = class_names[int(item[4])] + rand_color = (0, 255, 255) + score = item[4] + org = (int((box_x1 + box_x2) / 2), int((box_y1 + box_y2) / 2)) + x_center = int((box_x1 + box_x2) / 2) + y_center = int((box_y1 + box_y2) / 2) + text = '{}|{:.2f}'.format(label, score) + cv2.putText(img, text, org=org, fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=0.8, + color=rand_color, + thickness=2) + # 画mask + # mask = masks[i].cpu().numpy().astype(int) + if self.use_openvino_model == False: + mask = masks[i].cpu().data.numpy().astype(int) + else: + mask = masks[i].astype(int) + mask = mask[box_y1:box_y2, box_x1:box_x2] + + # mask = masks[i].numpy().astype(int) + h, w = box_y2 - box_y1, box_x2 - box_x1 + mask_colored = np.zeros((h, w, 3), dtype=np.uint8) + mask_colored[np.where(mask)] = rand_color + ################################## + imgray = cv2.cvtColor(mask_colored, cv2.COLOR_BGR2GRAY) + # cv2.imshow('mask',imgray) + # cv2.waitKey(1) + # 2、二进制图像 + ret, binary = cv2.threshold(imgray, 10, 255, 0) + # 阈值 二进制图像 + # cv2.imshow('bin',binary) + # cv2.waitKey(1) + contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) + # all_point_list = contours_in(contours) + # print(len(all_point_list)) + max_contour = None + max_perimeter = 0 + for contour in contours: # 排除小分割区域或干扰区域 + perimeter = cv2.arcLength(contour, True) + if perimeter > max_perimeter: + max_perimeter = perimeter + max_contour = contour + + ''' + 拟合最小外接矩形,计算矩形中心 + ''' + + rect = cv2.minAreaRect(max_contour) + if rect[1][0] - width_reduce < 30 or rect[1][1] - Height_reduce < 30: + rect_reduce = ( + (rect[0][0], rect[0][1]), (rect[1][0] - width_reduce, rect[1][1] - Height_reduce), rect[2]) + else: + rect_reduce = ( + (rect[0][0], rect[0][1]), (rect[1][0], rect[1][1]), rect[2]) + # cv2.boxPoints可以将轮廓点转换为四个角点坐标 + box_outside = cv2.boxPoints(rect) + # 这一步不影响后面的画图,但是可以保证四个角点坐标为顺时针 + startidx = box_outside.sum(axis=1).argmin() + box_outside = np.roll(box_outside, 4 - startidx, 0) + box_outside = np.intp(box_outside) + box_outside = box_outside.reshape((-1, 1, 2)).astype(np.int32) + + # cv2.boxPoints可以将轮廓点转换为四个角点坐标 + box_reduce = cv2.boxPoints(rect_reduce) + startidx = box_reduce.sum(axis=1).argmin() + box_reduce = np.roll(box_reduce, 4 - startidx, 0) + box_reduce = np.intp(box_reduce) + box_reduce = box_reduce.reshape((-1, 1, 2)).astype(np.int32) + + box_outside = box_outside + [[[box_x1, box_y1]], [[box_x1, box_y1]], [[box_x1, box_y1]],[[box_x1, box_y1]]] + box = box_reduce + [[[box_x1, box_y1]], [[box_x1, box_y1]], [[box_x1, box_y1]], [[box_x1, box_y1]]] + + box[0][0][1], box[0][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[0][0][1], box[0][0][0]) + box[1][0][1], box[1][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[1][0][1], box[1][0][0]) + box[2][0][1], box[2][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[2][0][1], box[2][0][0]) + box[3][0][1], box[3][0][0] = out_bounds_dete(pm.shape[0], pm.shape[1], box[3][0][1], box[3][0][0]) + + x_rotation_center = int((box[0][0][0] + box[1][0][0] + box[2][0][0] + box[3][0][0]) / 4) + y_rotation_center = int((box[0][0][1] + box[1][0][1] + box[2][0][1] + box[3][0][1]) / 4) + point_x, point_y, point_z = remove_nan_mean_value(pm, y_rotation_center, x_rotation_center) + cv2.circle(img, (x_rotation_center, y_rotation_center), 4, (255, 255, 255), 5) # 标出中心点 + if np.isnan(point_x): # 点云值为无效值 + continue + else: + if self.cameraType == 'RVC': + xyz.append([point_x * 1000, point_y * 1000, point_z * 1000]) + Depth_Z.append(point_z * 1000) + elif self.cameraType == 'Pe': + xyz.append([point_x, point_y, point_z]) + Depth_Z.append(point_z) + RegionalArea.append(cv2.contourArea(max_contour)) + uv.append([x_rotation_center, y_rotation_center]) + + cv2.polylines(img, [box], True, (0, 255, 0), 2) + cv2.polylines(img, [box_outside], True, (226, 12, 89), 2) + + _idx = find_position(Depth_Z, RegionalArea, 100,True) + + if _idx == None: + return 1, img, find_target, None + else: + cv2.circle(img, (uv[_idx][0], uv[_idx][1]), 30, (0, 0, 255), 20) # 标出中心点 + return 1, img, find_target, xyz[_idx] + else: + return 0, None, None + + + def release(self): + self.model.clear() + + + diff --git a/Vision/tool/utils.py b/Vision/tool/utils.py index 81248b8..2ca22ac 100644 --- a/Vision/tool/utils.py +++ b/Vision/tool/utils.py @@ -164,19 +164,27 @@ def get_disk_space(path='C:'): def find_position(Depth_Z, RegionalArea, RegionalArea_Threshold, first_depth=True): if first_depth == True: sorted_id = sorted(range(len(Depth_Z)), key=lambda k: Depth_Z[k], reverse=False) - Depth_Z1 = [Depth_Z[i] for i in sorted_id] - RegionalArea1 = [RegionalArea[i] for i in sorted_id] - for i in range(len(Depth_Z1)): - if RegionalArea1[i] > RegionalArea_Threshold: - return sorted_id[i] + # Depth_Z1 = [Depth_Z[i] for i in sorted_id] + # RegionalArea1 = [RegionalArea[i] for i in sorted_id] + # for i in range(len(Depth_Z1)): + # if RegionalArea1[i] > RegionalArea_Threshold: + # return sorted_id[i] + if len(sorted_id)>0: + return sorted_id[0] + else: + return else: sorted_id = sorted(range(len(RegionalArea)), key=lambda k: RegionalArea[k], reverse=True) - Depth_Z1 = [Depth_Z[i] for i in sorted_id] - RegionalArea1 = [RegionalArea[i] for i in sorted_id] - for i in range(len(Depth_Z1)): - if RegionalArea1[i] > RegionalArea_Threshold: - return sorted_id[i] + # Depth_Z1 = [Depth_Z[i] for i in sorted_id] + # RegionalArea1 = [RegionalArea[i] for i in sorted_id] + # for i in range(len(Depth_Z1)): + # if RegionalArea1[i] > RegionalArea_Threshold: + # return sorted_id[i] + if len(sorted_id)>0: + return sorted_id[0] + else: + return class_names = ['box', 'other'] @@ -328,6 +336,52 @@ def draw_comparison(img1, img2, name1, name2, fontsize=2.6, text_thickness=3): +def fit_plane_vision(box_list, normal_vector): + plane_x = [] + plane_y = [] + plane_z = [] + print(box_list) + plane_x.append(box_list[0][0][0]) + plane_x.append(box_list[0][1][0]) + plane_x.append(box_list[0][2][0]) + plane_x.append(box_list[0][3][0]) + plane_y.append(box_list[0][0][1]) + plane_y.append(box_list[0][1][1]) + plane_y.append(box_list[0][2][1]) + plane_y.append(box_list[0][3][1]) + plane_z.append(box_list[0][0][2]) + plane_z.append(box_list[0][1][2]) + plane_z.append(box_list[0][2][2]) + plane_z.append(box_list[0][3][2]) + # 定义平面方程的参数 + a = normal_vector[0] + b = normal_vector[1] + c = normal_vector[2] + d = normal_vector[3] + + # 定义平面的范围 + x_range = (int(min(plane_x)), int(max(plane_x))) + y_range = (int(min(plane_y)), int(max(plane_y))) + z_range = (int(min(plane_z)), int(max(plane_z))) + + # 生成平面网格 + x = np.linspace(x_range[0], x_range[1], 10) + y = np.linspace(y_range[0], y_range[1], 20) + X, Y = np.meshgrid(x, y) + Z = -(a * X + b * Y + d) / c # 根据平面方程计算 Z 坐标 + + # 确保 Z 坐标在指定范围内 + Z = np.clip(Z, z_range[0], z_range[1]) + + # 创建 TriangleMesh 对象 + import open3d as o3d + plane_mesh = o3d.geometry.TriangleMesh() + plane_mesh.vertices = o3d.utility.Vector3dVector(np.vstack((X.ravel(), Y.ravel(), Z.ravel())).T) + plane_mesh.triangles = o3d.utility.Vector3iVector( + np.array([[i, i + 1, i + 100] for i in range(99)] + [[i + 1, i + 101, i + 100] for i in range(99)])) + plane_mesh.paint_uniform_color([1, 0.5, 0.5]) # 设置平面颜色 + + return plane_mesh diff --git a/get_position_test.py b/get_position_test.py index b1947dd..37867b4 100644 --- a/get_position_test.py +++ b/get_position_test.py @@ -11,6 +11,7 @@ import cv2 import os from Vision.camera_coordinate_dete import Detection +from Vision.camera_coordinate_dete_planevison import Detection_plane_vsion from Trace.handeye_calibration import * from Vision.tool.utils import get_disk_space from Vision.tool.utils import remove_nan_mean_value @@ -41,6 +42,23 @@ def detectionPosition_test(): cv2.imshow('img', img) cv2.waitKey(0) +def Detection_plane_vsion_test(): + detection = Detection_plane_vsion() + while True: + ret, img, xyz, nx_ny_nz, box = detection.get_position(Point_isVision=True, save_img_point=1) + if ret==1: + print('xyz点云坐标:', xyz) + print('nx_ny_nz法向量:', nx_ny_nz) + print('矩形框四顶点:', box) + # img = cv2.resize(img,(720, 540)) + if xyz!=None: + transformation_matrix = R_matrix(521.534, 0.705, 850.03, 0.0, 90.0, 0.0) # (x, y, z, u, v, w) + target_position, noraml_base = getPosition(xyz[0], xyz[1], xyz[2], nx_ny_nz[0], nx_ny_nz[1], nx_ny_nz[2], transformation_matrix, box) + print("target_position:", target_position) + print("noraml_base", noraml_base) + cv2.imshow('img', img) + cv2.waitKey(0) + def take_photo_position_test(): detection = Detection() while True: @@ -115,4 +133,4 @@ def bag_collection_test(): if __name__ == '__main__': - detectionPosition_test() \ No newline at end of file + Detection_plane_vsion_test() \ No newline at end of file From a59ae87213293f5f6946d04694996675c32fd97e Mon Sep 17 00:00:00 2001 From: HJW <1576345902@qq.com> Date: Fri, 17 Jan 2025 08:53:49 +0800 Subject: [PATCH 4/7] =?UTF-8?q?UPDATE=20Vision=20=E4=BF=AE=E5=A4=8DZ?= =?UTF-8?q?=E8=BD=B4=E6=8A=93=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Vision/camera_coordinate_dete_planevison.py | 1 + Vision/tool/utils.py | 1 + get_position_test.py | 1 + 3 files changed, 3 insertions(+) diff --git a/Vision/camera_coordinate_dete_planevison.py b/Vision/camera_coordinate_dete_planevison.py index a574df0..5b76953 100644 --- a/Vision/camera_coordinate_dete_planevison.py +++ b/Vision/camera_coordinate_dete_planevison.py @@ -46,6 +46,7 @@ class Detection_plane_vsion: self.img = cv2.resize(self.img,((int(self.img.shape[1]/2),int(self.img.shape[0]/2)))) self.point = np.loadtxt(point_path).reshape(self.img.shape[0], self.img.shape[1], 3) self.seg_distance_threshold = 5 + pass def get_position(self, Point_isVision=False, Box_isPoint=True, First_Depth=True, Iter_Max_Pixel=30, diff --git a/Vision/tool/utils.py b/Vision/tool/utils.py index 2ca22ac..b7e7c25 100644 --- a/Vision/tool/utils.py +++ b/Vision/tool/utils.py @@ -160,6 +160,7 @@ def get_disk_space(path='C:'): # space_free = bytes2human(usage.free) # space_used_percent = bytes2human(usage.percent) space_free = float(space_free[:-1]) + return space_free def find_position(Depth_Z, RegionalArea, RegionalArea_Threshold, first_depth=True): if first_depth == True: diff --git a/get_position_test.py b/get_position_test.py index 37867b4..5147eb7 100644 --- a/get_position_test.py +++ b/get_position_test.py @@ -83,6 +83,7 @@ def detectionPerson_test(): else: cv2.destroyAllWindows() + print("person", person) # video_path = ''.join([os.getcwd(), '/Vision/model/data/1.mp4']) # cam = cv2.VideoCapture(video_path) From 65b262079b74cf93be9b0c8cbcfcdeb1efa2e91c Mon Sep 17 00:00:00 2001 From: HJW <1576345902@qq.com> Date: Fri, 17 Jan 2025 08:55:30 +0800 Subject: [PATCH 5/7] =?UTF-8?q?UPDATE=20Vision=20=E4=BF=AE=E5=A4=8DZ?= =?UTF-8?q?=E8=BD=B4=E6=8A=93=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Vision/camera_coordinate_dete_planevison.py | 1 - Vision/tool/utils.py | 1 - get_position_test.py | 1 - 3 files changed, 3 deletions(-) diff --git a/Vision/camera_coordinate_dete_planevison.py b/Vision/camera_coordinate_dete_planevison.py index 5b76953..a574df0 100644 --- a/Vision/camera_coordinate_dete_planevison.py +++ b/Vision/camera_coordinate_dete_planevison.py @@ -46,7 +46,6 @@ class Detection_plane_vsion: self.img = cv2.resize(self.img,((int(self.img.shape[1]/2),int(self.img.shape[0]/2)))) self.point = np.loadtxt(point_path).reshape(self.img.shape[0], self.img.shape[1], 3) self.seg_distance_threshold = 5 - pass def get_position(self, Point_isVision=False, Box_isPoint=True, First_Depth=True, Iter_Max_Pixel=30, diff --git a/Vision/tool/utils.py b/Vision/tool/utils.py index b7e7c25..2ca22ac 100644 --- a/Vision/tool/utils.py +++ b/Vision/tool/utils.py @@ -160,7 +160,6 @@ def get_disk_space(path='C:'): # space_free = bytes2human(usage.free) # space_used_percent = bytes2human(usage.percent) space_free = float(space_free[:-1]) - return space_free def find_position(Depth_Z, RegionalArea, RegionalArea_Threshold, first_depth=True): if first_depth == True: diff --git a/get_position_test.py b/get_position_test.py index 5147eb7..e4b5ef4 100644 --- a/get_position_test.py +++ b/get_position_test.py @@ -96,7 +96,6 @@ def detectionPerson_test(): # cv2.waitKey(1) # else: # break - def HIK_Camera_test(): MY_CAMERA = camera_HIK("192.168.1.121", 554, "admin", "zlzk.123") while True: From fd7b49bfa73692cc32700078acd4ce0a7c86225e Mon Sep 17 00:00:00 2001 From: HJW <1576345902@qq.com> Date: Fri, 17 Jan 2025 08:58:19 +0800 Subject: [PATCH 6/7] =?UTF-8?q?UPDATE=20Vision=20=E4=BF=AE=E5=A4=8DZ?= =?UTF-8?q?=E8=BD=B4=E6=8A=93=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Vision/camera_coordinate_dete.py | 1 + Vision/camera_coordinate_dete_planevison.py | 1 + Vision/tool/utils.py | 1 + get_position_test.py | 1 + 4 files changed, 4 insertions(+) diff --git a/Vision/camera_coordinate_dete.py b/Vision/camera_coordinate_dete.py index 87ca44f..e18f189 100644 --- a/Vision/camera_coordinate_dete.py +++ b/Vision/camera_coordinate_dete.py @@ -618,6 +618,7 @@ class Detection: print("RVC X Camera is not opened!") return 0, None, None, None, None + def get_take_photo_position(self, Height_reduce = 30, width_reduce = 30): """ 检测当前拍照点能否检测到料袋 diff --git a/Vision/camera_coordinate_dete_planevison.py b/Vision/camera_coordinate_dete_planevison.py index a574df0..932870b 100644 --- a/Vision/camera_coordinate_dete_planevison.py +++ b/Vision/camera_coordinate_dete_planevison.py @@ -25,6 +25,7 @@ from Vision.tool.utils import uv_to_XY from Vision.tool.utils import fit_plane_vision import os + class Detection_plane_vsion: def __init__(self, use_openvino_model=False, cameraType = 'RVC'): diff --git a/Vision/tool/utils.py b/Vision/tool/utils.py index 2ca22ac..27ff772 100644 --- a/Vision/tool/utils.py +++ b/Vision/tool/utils.py @@ -151,6 +151,7 @@ def remove_nan(pm, y, x): break return point_x, point_y, point_z + def get_disk_space(path='C:'): usage = psutil.disk_usage(path) diff --git a/get_position_test.py b/get_position_test.py index e4b5ef4..5cec46f 100644 --- a/get_position_test.py +++ b/get_position_test.py @@ -104,6 +104,7 @@ def HIK_Camera_test(): img = cv2.resize(frame, (800, 600)) cv2.imshow('img', img) cv2.waitKey(1) + def detectionBagNum_test(): detectionBagNum = DetectionBagNum() video_path = ''.join([os.getcwd(), '/Vision/model/data/2.mp4']) From 910b832ba9b15cefd6b155e5d74b407b2b034c49 Mon Sep 17 00:00:00 2001 From: cdeyw <827523911@qq.com> Date: Fri, 17 Jan 2025 17:57:35 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E7=BB=A7=E7=94=B5=E5=99=A8=E6=8E=A7=E5=88=B6=E7=94=B5?= =?UTF-8?q?=E7=A3=81=E9=98=80=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EMV.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 EMV.py diff --git a/EMV.py b/EMV.py new file mode 100644 index 0000000..d9713a2 --- /dev/null +++ b/EMV.py @@ -0,0 +1,62 @@ +import socket +import binascii + +# 网络继电器的 IP 和端口 +HOST = '192.168.20.18' +PORT = 50000 + + +valve_commands = { + 1: { + 'open': '00000000000601050000FF00', + 'close': '000000000006010500000000', + }, + 2: { + 'open': '00000000000601050001FF00', + 'close': '000000000006010500010000', + }, + 3: { + 'open': '00000000000601050002FF00', + 'close': '000000000006010500020000', + } +} + + +# 将十六进制字符串转换为字节数据并发送 +def send_command(command): + byte_data = binascii.unhexlify(command) + + # 创建套接字并连接到继电器 + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock.connect((HOST, PORT)) + sock.send(byte_data) + response = sock.recv(1024) + return response + + +# 控制电磁阀打开 +def open(grasp, throw, shake): + if grasp: + print("打开电磁阀 1")#抓取 + send_command(valve_commands[1]['open']) + if throw: + print("打开电磁阀 2")#扔袋 + send_command(valve_commands[2]['open']) + if shake: + print("打开电磁阀 3")#震动 + send_command(valve_commands[3]['open']) + + +# 控制电磁阀关闭 +def close(grasp, throw, shake ): + if grasp: + print("关闭电磁阀 1") + send_command(valve_commands[1]['close']) + if throw: + print("关闭电磁阀 2") + send_command(valve_commands[2]['close']) + if shake: + print("关闭电磁阀 3") + send_command(valve_commands[3]['close']) + +close(True,True,True)#参数传True和False \ No newline at end of file