Skip to content

Commit ef7d3b6

Browse files
author
andy
committed
store old version
1 parent 4e09547 commit ef7d3b6

12 files changed

+137
-59
lines changed

__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import os
22
import subprocess
33

4-
VERSION = '1.1.8'
4+
VERSION = '1.2.1'
55

66

77
def get_version():

dist/Productions.exe

-14.7 KB
Binary file not shown.

ot3_testing/http_client.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import json
2-
32
import requests
43

54
headers = {

ot3_testing/test_config/pipette_leveling_config.py

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import enum
2-
from ot3_testing.ot_type import Point
2+
from ot3_testing.ot_type import Point, Mount
33

44

55
class CalibrateMethod(enum.Enum):
@@ -43,24 +43,35 @@ class CalibrateMethod(enum.Enum):
4343
"UninstallPos": {"Point": Point(223, 203, 500)}
4444
}
4545

46-
ChannelDefinitionCH96 = {"left_front": {"device_addr": 1, "channel": 0, "offset": 0},
47-
"left_rear": {"device_addr": 1, "channel": 1, "offset": 0},
48-
"right_front": {"device_addr": 1, "channel": 2, "offset": 0},
49-
"right_rear": {"device_addr": 1, "channel": 3, "offset": 0},
50-
"rear_right": {"device_addr": 1, "channel": 5, "offset": 0},
51-
"rear_left": {"device_addr": 1, "channel": 4, "offset": 0},
52-
"below_front_left": {"device_addr": 2, "channel": 8, "offset": 0},
53-
"below_front_right": {"device_addr": 2, "channel": 9, "offset": 0},
54-
"below_rear_left": {"device_addr": 2, "channel": 10, "offset": 0},
55-
"below_rear_right": {"device_addr": 2, "channel": 11, "offset": 0},
56-
}
46+
ChannelDefinitionCH96 = {
47+
Mount.LEFT: {
48+
"left_front": {"device_addr": 1, "channel": 0, "offset": 0},
49+
"left_rear": {"device_addr": 1, "channel": 1, "offset": 0},
50+
"right_front": {"device_addr": 1, "channel": 2, "offset": 0},
51+
"right_rear": {"device_addr": 1, "channel": 3, "offset": 0},
52+
"rear_right": {"device_addr": 1, "channel": 5, "offset": 0},
53+
"rear_left": {"device_addr": 1, "channel": 4, "offset": 0},
54+
"below_front_left": {"device_addr": 2, "channel": 8, "offset": 0},
55+
"below_front_right": {"device_addr": 2, "channel": 9, "offset": 0},
56+
"below_rear_left": {"device_addr": 2, "channel": 10, "offset": 0},
57+
"below_rear_right": {"device_addr": 2, "channel": 11, "offset": 0},
58+
59+
},
60+
Mount.RIGHT: {
61+
62+
}
63+
64+
}
5765

5866
# device addr are un-useful in ch8
59-
ChannelDefinitionCH8 = {"left_front": {"device_addr": 1, "channel": 0, "offset": 0},
60-
"left_rear": {"device_addr": 1, "channel": 1, "offset": 0},
61-
"right_front": {"device_addr": 1, "channel": 4, "offset": 0},
62-
"right_rear": {"device_addr": 1, "channel": 5, "offset": 0},
63-
}
67+
ChannelDefinitionCH8 = {
68+
Mount.LEFT: {"left_front": {"device_addr": 1, "channel": 0, "offset": 0},
69+
"left_rear": {"device_addr": 1, "channel": 1, "offset": 0}},
70+
Mount.RIGHT: {"right_front": {"device_addr": 1, "channel": 4, "offset": 0},
71+
"right_rear": {"device_addr": 1, "channel": 5, "offset": 0}
72+
}
73+
74+
}
6475

