Motion Primitive Project

Overview

Industrial robots are increasingly deployed in applications requiring an end effector tool to closely track a specified path, such as in spraying and welding. Performance and productivity present possibly conflicting objectives: tracking accuracy, path speed, and motion uniformity. Industrial robots are programmed through motion primitives consisting of waypoints connected by pre-defined motion segments, with specified parameters such as path speed and blending zone. The actual executed robot motion depends on the robot joint servo controller and joint motion constraints (velocity, acceleration, etc.) which are largely unknown to the users.

Programming a robot to achieve the desired performance today is time-consuming and mostly manual, requiring tuning a large number of coupled parameters in the motion primitives. The performance also depends on the choice of additional parameters: possible redundant degrees of freedom, location of the target curve, and the robot configuration.

This project aims optimize the robot motion primitives for performance. The approach first selects the static parameters, then the motion primitives, and finally iteratively update the waypoints to minimize the tracking error.

Project Details

To program an industrial robot to follow a complex path using motion primitives, the most common approach is to use it like a machine tool , focusing only on the TCP motion. There are several advanced offline programming software that convert a dense set of TCP waypoint to the robot program of a given robot vendor.

The actual robot motion from the execution of the robot program will depend on the motion primitives and their parameters (waypoint locations, commanded path speed along the motion segment, size of the blending zone between motion segments) which are affected by the robot joint servo controller and the robot joint motion constraints (joint velocity and acceleration limits). Robot controller and robot joint constraints are largely unknown to the user. Therefore, programming a robot to achieve the desired performance is currently a time-consuming and largely manual exercise in tuning the motion primitive parameters and the result may be far from optimal. Compounding the challenges are the impact of additional parameters: a redundant roll degree of freedom in the tool frame, relative pose between the target curve and the robot base, and the robot configuration (out of the 8 possible choices in a 6 degrees of freedom (DoF) revolute robot).

This project develops a new approach to optimizing the motion primitives by decomposing the problem into a series of subproblems. We first use a combination of evolution algorithm and local optimization to resolve redundancy. Then we use a greedy algorithm for fitting the curve with the least number of motion primitives. Finally, an iterative gradient descent algorithm updates the waypoints to minimize the worst case tracking error. To evaluate this approach, the industry co-authors of this work suggested two test curves, curve one contains a range of high curvature moves and curve two is the leading edge of a sample turbine fan blade. A baseline approach is developed based on the current industry practice. The evaluation metric is the average path speed subject to the specified trajectory tracking and path speed uniformity constraints. We implemented the motion primitive optimization approach on an ABB IRB 6640 robot in simulation (using RobotStudio) and physical testbed. In all cases, the performance vastly improves over the baseline, ranging over 200% to 300%.