Team Super Laser Robot
For our final project, we decided to build and program a robot laser arm pointer. We built this using our knowledge of robot arms and matlab based on lab 8 (the mini robot arm project). We began by building the physical model with two servo motors, one on top of the other. The laser barrel was then attached to the second servo model. While building this model we were careful to zero the motors using matlab to ensure that the starting position of robot arm was aligned. We then moved to the matlab script. We began with much of the same script as lab 8. Even the calibration was generally kept. The one major change was the inverse kinematics. To account for the movement in two dimensions, the invKin function had to be changed according to the math that Professor Cheever shared with us.
Our goal was to use the information and knowledge we had from Lab 8 to create a robotic arm that would draw a circle on a surface using a laser. The idea of a laser was interesting because it required us to use different planes in a three dimensional context, while the previous lab had "simple" x and y planes.
Our project is an adaptation of the previous robot arm that could draw on a piece of paper with a pencil. We built Matlab code that could take Cartesian coordinate points and translate them, through a series of Matlab functions, into pulse counts. Pulse Counts are the length of the signal that the servo motor uses to turn to a specific angle. The script entitled MoveLaser.m calculates and creates a matrix with the coordinates of the circle that the laser draws on the wall. The laser does not actually move in a circle; it moves in 360 small lines that create the appearance of moving in a circle.
Completed Project Design
We had originally decided that we would draw a five pointed star, but realized that would be difficult to code and furthermore not necessarily easy for the audience to see. We also noticed that the servo motor had difficulties reading our pulse counts, and did not know wether our angles and code were wrong or if the rounding that matlab did on values affected the pulse counts. We modified the code and realized we had made a mistake, because our servo was then able to move at the right angles. Finally, we had difficulties with the design of our arm, because the laser was too heavy and wobbled. We fixed this by switching its position and then nailing it.