Both sides previous revisionPrevious revisionNext revision | Previous revision |
ece4560:lynx6:04pnp [2017/11/04 19:21] – [Notes] pvela | ece4560:lynx6:04pnp [2024/08/20 21:38] (current) – external edit 127.0.0.1 |
---|
------------------------------------ | ------------------------------------ |
| |
As noted in the [[ECE4560:piktul:pnp|piktul Pick'N'Place]] adventure, the value of a robotic arm is in its ability to perform repetitive movements with high precision. While the Lynx-6 is probably more inaccurate than the piktul given that it must contend with gravity effects that impact the joint space, it should perform well enough to reliably pick up an object at the desired configuration with parallel plate grippers (like those of the piktul and most of the Lynx-6 robots). | As noted in the [[ECE4560:piktul:04pnp|piktul Pick'N'Place]] adventure, the value of a robotic arm is in its ability to perform repetitive movements with high precision. While the Lynx-6 is probably more inaccurate than the piktul given that it must contend with gravity effects that impact the joint space, it should perform well enough to reliably pick up an object at the desired configuration with parallel plate grippers (like those of the piktul and most of the Lynx-6 robots). |
| |
Since the Lynx-6 is a full 3D robotic arm, the pick and place end-effector configurations will be given as SE(3) elements. The procedure should go more or less the same with the pick and place routine commanding the manipulator to specific end-effector SE(3) configuration and gripper opening. At that //pick// configuration it then lowers the arm to the height of the object to grasp it. Once there, the gripper should close enough to grab it (but not to stress and break the motor gears). The manipulator arm raises, moves to be "above" the //place// SE(3) configuration, then lowers. The gripper is opened to release the object, then raised. Once raised, it returns to the home position. | Since the Lynx-6 is a full 3D robotic arm, the pick and place end-effector configurations will be given as SE(3) elements. The procedure should go more or less the same with the pick and place routine commanding the manipulator to specific end-effector SE(3) configuration and gripper opening. At that //pick// configuration it then lowers the arm to the height of the object to grasp it. Once there, the gripper should close enough to grab it (but not to stress and break the motor gears). The manipulator arm raises, moves to be "above" the //place// SE(3) configuration, then lowers. The gripper is opened to release the object, then raised. Once raised, it returns to the home position. |
The solution should not be hard-coded for the actual tasks given. The scripts you've been given should act as a good starting point for how the pick and place functions should work. The demo will involve assessing both execution of the task, as well as ability to actually grip, pick up, and place the object. | The solution should not be hard-coded for the actual tasks given. The scripts you've been given should act as a good starting point for how the pick and place functions should work. The demo will involve assessing both execution of the task, as well as ability to actually grip, pick up, and place the object. |
| |
| ==== The Routine ==== |
| --------------- |
| |
| Here is how the pick and place program will work, given initial and |
| final end-effector configurations, |
| - Given initial and final end-effector configurations, the program will compute then output the expected initial and final joint configurations of the manipulator are. Use ''pause'' command to wait for user to hit Return. Make sure to respect actuator limits when considering which of the possible inverse kinematics solutions to use. |
| - Goto the initial joint configuration specified but with α2 changed so that the second joint rotates up a little bit and α6 so that the gripper is fully open. Do this to take about 2-3 seconds using the ''pause'' command to wait for the specified amount of time. |
| - Goto the joint configuration requested by setting α2 to its desired value. This should lower the end-effector to the predicted configuration. If the prediction is correct, then the gripper will be around an object that I have placed near the initial location. Do this to take two seconds and ''pause'' in Matlab for that amount of time. |
| - Close the gripper to the desired length thereby grabbing the object (The desired length is given as a part of the joint configuration). Do this to take two seconds, pausing in Matlab. |
| - Lift the gripper to the configuration from step 2, but keeping the gripper closed. One to two second motion here. |
| - Move the arm to the final joint configuration, but changing α2 so that the arm is still elevated from the final end-effector configuration that would normally have been realized. Four seconds for this movement. |
| - Now, modify the second joint so that it lowers the end-effector to the desired position in two seconds. |
| - Open the gripper in one second. |
| - Lift the gripper by changing α2; take two seconds. |
| - Goto your sleep position. |
| |
| Ideally, the program should pre-compute all of the joint configuration and timings, place them in a matrix and a vector, respectively, then just execute in a ''for'' loop. that's really the easiest as it recycles a lot of prior code. |
| |
| **Demo movie** {{http://pvela.gatech.edu/classes/media/lynx6PickPlace.mov|here}}. You may have to download to play, until I figure out how to embed. In the movie, I place a block at the initial |
| location, a Kroger plus card at the final location, then let the manipulator do its thing. If you programmed it right and calibrated it properly, your program should execute like mine. Good luck! |
| |
| A former student from the first time that the manipulation track was included in the course uploaded [[https://www.youtube.com/watch?v=XriKSyoT22I|onto YouTube]] his own version of pick and place with three stacked blocks. Even gave it a soundtrack! |
| |
--------- | --------- |