Projects‎ > ‎Robotics‎ > ‎


Project Overview

This project page describes the development and implementation of a minimalist approach to solving the unknown joint angles required for the autonomous positioning of a robotic arm. Sound a little formal? that's because it was the opening statement in my master's project final report in graduate school (with "paper" replaced with "project page," of course). This was a huge project for me - my first solo venture into robotics meant I would be responsible for the entire mechanical, electrical, and software design. The short story: I took a five degree of freedom arm from Lynxmotion, altered it a bit, and mounted it to an iRobot Create - a developmental version of the Roomba vacuum cleaner. Rather than use complex differential equations to solve the inverse-kinematics associated with auto positioning of the end-effector to a point in the three-dimensional space in front of the robot, I developed a set of simple trigonometric equations generated from a geometric modeling of the arm. 

Check out the published article in the Hindawi Journal of Robotics!

Manipulation Considerations and Difficulties

With any type of artificial manipulation device, one of the main obstacles to overcome is the method by which it is able to interact with its surround environment. IN almost any given setting, a robot can be created to perform a plethora of varying tasks and do so successfully. This is because the variables in a closed world environment can be completely controlled. A robot wouldn't have to search for something or perform numerous computations to grab an object because said object could be in the exact same location in such a closed world environment every time the robot goes to reach for it. This is why industrial robots have been so successful in the workplace. However, to quote Kemp, Edsinger, and Torres-Jara in their 2007 article in Robotics and Automation Magazine, IEEE, "outside of carefully controlled settings, even the most sophisticated robot would be unable to get you a glass of water." This is because there are far too many uncontrollable variables in the real world.

What's the point of all of this fancy jargon? It is very hard to create a robot which can successfully and purposefully interact with the world in an uncontrolled environment. In the water fetching example, the robot would need to have some way to receive the command, discover a glass, find a source of water, fill the glass with water, and safely transport the glass back to the appropriate recipient. Although I didn't create the most impressive or sophisticated piece of machinery, I was able to develop a robust system capable of interaction.

Mechanical Design

Because this wasn't a project involving complex mechanical engineering or design procedures, little effort was placed on the mechanical aspects of the robot outside of the initial assembly and component mounting. In regards to the arm, it was assembled as directed for the most part. I did rearrange the arm lengths and change the way the tension springs were attached to get a bit more strength out of the arm. To attach the arm to the Create, I built a frame out of aluminum stripping and attached it using the mounting holes in the Create cargo bay.

With this out of the way, I took a side step into another important but commonly overlooked aspect of engineering: aesthetic quality. Long story short, I took the robot completely apart. This wasn't any broken VCR, it was my master's project, and it had to be put back together in working condition! But what began as a simple nourishment of my own engineering curiosity quickly became a golden opportunity for a more lasting psychological impact. 

iRobot Create Disassembly and Painting

After her initial shock, my professor informed me that red is the
color of good luck in China, so she approved my drastic alterations.

With this major aesthetic change in place, a partial sense of accomplishment can be felt by simple looking at the robot if for no other reason than the known lasting imprint it will have. Such a simple thing as color can create more of a synchronization between human and machine, and without this harmonic balance, future progress may be very bleak.

Although I didn't want to have to work on any other major mechanical modifications, it was apparent early on that the I would have to build one last thing. The gripper that came with the purchased robotic arm is not difficult to control, but it is difficult to use. The linear motion of the end effector is well suited for precision tasks; however, the objects to be used in this project would not be small nor specifically placed. The original gripper has a maximum opening of 32mm - not  a lot of room for error. To compensate for the expected lack of precision and to be able to grasp larger objects, I designed and built a larger, more error tolerant end effector with a maximum grip opening of 200mm and a reasonable gripping size of 120mm.

Electrical Design

The major circuitry in this robot was not custom built but did have to be interlinked. The controller used was the Command Module from iRobot which was created specifically for use in the Create. At the heart of this controller was an ATmega168 microcontroller, and this is the primary reason for my future use of Atmel AVR chips. The Lynxmotion arm came with a serial enabled servo sequencer - the SSC-32. The problem with this is the fact that the Command Module (CM) already uses the ATmega168's only serial port to communicate with the iRobot Create, but this issue was solved with software.

