-
Notifications
You must be signed in to change notification settings - Fork 5
Precision
Precision is a measure of reproducibility. Precision is a prerequisite for accuracy. Without precision, a robot is as useful as a neurosurgeon with severe hand tremors.
Firenodejs™ measures XY precision using the DeltaMesh. Here, we display XYPrecision with the tolerance palette, which uses brown shades to indicate XYPrecision values that exceed the XYTolerance (default 0.2mm).
Since the DeltaMesh is 3D, this XYPrecision chart has two layers. Z-layer 0 is shown on the left and z-layer 1 is shown on the right. Layer 1 is about 3mm higher than layer 1.
This XYPrecision chart reveals that the robot in question, a FirePick Delta (FPD), has an average precision of μ=0.085mm (good!) but has some shaky, imprecise spots indicated by the darker shades of brown. The precision error at these imprecise vertexes exceeds 0.8mm (bad!). Given this chart, you would have the following options:
- avoid imprecise area for PnP
- only place SMT parts with large pads separated widely (e.g., large resistors)
- address the imprecision by replacing or fixing imprecise joints
Precision measurement is a diagnostic tool. It does not fix anything or calibrate anything. Precision measurement simply evaluates your robot so that you can determine the envelope of utility. For a new and untried robot, you should measure precision at different times of the day, since temperatures changes affect precision. Also, since the precision measurement is statistical, the more you measure precision, the better idea you will have about your robot's capabilities.
We use Firenodejs™ to measure precision at each DeltaMesh vertex in the region of interest (ROI) as follows:
- Phase 1. Establish position baseline
- Phase 2. Return to each vertex to calculate image offset v.v. baseline
- Phase 3. Calculate XYPrecision at each vertex
Phase 1 captures baseline images at each DeltaMesh vertex and only needs to be repeated if the saved images are cleared (which happens on system shutdown). Phase 2 uses CalcOffset to compare other images taken at the same vertex with the baseline image for that vertex. An image offset of (0,0) is ideal, since it indicates the robot returned to exactly the same position as the baseline image. Precision decreases as the image offset increases.
To set up your factory robot for measuring precision, we need to print out the 4mm precision measurement grid and secure it firmly to the bed so that it does not move. Removable tape works well.
In addition, we need to choose the proper z-height for measurement. If the camera is too high, resolution will be poor. If the camera is too low we decrease the useful depth of field.
- Open the /camera accordion and click
more...
- Click on
Calibration Grid
and print out grid - Place and secure 4mm calibration grid under effector camera, centered and aligned to the bed edges.
- Open the /camera accordion and select the effector camera
- Open the /firestep accordion and jog the effector till a 6x6 cell section of the 4mm grid fills the camera image.
- Adjust the effector camera focus so that the grid is in focus. Some blurriness is fine if you need to stretch the depth of field to handle "high-altitude" images for other uses.
- Open the /mesh accordion and set the zMin coordinate of your DeltaMesh to match the Z-coordinate where the 6x6 cell section of the 4mm grid fills the camera image.
- Set the region of interest width and height to "something reasonable" (e.g., 180mmx180mm). If you have a Delta robot, note that precision is worse at the extreme range of motion.
- Set the number of zPlanes to 7. Higher values gather more data. Lower values gather less data in less time. This is the total number of zPlanes in the tetrahedron. We only use the bottom two.
- Click Apply to save your DeltaMesh configuration.
We first establish a position baseline by capturing images of the 4mm calibration grid at each DeltaMesh ROI vertex. Phase 1 takes about 30m and only needs to be repeated if the saved baseline RAM disk images are lost, which happens whenever the system shuts down.
- Reboot your Raspberry Pi to clear out all images and cached data
- In the /mesh accordion, click
more...
, thenReset
to clear grid data - Click Save camera ROI images to create FireKue jobs
- Run FireKue jobs (about 30m)
With the baseline images stored in RAM disk, we can now reposition the effector camera to each DeltaMesh vertex and compare the offset.
- Click Scan all vertices in ROI to create FireKue jobs
- Run FireKue jobs (about 30m)
ScanROI generates raw data that needs to be cleaned up and processed. For that, we go on to Phase 3.
The data gathered by ScanROI will have gaps were data error exceeds maxRMSE tolerance or was simply not measurable (e.g., camera error). To address this, we Mend the data before calculating XYPrecision with CalcProps:
- Click Mend
- Click CalcProps and wait about a minute (it's thinking!)
- Select XYPrecision in the chart view and check for "icky brown spots".
By definition if your machine is precise, it will return to the same location. This means that ideally you should see 0 pixel offset when returning to the same location. Here is an example of good precision. Note the statistics in the upper left corner.
If your machine has a "sticky effector rod", movement will be erratic and imprecise. The image below was taken just before the one above, and was used to diagnose a sticky effector rod. In this case, the simple application of silicon spray improved precision.
Factory robots with ball joints should <a href=https://www.youtube.com/watch?v=SO0GWeGQ_H0&feature=youtu.be>move freely without sticking. In addition, dual-spring effector rods tend to be more precise than single spring effector rods.
When experimenting with non-cartesian machine topologies, you will probably be dealing with non-linear movement where an individual stepper movement may affect multiple workspace coordinates. Firenodejs™ gives you a set of tools to tackle the non-linear challenges of your robot. In particular, you'll need to measure and establish precision well before working on accuracy. Precision provides the foundation for the success of your factory robot.