User Tools

Site Tools


ece4560:lynx6:calibration

Lynx 6: Calibration


This module deals with calibration of the manipulator in the straight-up home configuration (basically the manipulator arm points straight up into the air). A straight up home configuration means that this is the zero configuration for the robot. All joint angles are measured from this reference configuration. Calibration will require measuring the link lengths associated to your manipulator, the servo command limits for each of the joints, and the angular limits of the manipulator. The limits imposed may actually be less than the full range of motion of the servo motors. The sub-problems below lead you through the procedure.

  1. Measure the lengths of all the links. Make sure to include the base in your measurements for vertical height as appropriate. Try to be as accurate as possible since mistakes here will impact your ability to do useful things with the manipulator.
    There is a member variable in the {\tt lynx6} class object for specifying these variables. They've been set based on my setup, but may be different for yours. The numbers in the list are the base to shoulder height, the length of the first link, the length of the second link, then the link to middle of gripper length, and the additional length to gripper tip.
  2. Determine what are the proper servo command limits for your particular manipulator. The manipulator code for interfacing is located here with links describing in more detail what calibration entails. Please read the document twice and be careful, as the manipulators break easily.
  3. The last phase is to associate angles to the servo commands. Using the straight-up reference configuration as the zero configuration for the joint-angles, determine the angular limits associated to the joints with respect to that reference configuration as best as you can. You *will* need a protractor.
    Although the robot may be able to go to bigger angles, try to round the joint-angle workspace to the nearest 30, 45, 90, or 180 degrees. For example, if you measure that it can go -37 degrees to 48 degrees, then make the joint angle limits $[-30, 45]$ in order to have nice clean limits. You'll need to figure out what servo commands correspond to those particular angle limits.

Save it into your own file whose default is called lynx6parms.mat for use with the lynx6 class file. Turn in the values of the structure in the lynx6parm matlab file as well as your link lengths. Some folk have been turning in a screenshot of the calibration dialog window. That works too (Ctrl-PrintScreen will capture it and Ctrl-V will paste the image). If you save the screen capture to an image file, you should even be able to load the image file, display it in a Matlab figure, then have it be output as part of the publish execution.

Demo: Verification

To make sure that all the manipulators are calibrated, the demo will involve a verification exercise. To that end, I (or the TA) will run some code on your manipulator to do the following:

  1. Invoke setArm with all zeros to verify that your traight up really is straight up;
  2. Invoke setArm with the proper values to make it go straight out;
  3. Call a for loop that will go to 5 random configurations, to be judged (subjectively) for correctness; then finally
  4. Invoke the forward kinematics routine, that you will have coded, for a specific set of joint angles and go to the desired joint angles. You will be graded based on how close your manipulator is to the predicted forward kinematics. This module part requires for you to code up the forward kinematics function in the lynx6 m-file. The function should return an element of the SE3 class.

I will post to t-square some code to do the main loop that you should demo to I or the TA to test for correct calibration. It is similar to the piktul code that was run and includes the predicted opening and closing widths of the gripper.


Back Main

ece4560/lynx6/calibration.txt · Last modified: 2023/03/06 10:31 by 127.0.0.1