top of page
Matt%20stfuff0230%5B5081%5D_edited.jpg

5-DOF Letter Writing
Robotic Arm

Robotic Arm: Welcome

A challenging project from my Robotics course. Small 2-4 person teams were tasked with building a functional robotic arm capable of writing on a vertical whiteboard any 5 letter combination using the letters A thru J. No translational movements could be used, only rotational motion was allowed. 

​

We were given six servo motors to use, two MX-64A motors and four AX-12 motors. We chose to use one of our AX-12s with our gripper mechanism leaving us with 5 degrees of rotational freedom. 

​

My friend Drew Wendeborn was largely responsible for the mechanical design, the 3D printing of the linkages, and the programming of the Arduino servo controller board (OpenCM). 

​

I developed the end-effector path planning algorithms, the forward and inverse kinematic schemes for the robot, and the numerical side of the robotic control (Matlab). Drew and I worked together to interface the two systems via serial communication, sending packets of robotic instruction data to the robot, and sending location data from the robot, back into Matlab. 

Robotic Arm: Text
Picture1.png

Reachable Space

One considerable design constraint came from the reachable space. Our whiteboard was a specific distance from our robot, and we wanted to be able to write on the entire whiteboard with the end effector (our pen) in the same orientation.  One of our methods for reducing error and creating legible script was to keep the pen as close to orthogonal to the whiteboard as possible.

Robotic Arm: Image
Picture1.jpg

Forward Kinematics &

Transformation Matrices

Because Drew had designed our linkages in CAD, figuring out the transformation matrices for our robot was not difficult. In order to find the position of the end effector I had to take into account the position (X,Y and Z) of each motor and it's standard rotational direction. 

​

With this transformation matrix, forward kinematics tells me where will my end effector be given a specific set of servo positions. For this type of robot the forward kinematics always has a simply determined solution, this is what I used to check my end effectors current position. 

Robotic Arm: Image
An-example-2D-shape-the-letter-A-discret

Path Generation and Letter Discretization 

I had to create a 2D path for each letter that could be used in our mystery word our robot would have to write. We stuck with capitals to minimize curves, thinking our robot would be better suited to straight lines. I generated cartesian points in a web-based app in which you can click a path over an image. Because each letter was a different size, I normalized the height and width of each set of points. Then I created additional points linearly distributed between my original points in order to facilitate smooth end effector movement. I wanted the tip of the pen to take very small steps in between instructions. 

​

When a user typed in a specific word to be written, the program would compile all the individual letter paths and generate a master path of desired end effector positions. 

Robotic Arm: Image
Picture2.png

Inverse Kinematics

Inverse kinematics was used to solve for servo rotational angles given a desired end-effector position. These equations can often lead to multiple solutions. To pick a solution, the position with the angles closest to the last defined position was used. Since there was no obstacle avoidance necessary, in all but a few cases this was adequate and robotic arm operation was smooth and predictable.

Robotic Arm: Image
Picture3.png

Grabber Design

The tip of the robot had a servo actuated grabber that Drew designed. One difficulty we came across was that the pen would chatter across the whiteboard instead of consistently pressing throughout the entirety of it's motion. To make the pen tip more flexible, a spring was added under the base of the pen within the holder. This allowed the pen to apply more constant pressure against the board.

Robotic Arm: Image
Matt%2520stfuff0230%255B5081%255D_edited_edited.jpg

Workable Space Defined and 
Real-time Adjustments

Defining the writing plane was one of the first steps in allowing our system to write. In order to do this, the robot end-effector was guided via keypad input to three corners of the whiteboard. Each position was stored, and a 3D plane was established. The 2D letter path was then projected onto this plane, and thus created the desired end-effector path in 3D space. 

​

During testing we noticed was that as the robot wrote, occasionally it would experience a drifting of the end effector. Sometimes the pen tip would lift off the board and other times the pen would move the board. Since the pathfinding software was written in Matlab, I coded adjustment interrupts into the program so that a user could adjust the pen pressure on the fly, moving the end effector in or out by a specific.  distance. This greatly improved the legibility of our writing. 

​

Robotic Arm: Image

This was an exciting and fast-paced class. I learned so much about robotics and got a ton of experience coding in Matlab to solidify what might have been just theoretical book knowledge.  The teacher for this class, Alex Hunt, did a great job setting up the structure of this project, but giving tremendous creative license, every robot built was different. I would definitely recommend it to anyone who wants to be challenged.

Robotic Arm: Text
bottom of page