6576
SlotLocationCH8 = {"Y-C1-Left": {"Point": Point(215.42, 198.33, 299.16), "compensation": {"rear": 0, "front": 0}},
6677
"Y-C1-Right": {"Point": Point(172.07, 197.18, 299.16), "compensation": {"rear": 0, "front": 0.045}},
Binary file not shown.
Binary file not shown.

ot3_testing/tests/base_init.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from ot3_testing.protocol.protocol_context import ProtocolContext
22
from ot3_testing.hardware_control.hardware_control import HardwareControl
33
from typing import Union, List
4-
from devices.amsamotion_sensor import LaserSensor
4+
from devices.laser_stj_10_m0 import LaserSensor
55
import time
66

77

@@ -84,7 +84,7 @@ async def read_distance_mm_from_code_value(self, code_value: int, get_voltage=Fa
8484

8585
async def read_definition_distance(self, definition: List, channel_definition, laser: LaserSensor, mount,
8686
only_code=False,
87-
send=False, add_compensation=True, wait_time= 1) -> dict:
87+
send=False, add_compensation=True, wait_time=8) -> dict:
8888
"""
8989
read distance, using one device id (please use same device_id in the positions)
9090
:param definition:
@@ -94,16 +94,18 @@ async def read_definition_distance(self, definition: List, channel_definition, l
9494
:param only_code:
9595
:param send: 是否需要发送再接收,区分两种传感器
9696
:param add_compensation: 添加补偿
97+
:param wait_time: 等待时间
9798
:return:
9899
"""
99100
print("Reading Sensor...")
100101
result = {}
101-
for i in range(wait_time):
102-
time.sleep(1)
103-
print(f"wait ({wait_time})/{i+1}...")
102+
if wait_time >= 0:
103+
for i in range(wait_time):
104+
time.sleep(1)
105+
print(f"wait ({wait_time})/{i + 1}...")
104106
_channel_definition = channel_definition[mount]
105107
device_addr = _channel_definition[definition[0]]["device_addr"]
106-
code_value_list = laser.get_distance_multi(device_addr)
108+
code_value_list = laser.read_sensor_low()
107109

108110
if only_code:
109111
for item in definition:

ot3_testing/tests/gripper_leveling.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from ot3_testing.tests.base_init import TestBase
22
from ot3_testing.ot_type import Mount, Point
3-
from devices.amsamotion_sensor import LaserSensor
3+
from devices.laser_stj_10_m0 import LaserSensor
44
from ot3_testing.test_config.gripper_leveling_config import CalibrateMethod, Gripper_Position, GripperChannel, \
55
GripperMiddlePosition
66
import asyncio
@@ -10,6 +10,7 @@
1010

1111
ApplyCompensationFlag = True
1212
CalibrateFlag = True
13+
WAIT_TIME = 30
1314

1415
TEST_SPEC = 0.45
1516

@@ -28,7 +29,8 @@ def init_laser_sensor(self, send=False):
2829
init 96ch device
2930
:return:
3031
"""
31-
self.laser_sensor = LaserSensor(send=send)
32+
self.laser_sensor = LaserSensor()
33+
self.laser_sensor.accuracy = "low"
3234
self.laser_sensor.init_device()
3335

3436
async def move_to_test_point(self, p: Point):
@@ -63,9 +65,9 @@ async def move_step_with_test_name(self, test_name: str, direction: str, step=0.
6365

6466
if "y" in test_name:
6567
if direction == "plus": # x+
66-
_point = _point - Point(step, 0, 0)
67-
else:
6868
_point = _point + Point(step, 0, 0)
69+
else:
70+
_point = _point - Point(step, 0, 0)
6971
elif "x" in test_name:
7072
if direction == "plus": # x+
7173
_point = _point + Point(0, step, 0)
@@ -126,7 +128,8 @@ async def run_slot(self, p: Point, test_name, definition, keep_reading=False):
126128
if CalibrateFlag and "z" not in test_name:
127129
await self.calibrate_to_zero(test_name, 0.1, definition, GripperChannel, method=CalibrateMethod.Approach)
128130
while True:
129-
result = await self.read_definition_distance(definition, GripperChannel, self.laser_sensor, self.mount)
131+
result = await self.read_definition_distance(definition, GripperChannel, self.laser_sensor, self.mount,
132+
wait_time=WAIT_TIME)
130133
print(result)
131134
self.judge_test_result(list(result.values()), TEST_SPEC)
132135
if not keep_reading:

ot3_testing/tests/pipette_leveling.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from ot3_testing.tests.base_init import TestBase
55
from ot3_testing.ot_type import Mount
66
from typing import Union, List
7-
from devices.amsamotion_sensor import LaserSensor
7+
from devices.laser_stj_10_m0 import LaserSensor
88

99
from ot3_testing.test_config.pipette_leveling_config import *
1010
import datetime
@@ -16,6 +16,7 @@
1616
ApplyCompensationFlag = True
1717

1818
TEST_SPEC = 0.45
19+
WAIT_TIME = 30
1920

2021

2122
class PipetteLeveling(TestBase):
@@ -31,13 +32,15 @@ def __init__(self, slot_location, channel_definition, robot_ip=None):
3132
self.channel_offsets = None
3233
self.robot_ip = robot_ip
3334
self.select_default = False
35+
self.mount = Mount.LEFT
3436

3537
def init_laser_sensor(self, send=True):
3638
"""
3739
init 96ch device
3840
:return:
3941
"""
40-
self.laser_sensor = LaserSensor(send=send)
42+
self.laser_sensor = LaserSensor()
43+
self.laser_sensor.accuracy = "low"
4144
self.laser_sensor.init_device(select_default=self.select_default)
4245

4346
async def move_to_test_point(self, p: Point, mount: Mount):
@@ -166,7 +169,8 @@ async def calibrate_to_zero(self, test_name: str, spec: float, read_definition:
166169
init_step = 2
167170
while True:
168171
# read voltage
169-
ret_dict = await self._read_definition_distance(read_definition, only_code=True)
172+
ret_dict = await self.read_definition_distance(read_definition, self.channel_definition, self.laser_sensor,
173+
self.mount, only_code=True)
170174
# min_voltage = min(distance_list)
171175
_min = list(ret_dict.values())[0] # judge the first channel
172176
min_voltage = await self._read_distance_mm_from_code_value(_min, get_voltage=True)
@@ -217,7 +221,8 @@ async def run_test_slot(self, test_slot_name: str, test_slot_value: str, read_de
217221
if with_cal:
218222
await self.calibrate_to_zero(test_slot_value, 0.1, read_definition, method=CalibrateMethod.Approach)
219223
while True:
220-
ret_dict = await self._read_definition_distance(read_definition)
224+
ret_dict = await self.read_definition_distance(read_definition, self.channel_definition, self.laser_sensor,
225+
self.mount, wait_time=WAIT_TIME)
221226
for key, value in ret_dict.items():
222227
print(f"{test_slot_value}-{key}: {value}")
223228
_value_list = list(ret_dict.values())
@@ -241,6 +246,7 @@ async def run_8ch_test(self, flex_name: str, project_path=None):
241246
print("Test Right Side...")
242247
MountDefinition = Mount.RIGHT
243248
await self.api.home()
249+
self.mount = MountDefinition
244250
self.init_laser_sensor(send=False)
245251

246252
ret = await self.run_test_slot("Test A2-right", "Y-A2-Right", ["right_front", "right_rear"],
@@ -258,7 +264,7 @@ async def run_8ch_test(self, flex_name: str, project_path=None):
258264
print("Test Left Side...")
259265
MountDefinition = Mount.LEFT
260266
await self.api.home()
261-
267+
self.mount = MountDefinition
262268
ret = await self.run_test_slot("Test C1-left", "Y-C1-Left", ["left_front", "left_rear"], with_cal=DoCalibrate)
263269
test_result.update(ret)
264270

@@ -325,6 +331,7 @@ async def run_96ch_test(self, flex_name: str, project_path=None):
325331
addr = self.robot_ip
326332
self.initial_api(addr, hc=True)
327333
await self.api.home()
334+
self.mount = Mount.LEFT
328335
self.init_laser_sensor(send=False)
329336

330337
ret = await self.run_test_slot("Test y-Axis-A2", "A2-Y", ["left_front", "left_rear"], with_cal=DoCalibrate)
@@ -446,6 +453,6 @@ async def test_96ch_slot(self, slot_name: str):
446453
# pipette_leveling.test_name = '8ch'
447454
# asyncio.run(pipette_leveling.run_8ch_test("0527001"))
448455

449-
pipette_leveling = PipetteLeveling(SlotLocationCH96, ChannelDefinitionCH96, robot_ip="192.168.6.24")
456+
pipette_leveling = PipetteLeveling(SlotLocationCH96, ChannelDefinitionCH96, robot_ip="192.168.6.85")
450457
pipette_leveling.test_name = '96ch'
451-
asyncio.run(pipette_leveling.test_96ch_slot("C2-Z"))
458+
asyncio.run(pipette_leveling.test_96ch_slot("C3-X"))

ot3_testing/tests/zstage_leveling.py

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from ot3_testing.tests.base_init import TestBase
44
from ot3_testing.ot_type import Mount, Point
5-
from devices.amsamotion_sensor import LaserSensor
5+
from devices.laser_stj_10_m0 import LaserSensor
66
from ot3_testing.test_config.zstage_leveling_config import ZStagePoint, CalibrateMethod, ZStageChannel
77
from typing import List
88
from drivers.play_sound import play_alarm_3
@@ -15,8 +15,11 @@
1515
ApplyCompensationFlag = True
1616

1717
TEST_SPEC = 0.3
18-
DefaultPort = True
19-
AdjustBeforeTest = False
18+
DefaultPort = False
19+
AdjustBeforeTest = True
20+
21+
WAIT_TIME = 30
22+
DEBUGGING_READING = True
2023

2124

2225
class ZStageLeveling(TestBase):
@@ -34,7 +37,8 @@ def init_laser_sensor(self, send=False):
3437
init 96ch device
3538
:return:
3639
"""
37-
self.laser_sensor = LaserSensor(send=send)
40+
self.laser_sensor = LaserSensor()
41+
self.laser_sensor.accuracy = "low"
3842
self.laser_sensor.init_device(select_default=DefaultPort)
3943

4044
async def move_to_test_point(self, p: Point):
@@ -127,25 +131,45 @@ async def calibrate_to_zero(self, test_name: str, spec: float, read_definition:
127131
self.approaching = False
128132

129133
async def run_test_slot(self, point: Point, slot_name: str, read_definition: List[str],
130-
with_cal=True):
134+
with_cal=True, project_path=None):
131135
"""
132136
test slot
133137
:param point:
134138
:param slot_name:
135139
:param read_definition:
136140
:param with_cal:
141+
:param project_path:
137142
:return:
138143
"""
139144
if RequestReadyFlag:
140145
input(f">>Test {slot_name}")
141146
print(f"Test - {slot_name}")
147+
debug_front = []
148+
debug_rear = []
149+
ret_dict = {}
142150
await self.move_to_test_point(point)
143151
if with_cal:
144152
await self.calibrate_to_zero(slot_name, 0.1, read_definition, ZStageChannel,
145153
method=CalibrateMethod.Approach)
146-
147-
ret_dict = await self.read_definition_distance(read_definition, ZStageChannel, self.laser_sensor, self.mount,
148-
wait_time=5)
154+
for _i in range(WAIT_TIME):
155+
if DEBUGGING_READING:
156+
print(f"Waiting {_i}...")
157+
ret_dict = await self.read_definition_distance(read_definition, ZStageChannel, self.laser_sensor,
158+
self.mount, wait_time=1)
159+
debug_front.append(list(ret_dict.values())[0])
160+
debug_rear.append(list(ret_dict.values())[1])
161+
else:
162+
ret_dict = await self.read_definition_distance(read_definition, ZStageChannel, self.laser_sensor,
163+
self.mount, wait_time=WAIT_TIME)
164+
# save debugging result
165+
if DEBUGGING_READING:
166+
if project_path is not None:
167+
file_path = os.path.join(project_path, 'testing_data', 'debugging_z_stage_leveling.csv')
168+
else:
169+
file_path = '../../testing_data/debugging_z_stage_leveling.csv'
170+
self.save_csv(file_path, [], debug_front)
171+
self.save_csv(file_path, [], debug_rear)
172+
self.save_csv(file_path, [], [])
149173
for key, value in ret_dict.items():
150174
print(f"{slot_name}-{key}: {value}")
151175
self.judge_test_result(list(ret_dict.values()), TEST_SPEC)
@@ -154,7 +178,7 @@ async def run_test_slot(self, point: Point, slot_name: str, read_definition: Lis
154178
async def th_reading_c2(self):
155179
while True:
156180
ret_dict = await self.read_definition_distance(ZStagePoint[Mount.RIGHT]['Z-C2']["channel_definition"],
157-
ZStageChannel, self.laser_sensor, self.mount)
181+
ZStageChannel, self.laser_sensor, self.mount, wait_time=0)
158182
_ret_list = list(ret_dict.values())
159183
_difference = round(abs(max(_ret_list) - min(_ret_list)), 3)
160184
difference = int(-_difference * 1500 + 1500)
@@ -224,7 +248,7 @@ async def run_z_stage_test(self, flex_name, project_path=None):
224248
_point = p_value["point"]
225249
_compensation = p_value["compensation"]
226250
_channel_definition = p_value["channel_definition"]
227-
result = await self.run_test_slot(_point, p_key, _channel_definition)
251+
result = await self.run_test_slot(_point, p_key, _channel_definition, project_path=project_path)
228252
test_result.update(result)
229253
await self.api.home()
230254
print(test_result)

0 commit comments

Comments
 (0)