legendPerceptor / BatteryLab

We aim to build an autonomous laboratory for building coin-cell batteries.
0 stars 0 forks source link

The well positions are not accurate after system reboot #4

Open legendPerceptor opened 1 day ago

legendPerceptor commented 1 day ago

Our assembly robot consists of a Meca500 robotic arm and a Zaber linear rail. The Meca500 is on the top of the linear rail. We logged the manually aligned positions of each component tray in well_positions.yaml. It takes a significant amount of time to obtain the constants because it requires 16 manual positions for each tray and we have 8 trays in total.

Now the big problem is that sometimes the positions are not precise after a system reboot. Every position is off for a few millimeters. It feels like an error combined by the imprecise movement of the linear rail and the Meca500. I don't know what the cause is. Both robot should be quite precise according to their description: Meca500 is of 0.005 mm position repeatability, and the specific Zaber rail we have (X-LRT1500BL-E08C) has an accuracy of 375 µm. The error should be way below 1mm. But this problem happened over and over and is a nightmare to deal with.

assembly robot

What could be the potential cause? What solutions do we have to deal with this problem?

legendPerceptor commented 1 day ago

I wonder if the back-and-forth movement of the linear rail will lead to a higher error. I sometimes used the button on the rail to control the slider's movement. I wonder if the hardware control of the linear rail changes the software-level behavior.

Another Meca500 is fixed on the table and it seems to be pretty precise for the battery crimping movement. I suspect the imprecision comes from the linear rail more than the Meca500.

LuckierDodge commented 20 hours ago

Does the linear rail have a built-in homing functionality or zero point? We have a linear rail in one of our autonomous labs that we have to make sure we home it before we capture any positions or after any system reboot in order to have reliable localization. We quickly got into the habit of homing it at the start of workflows.

legendPerceptor commented 19 hours ago

I'll double-check the homing situation. In ZaberRail.py, there is such logic to ensure the linear rail is homed when it is initially connected.