| |
| META TOPICPARENT | name="CemRobotTechGuide" |
Reading and setting robot coordinates in robot controllers
Manual robot control and hand controller operation
using iRobot to manually control robot movement (safer than using hand-held console)
- Start the iRobot software, and in the main iRobot window (Robot Control and Automatic Sample Changing) enable MANUAL MOTOR MOVES in the drop down menu at the top of the window. Insert password: nysbc1.
- Go to the MANUAL ROBOT MOTION tab. This window display the current coordinates of the two robots in all axes: x, y, z, and r (rotation), and the safe position coordinates for the respective robots. In addition, the window also contains radio buttons for choice of motions and distances (in mm).
- Whenever the axis of motion is changed, the distance will default to the smallest increment.
- select axis.
- select increment to move - will default to smallest increment whenever you change the axis of motion.
- move robot manually to desired coordinates with gripper relaxed.
Read stored coordinates from the controllers
- To obtain the coordinates for a particular position in the trajectories of the robots (the numbers of the positions can be found below) turn to the hand controller. In the hand controller push ESC until the display does not change, and thereafter Manual, and Point, and Jump. Insert the number of the point you want to move to and press enter (the button marked =>) and the display will show the coordinates of this point.
Edit robot coordinates
- The hand controller needs to be connected to the control box of the robot whose coordinates are to be managed. Confirm this connection; if necessary to change connection, shut off the power of the robot, and switch the hand controller to the correct control box.
- Read coordinates of the point that needs to be edited.
- In the hand controller push ESC until the display does not change, thereafter Manual, Point, Jump, and Edit.
- Insert the number of the point you want to edit - see numbers for the different robot positions below - press enter (the button marked =>) and the display will show the coordinates of this point. Write down these original coordinates for reference.
- Use the arrow-bars on the hand controller to move to the value that will be edited (X, Y, Z, or R). Overwrite the old value with the new. Once finished editing, press ENTER on the hand controller to save the changes and then escape on the hand controller to return to the main menu.
Absolute reset on each axis
To be done with the hand controller; procedure for the "stroke end or sensor" method (see book, page 131, Ch11.8):
- Before homing the axis move robot to a safe position where it cannot run into anything.
- MANUAL>RST.ABS (Lower F3),
- press F1-F4 to home each axis. A confirmation message appears on the guideline. Press the "F4" (YES) key to perform absolute reset of the selected axis, or the "F4" (NO) key to cancel absolute reset of the selected axis.
- F1 (M1)- x-axis
- F2 (M2)- y-axis
- F3 (M3)- z-axis
- F4 (M4)- r-axis
- After return-to-origin is complete, the machine reference of the selected axis is displayed.
- When all axes have returned to origin, the dashed line (- - - -) on the message line changes to a solid line, and return-to-origin is now complete. Then, press an axis movement key and the MPB screen displays the current position of each axis.
- To cancel the return-to-origin operation, press the "STOP" key. In this case, the message "Origin Incomplete" then appears on the message line.
- Once finished, press ESC to return to main menu.
NB: before doing the return-to-origin for a given axis, make sure the robot is in a safe position so that nothing is hit when the operation is done.
Example: Set Coordinates for holder during insertion
Read Coordinates from controller
- coordinates are stored in the controller in particular registers - to find the relevant register
- open ~/robot_software/robot_control_programs/robot_parameters.py
- scroll down and coordinates for insertion have values of 6011-6018
- register 6018 corresponds to fully inserted holder
- find xyz coordinates for register 6018
- select tab SCARA moving tools
- retrieve coordinates for register 6018
- values will be printed on the console
Alignment of Robot relative to the EM goiniometer
The interaction between the robot and the microscope has to be carefully monitored at two positions:
- The holder is inserted in the microscope with the goniometer set to the coordinates of the preset loading position. The gripper of the Cartesian robot is in an open position and moved so that it wraps closely around the handle of the grid-holder. Through the holes in the gripper, use a caliper to measure the distance from the surface of the gripper to the handle:
- drop calipers through hole in one of the grippers (30.16)
- then rotate gripper +90deg and measure again (30.63) - be careful about wires at end of gripper
- rotate gripper -180deg (29.81)
- rotate gripper -90 (30.16)
- above values indicate that there is a 0.35 runnout, corresponding to a 0.17mm displacement of the holder horizontally
- With the gripper grabbing the handle of the grid-holder, move the holder towards the insertion hole of the goniometer. Once the tip has just entered the hole, rotate the gripper +120deg, then back to 0deg, and finally to -120deg. Note the distance between the tip and the walls of the hole in the goniometer. If it is equidistant, the the robot arm and the goniometer are coaxial.
Example: Calibrating positions for 96 position grid tray (point_def.py)
This routine is used for calibration of 96 positions.
The procedure for calibrating the positions on the 96 position tray requires defining the locations of at least three of the four corners. The corners you need to define are tray positions 1, 89, and 8, which correspond to the three corners of the tray that are closest to the scara and farthest from the microscope; closest to the scara and closest to the microscope; and farthest from the scara and farthest from the microscope.
The points in the scara controller that you need to store are points 1001, 1002, and 1003 for these respectively. You need to position the scara to pick up the grid in position 1, store that position as point 1001, then move the scara to position 89 on the tray and ensure that the pickup probe enters that hole; once it is aligned there then store it as position 1002. Finally bring the probe to position 8 and lower it down cleanly into the hole. Store that position as point 1003. Instructions for using the hand-held console for manipulating the robot and storing these positions: CemRobotSetCoord
Make sure that the Z position for all three points the same; that does work since the tray is level enough (50-100 microns variation), so the grids are picked up from all tray holes at the same height.
You can check that it will pick up from each location by sending the scara to that point and turning on the vacuum then moving up a couple of mm or going to the home position.
After you have stored the positions into the memory locations 1001-1003 through the hand controller, run the iRobot program. Under the Start/Stop panel the “Define Tray Points” button should be clicked to activate the point_def.py routine.
plateAndTipTestingRoutine.py
This program runs a test to pickup a grid or some grids on the tray. You should run it in the following way,
First, edit a file called testSamples, fill in the positions to test in the specified format, such as 1, 5, 6, 6, 7, 9, 9, or 1-7, 8-9, etc. Then, run python plateAndTipTestingRoutine.py.
Torque and speed settings
- torque settings are set on a per axis basis (per motor) in robot_parameters.py file (~/robot_software/robot_control_programs/robot_parameters.py)
- look for the following lines
#added parameters for torque control on 6/23/09
#only implement torque control on cartesian robot
#torque control in both directions for each axis; x, y, z, and r
#first value for each axis is the value when going in negative direction
torque_value = [[90,90],[40,40],[90,90],[40,40]]
- speed of movements are set in a similar way
- same speed for all movements along a given axis: x, y, z, and r
torque_control_speeds = [100,25,100,50]
- note that the units for these parameters are % of maximum
SCARA robot control points:
Positions on the grid tray (for the rest of positions, see outline of grid tray)
101 position 1: upper right corner (A12)
108 position 8: lower right corner (H12)
189 position 89: upper left corner (A1)
196 position 96: lower left corner (H1)
|