User Tools

Site Tools


ece4560:piktul:04pnp

This is an old revision of the document!


Piktul: Pick and Place


The value of a robotic arm is in its ability to perform repetitive movements with high precision. The ability to do so is called repeatability. Part of the high cost of robotic machines lies in their extremely high repeatability combined with the high precision. Some robot arms are accurate down to sub-millimeter and have a reach that spans a couple meters, which means that their accuracy is a fraction of a percentage relative to their overall length (less than 0.01% error).

The piktul is definitely not going to be that accurate, nevertheless for pickup up and placing objects, it is going to be good enough. Pick and place is a classical task that engineers program robots to perform; a task that makes sense in the context of an assembly line or similar process.

The pick and place routine basically commands the manipulator to specific end-effector $SE(2)$ configuration, height, 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 the place $SE(2)$ configuration, then lowers. The gripper is opened to release the object, then raised. Once raised, it returns to the home position.

Repetetive


In the first version, as is typically for many factory automation processes, the pick and place configurations are known in advance. Thus, all that is needed is to program the robot to execute the maneuver, then to set the program in an infinite loop to forever repeat the action. Since they are known, the initial and final configurations are actually determined beforehand as joint angle, then entered into the program. Here, your task is to flesh out such a pick-n-place routine for the joint angles specified.

Arbitrary


In the second version, the configurations may change over time. Such would be the case when a flexible or adaptive (manufacturing) process is needed. Rather than specify the joint configurations then, the end-effector configurations are given. Internally, the robot's program should use inverse kinematics to establish what the pick and place end-effector configurations are, then execute the operation (again, in an infinite loop or until the configurations change). Here, your task is to modify the original hard-coded pick-n-place routine to be more flexible. Really, you will most likely create a new routine that takes in end-effector configurations first, converts them to joint configurations, then calls the former pick-n-place routine.

Notes


The member function code created for this should be somewhat generic. I would recommend creating a pick and place routine for the joint angles that takes the pick and place revolute joint angles (2×3 vector), the target upper and lower heights (2 vector), the gripper widths (2 vector), and a timing vector specifying how long each part of the sequence should take, then creates the execution sequence and executes. If the timing sequence is missing, then some default timing should be applied. The pick and place routine for end-effector configurations should have a similar set of arguments and solve the inverse kinematics part to get the joint angles, then invoke the pick and place routine for joint angles.

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.


Back Main

ece4560/piktul/04pnp.1507910247.txt.gz · Last modified: 2024/08/20 21:38 (external edit)