Unknown
As a part of the Robotics Master's degree, students are required to take Robot Kinematics, Dynamics, and Control (EN.530.646), a rigorous overview of the math used in robotics. Honestly, I would describe it as the hardest math course I ever took, but by the end, we had the opportunity to program the UR5 Robot Arm using our hard earned knowledge.
For the final project, there were two components:
For the first task, you had to implement two different control schemes for moving the robot arm in 3D space. Along with a third provided control scheme, the task was to then use all three controllers to run a sequence of moving the arm to the start location above a block, closing the gripper on the block, and then moving the block to a target location and releasing it. For this part of the project, my teammates programmed the low-level control algorithms while I handled the high-level sequencing for performing the task.
For the second part, we decided to fix a tool to the robot holding a marker, and have it draw pictures on a whiteboard. I handled the bulk of the work for this part, including fabricating a tool to hold the marker, and writing all the code for robot calibration and converting images into robot trajectories.
Images are converted directly to a contour plot based on the brightness of pixels. The level set contours are then transformed from 2D into world space for the robot to draw. Once the robot position is calibrated, the robot then performs the task of tracing along each of the contours from the image.
The custom end effector is simply a marker holder with a spring at the bottom to allow for slight errors in the robot's positional calibration.