Although the CM was easy to work with, it's design was far from perfect. To connect to the I/O pins, four "ePorts" were available on the CM - three on top, and one in the cargo bay. The problem with these ports is that they are actually DSUB-9 connectors identical to the serial port on a computer. This can be a cause for confusion, but the biggest problem is that most of the peripheral electronics available for the Create would be plugged into, and therefore use up, an entire port for only one or two I/O pins. To allow easy access to every single pin available at any given time, I designed a kind of break out board which redistributed these pins. Also included in this circuit was an eight volt regulator for attached electronic devices such as the SSC-32 servo controller.

iRobot Create Command Module Custom Break Out Board Circuitry

The SSC-32 servo controller is also built around the ATmega168 MCU, but this coincidence does not effect the design in any way. A very nice (and important) feature of this circuit is the ability to separate the power supplies for the on board circuitry and the connected servos. If enough servos need to move at once, or if there is a sudden high torque move which draws a lot of current, the produced spikes on the supply line are more than enough to reset or even damage the sensitive board components. For that reason, a separate 6V battery pack was used to power the servos while the MCU power came from the CM break out board 8V regulator. While a suitable high current 6V supply design could have been designed or purchased it was not a primary focus of the project, and I didn't want to spend the time working on one. In order to preserve battery life, a power jack was added such that a regulated wall pack could be used to power the servos during stationary testing. To select all of these features, a single pole, double throw switch is incorporated. This circuit also features a pin layout connecting to the serial port which can be used for control source selection. An extension to the serial port on the circuit was created, and a triple pole, double throw switch is used to specify the connections for the transmit and receive lines as well as the communication baud rate. This is further (and hopefully more clearly) illustrated in the following image.

SSC-32 Connections with Selectable Transmission Baud Rate and Power Source

In keeping with the minimalist theme of this project, only three sensor external to the Create are used. Two of these are the Sharp GP2D12 Range Finders with the third is a Sharp GP2D120 Range Finder. These devices (commonly referred to as ET sensors due to their shape) are used to determine distance to objects by measuring the reflection angles of an infrared beam emitted from the sensors. The GP2D12 is able to detect objects between 10 and 80cm away. The GP2D120 is for closer range objects and has a detection range between 4 and 30cm. The long range sensors were attached to two servos on the front of the robot to allow a scanning of the forward area while the close range sensor was attached to the gripper for more precise detection of objects. The available eDisplay LCD for the CM was also incorporated. 

iRobot Create with Sharp ET Range Finders and Servos

With these additions, the mechanical and electrical aspects of the robot were complete!

iRobot Create with Command Module and Lynxmotion AL5 Arm SSC-32 Custom Circuitry

Arm Modeling and Kinematics

The real purpose of this project was to solve the unknown joint angles necessary for the arm to auto-position itself to some object in the three dimensional space in front of it. The added sensors serve the purpose of detecting an object and providing the coordinates, but a lot of math is needed to figure out everything else. This discussion is beyond the scope of a single project page, so be sure to check out the next page of this project for a detailed description.


This video shows a brief outline of the entire project. Jump to about 1:05 to see the actual servo sequencing, object tracking, and complete system testing.

iRobot Create with Command Module

iRobot Create with the Command Module

Lynxmotion AL5 Arm
Lynxmotion AL5 Arm

iRobot Create Custom Mounting Frame
Custom Mounting Frame Design

iRobot Create with Custom Mounting Frame
iRobot Create with Mounted Arm

iRobot Create with attached Lynxmotion Arm
After aesthetic alterations

iRobot Create Lynxmotion Arm Custom Gripper
The new gripper was inspired by a cross between a human hand and a bird's talon. The three rigid digits are 100mm in length and curved slightly. A rubber insulation is attached to each finger to increase gripping friction. A standard servo coupled with a pair of Lego gears allows for dual rotational opening motion.

iRobot Create Command Module Custom Break Out Board Layout
An easy to read layout of the custom break out board

iRobot Create Command Module Custom Break Out Board
The complete circuit connects to the command module with 4 DSUB9 connectors.

iRobot Create Command Module eDisplay Pin Out
The eDisplay LCD is a perfect example of a single peripheral using an entire ePort and the reasoning behind the CM break out board. It had to pinned out to be connected to the break out board.

iRobot Create Command Module eDisplay Custom Pin Out
An LCD is an invaluable tool when it comes to testing and diagnosing.

Did you know this
project was published
in an online journal?

Check it out: 
Hindawi Journal of Robotics - 984823