Both sides previous revisionPrevious revisionNext revision | Previous revision |
ece4560:lynx6:calibrate [2015/02/25 21:58] – pvela | ece4560:lynx6:calibrate [2024/08/20 21:38] (current) – external edit 127.0.0.1 |
---|
====== Lynx6 Calibration ====== | ====== Lynx6 Calibration ====== |
| |
The manipulator setup function is called ''lynx6_calibrate'' and is what you should invoke to first get acquainted with the manipulator. | The manipulator setup function is called ''lynx6_calibrate'' and is what you should invoke to first get acquainted with the manipulator. If you prefer, there is a {{ECE4560:Lynx6:Lynx6_Calibrate.pdf|pdf file}} with this same content. |
| |
| |
===== Starting ===== | ===== Starting ===== |
| -------------------- |
This function pops open a GUI that has sliders bars to control the manipulator servo motors. The servo motors are sent numerical commands that range in [500, 2500], where 500 specifies one extreme of rotation and 2500 represents the other extreme. The servo should be centered around 1500. Hence the setup function starts off with all settings at 1500. The manipulator should be plugged, powered-up, and connected to the computer | This function pops open a GUI that has sliders bars to control the manipulator servo motors. The servo motors are sent numerical commands that range in [500, 2500], where 500 specifies one extreme of rotation and 2500 represents the other extreme. The servo should be centered around 1500. Hence the setup function starts off with all settings at 1500. The manipulator should be plugged, powered-up, and connected to the computer |
via the serial cable prior to running the setup function. This is because the manipulator will be repeatedly sent the command to go to 1500 for all servos in order to activate the servo motors. If the servos do not | via the serial cable prior to running the setup function. This is because the manipulator will be repeatedly sent the command to go to 1500 for all servos in order to activate the servo motors. If the servos do not |
| |
===== The Setup Function: Sliders ===== | ===== The Setup Function: Sliders ===== |
| -------------------- |
Once the manipulator is powered-up and the servos are (safely) activated, then you can slide the bars around to test out the motion limits. You must hit **Goto** every time you change the slider, if you want the | Once the manipulator is powered-up and the servos are (safely) activated, then you can slide the bars around to test out the motion limits. You must hit **Goto** every time you change the slider, if you want the |
manipulator to actually move. Enabling the **Continuous** button will continuously update the manipulator after changing a slider bar. | manipulator to actually move. Enabling the **Continuous** button will continuously update the manipulator after changing a slider bar. |
| |
===== The Setup Function: Limits ====== | ===== The Setup Function: Limits ====== |
| -------------------- |
When you adjust the slider bars to identify the limits, please be careful. The servos are dumb things that do what they are asked to do, even if it is incorrect or could break the manipulator. You will know you have done | When you adjust the slider bars to identify the limits, please be careful. The servos are dumb things that do what they are asked to do, even if it is incorrect or could break the manipulator. You will know you have done something wrong when a servo starting to make a nasty grinding sound. If you are close to doing something bad, the servo will start to whine louder, with the whine resembling a grinding noise as you get closer to the badness. |
something wrong when a servo starting to make a nasty grinding sound. If you are close to doing something bad, the servo will start to whine louder, with the whine resembling a grinding noise as you get closer to the badness. | |
| |
Figure out what the servo command values are the get close to the limits, but do not hit them. When doing this, please move the slider bar little by little until you get a feel for the appropriate limits. Also make sure that the manipulator can move freely without hitting anything during this procedure. The associated angles, as measured by a protractor relative to the zero configuration, are the joint angle limits for your manipulator. Each manipulator has different limits based on how it was put together. | Figure out what the servo command values are the get close to the limits, but do not hit them. When doing this, please move the slider bar little by little until you get a feel for the appropriate limits. Also make sure that the manipulator can move freely without hitting anything during this procedure. The associated angles, as measured by a protractor relative to the zero configuration, are the joint angle limits for your manipulator. Each manipulator has different limits based on how it was put together. |
| |
| |
| ===== Manipulator Interface Code: Calibration ===== |
| ----------------- |
| The ''lynx6.m'' code stub is the main interface file for the manipulator. It is what you will be modifying to enhance the functionality of the manipulator as the course progresses. Prior to running the code, you will need to use the setup program to identify the operational limits and calibrate the manipulator. Calibration involves joint angle operational limits (in servo command units and degrees) plus link length measurement. Once these values have been found, the appropriate variables in ''lynx6.m'' will need to be modified to reflect what you have found. |
| |
| Below are some of the variables you'll need to modify. If you have any questions, feel free to ask. Again, please be careful when changing and modifying the values. Be prepared to turn the manipulator off if things go |
| funny. |
| * **alphaOrient:** Changes the direction of motion in order to agree with the right-hand rule. Increasing values of joint angle should move in right-hand rule direction based on axis of rotation. If your manipulator is following a left-hand rule, then the sign here should be flipped. |
| |
| * **alphaLims:** The joint angle limits you've discovered, or have determined to be the most appropriate for your manipulator. Note that for the last joint, which is the gripper, the units will be in inches (the gripper open width). |
| |
| * **musecLims:** The actual servo signals that specify your limits. You may not want to include the full range, but enough to get angles that make sense. You know like a range of [-90, 90] or [-45, 135] and the like. |
| |
| * **linklen:** The link lengths that you measured. This will be used to program the forward kinematics as part of a future homework. |
| |
| * **alphaHome:** Your home position as a joint configuration. I would like for your home position to be the straigh-up position. |
| |
| * **alphaSleep:** Your sleep position as a joint configuration. This should either make the manipulator resemble the "C" shape, or have it point backwards so that the gripper rests on the back section of the base (sort of like a rainbow shape). |
| |
| |
| Basically, when the power is shut-off the servos deactivate and the manipulator arm may fall. Putting it into the sleep position allows for it to gently fall into a safe position, or moves it to a configuration where the manipulator won't really move much once powered off. Also, when powered on from sleep position, the code commands it back into sleep position which means it won't jerk so much as it moves to the sleep position. |
| |
| |