|
|
@@ -92,7 +92,7 @@ class MagDistributor:
|
|
|
self.curr_rot_deg = 0
|
|
|
self.logger.info("Mag distributor homed successfully.")
|
|
|
|
|
|
- async def _home_axis(self, dir_pin, step_pin, endstop_pin, axis='linear', max_steps = 10000, step_delay=100):
|
|
|
+ async def _home_axis(self, dir_pin, step_pin, endstop_pin, axis='linear', max_steps = 10000, step_delay=50):
|
|
|
"""
|
|
|
Home a single axis by moving until the endstop is triggered.
|
|
|
"""
|
|
|
@@ -110,7 +110,7 @@ class MagDistributor:
|
|
|
raise RuntimeError(f"{axis} axis homing failed")
|
|
|
self.logger.info(f"{axis} axis homed.")
|
|
|
|
|
|
- def move_mag_distributor_at_pos(self, pos_target, rot_target, servo_speed, step_delay=200):
|
|
|
+ def move_mag_distributor_at_pos(self, pos_target, rot_target, servo_speed, step_delay=50):
|
|
|
"""
|
|
|
Move the magazine distributor to the specified linear and rotational position.
|
|
|
"""
|
|
|
@@ -166,20 +166,25 @@ class MagDistributor:
|
|
|
# Check if cell can be picked from magazines, if not add to empty magazines and continue
|
|
|
for mag_id in mags_to_try:
|
|
|
pos = magazines[mag_id].mag_pos
|
|
|
+ # neutral, neutral
|
|
|
self.move_mag_distributor_at_pos(0, self.mag_dist_servo_angle_neutral, 1000)
|
|
|
+ # magazin, neutral
|
|
|
self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_neutral, 1000)
|
|
|
- self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_magazin, 1000)
|
|
|
- self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_neutral, 1000)
|
|
|
+ # magazin, magazin
|
|
|
+ self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_magazin, 250)
|
|
|
+ time.sleep(0.5)
|
|
|
+ # magazin, neutral
|
|
|
+ self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_neutral, 250)
|
|
|
time.sleep(1)
|
|
|
# Check cell pick sensor
|
|
|
if self.mag_dist_sensor_pin and self.gpio.get_pin(self.mag_dist_sensor_pin):
|
|
|
pos = self.config.feeder.mag_pos
|
|
|
- self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_feeder, 1000)
|
|
|
+ # feeder, feeder
|
|
|
+ self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_feeder, 250)
|
|
|
+ time.sleep(0.5)
|
|
|
+ # feeder, neutral
|
|
|
self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_neutral, 1000)
|
|
|
time.sleep(1)
|
|
|
- pos_feeder = self.config.feeder.mag_pos
|
|
|
- self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_neutral, 1000)
|
|
|
- self.move_mag_distributor_at_pos(pos.pos_mm, self.mag_dist_servo_angle_feeder, 1000)
|
|
|
self.logger.info(f"Cell successfully picked from magazine {mag_id} and deposited to feeder.")
|
|
|
self.current_magazine = mag_id # update current
|
|
|
return
|