Motion Strategy for a Multi-Link Robot Arm in Two Dimensions
Com S 476/576 FINAL PROJECT - Spring 1999

Justin J. Goeres


Overview

A contemporary problem in robotics, one which is under investigation at Iowa State, is the development of techniques that will allow a backhoe or other digging machine to perform tasks autonomously. In the future this should allow for cheaper and more reliable operation in construction projects and will contribute to better overall safety conditions for workers.

This project seeks to develop a motion strategy that will allow an automated "backhoe" robot to automatically dig a hole of some specified shape. Although it has been implemented with a robot arm ("backhoe") comprised of four uniform links in two dimensions, it should extend naturally to robots of greater and lesser complexity. Each joint has been restricted to move in a range of +/- 135 degrees relative to the previous link, leaving the problem in the space R4.


Implementation

The robot is represented using the LEDA programming library as suggested in class, and the robot and obstacle polygons were read from a data file with the PERL script xfig2mp. This allows various shapes of target "holes" to be specified with relative ease. The initial configuration of the robot can be specified at the beginning of each run, along with several "waypoints" for the robot to target. The robot searches for a path to each target point in order and then moves among them.

The program utilizes a Rapidly-Exploring Random Tree approach to build a searchable graph of the environment. Each random node is generated by selecting a random set of joint angles. Then the position of the "end effector" at the end of the 4th (final) link of the robot is computed and compared to the known end effector positions of the existing nodes in the graph to determine the closest node in terms of Euclidean distance between the end effector at each node. As in the standard RRT methods discussed in class, the algorithm adds more and more nodes until it reaches the goal area.

References: Kernighan, Brian W. and Dennis Ritchie. The C Programming Language: ANSI C Version. Prentice Hall, 1988.


Computed Examples

Two example animations are shown below. The first shows a hole that extends back underneath the robot, while the second shows a case with a sharp corner requiring the robot to reach down and in front of itself. Note that at the end of the semester the actual "digging" routines had not been implemented, so the robot was restricted to moving between specified target points within each given hole. Although the robot completes both paths successfully, the 2nd example illustrates a flaw in the algorithm. To reach the end of the hole in Example 2, the robot must invert its final joint, but it steadfastly refuses to do so and finally satisfies the goal by just barely reaching it. (see Possible Improvements below)


Possible Improvements

Implementation of this project proved to be somewhat more challenging than I had expected. Given more time, a "digging" routine would have been added in which the program would build a bitmap of the hole and calculate a number of "target" points within it that must be visited in order to achieve the hole's final shape. The groundwork for this has been laid, allowing the user to specify multiple target points for the robot to visit, but the program is still unable to calculate the required targets itself.

Although successful in many cases, this algorithm possesses a serious and somewhat subtle weakness that is illustrated in Example 2 above. As the robot attempts to reach the "deepest" target point in the hole, it must reverse the direction of the final joint. However, because a Euclidean metric referring to the end effector position was used to determine the closest existing graph node, the algorithm finds an end effector position very close to the target when in the configuration space of joint angles, that point is very far from the goal. A more suitable metric is needed to address this issue. One possible solution would be to continue using the Euclidean metric for simplicity, but to augment it with weighted information about the joint angles. Benefit might also come from implementing a "random walk" strategy around the known nearest configuration after a certain number of consecutive iterations have produced no closer nodes. Another alternative would be development of an entirely different metric.


Implementation Files

Source Code:

Input Data Files: