# US 2006/0178778 A1 · Method and apparatus for developing a software program

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2006/0178778 A1
- Document ID: US20060178778A1
- Status: Published application
- Kind: A1
- Application number: 11/054,816
- Filed: 2005-02-10
- Published: 2006-08-10
- Earliest claimed: 2005-02-10
- Assignees: ABB Research Ltd.
- Inventors: Thomas Fuhlbrigge; Gregory Rossano; Hui Zhang; Jianjun Wang; Zhongxue Gan
- Web page: https://patentgrep.com/patent/US20060178778A1

## CPC

- B25J 9/1656: {characterised by programming, planning systems for manipulators}
- G05B 19/0426: {Programming the control sequence}
- G06F 8/20: Software design
- G05B 2219/23126: Display tree structure of whole system or relevant info after function selection
- G05B 2219/23254: Interactive programming, sentence on screen filled in by operator
- G05B 2219/23261: Use control template library
- G05B 2219/23291: Process, graphic programming of a process, text and images
- G05B 2219/23293: Automated assembly of machine control software, reusable software components
- G05B 2219/23389: Modular program, each process has corresponding program module
- G05B 2219/35489: Discriminate, different colour, highlight between two states
- G05B 2219/36032: Script, interpreted language
- G05B 2219/40387: Modify without repeating teaching operation
- Y02P 90/02: Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
- B25J: MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES ({manipulators specially adapted for use in surgery A61B34/70; manipulators used in cleaning hollow articles B08B9/04}; manipulators associated with rolling mills B21B39/20; manipulators associated with forging machines B21J13/10; {manipulators associated with picking-up and placing mechanisms B23P19/007}; means for holding wheels or parts thereof B60B30/00; {vehicles with ground-engaging propulsion means, e.g. walking members B62D57/02, B62D57/032; devices for picking-up and depositing articles or materials between conveyors B65G47/90, B65G47/91; manipulators with gripping or holding means for transferring packages B65H67/065}; cranes B66C; {manipulators used in the protection or supervision of pipe-line installations F17D5/00; walking equipment adapted for nuclear steam-generators F22B37/006}; manipulators specially adapted for, or associated with, nuclear reactors G21C; {apparatus used for handling wafers during manufacture or treatment of semiconductor H10P72/50})
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02P: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS

## Abstract

The present invention is directed to a method and apparatus for developing a metadata-infused software program for controlling a device, such as a robot. A first library of software segments with metadata and a second library of script documents are provided. A part program wizard uses a script document selected from the second library to display queries on a screen of an interface device. Using input information received in response to the queries, the part program wizard selects and combines software segments from the first library to produce the metadata-infused software program. The metadata identifies the selected software segments and includes statuses of the selected software segments. A graphical representation of the metadata infused software program is displayed on the screen and conveys the statuses of the software segments. A deployment wizard is utilized to teach data points for the metadata-infused software program.

## Claims

### Claim 1

A method of developing an executable software program comprising:
providing a library of segments of software code with metadata, wherein the metadata of each segment identifies the segment and includes a status of the segment;
selecting a plurality of the segments from the library;
connecting the selected segments; and
displaying graphical representations of the selected segments, wherein the graphical representations convey the statuses of the selected segments.

### Claim 2 (depends on 1)

The method of claim 1, wherein the statuses of the selected segments include whether the selected segments have been executed, respectively.

### Claim 3 (depends on 1)

The method of claim 1, further comprising eliciting information from a user and receiving information from the user; and
wherein the selection of the segments is made using the received information.

### Claim 4 (depends on 1)

The method of claim 1, further comprising providing a previously-developed software program infused with metadata, and wherein the connecting of the selected segments comprises adding the selected segments into the previously-developed software program.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
displaying a graphical representation of the previously-developed software program on a first portion of a screen; and
displaying graphical representations of the segments of the library on a second portion of the screen; and
wherein the adding of the selected segments into the previously-developed software program comprises dragging the graphical representations of the selected segments from the second portion of the screen and dropping them into the graphical representation of the previously-developed software program in the first portion of the screen.

### Claim 6 (depends on 1)

The method of claim 1, wherein at least one of the selected segments includes default data and wherein the method further comprises receiving input data and changing the default data to the input data.

### Claim 7 (depends on 6)

The method of claim 6, wherein the status of the at least one of the selected segments includes whether the default data has been changed to the input data and whether the at least one of the selected segments has been executed.

### Claim 8 (depends on 1)

The method of claim 1, wherein changes in the statuses of the selected segments changes the graphical representations of the selected segments, respectively, and wherein the graphical representations of the selected segments are displayed in a program tree.

### Claim 9 (depends on 1)

The method of claim 1, wherein the software program is for controlling a robot and wherein the segments of software code comprise robot code represented in a mark-up language.

### Claim 10

A computer program product for use with a central processing unit (CPU), said product comprising:
a computer-readable medium;
a library of segments of software code with metadata, wherein the metadata of each segment identifies the segment and includes a status of the segment, said library being stored on the computer-readable medium;
a program stored on the computer-readable medium and having instructions for causing the CPU to execute a method of developing an executable software program, said method comprising:
selecting a plurality of the segments from the library;
connecting the selected segments; and
displaying graphical representations of the selected segments,
wherein the graphical representations convey the statuses of the selected segments.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein the statuses of the selected segments include whether the selected segments have been executed, respectively.

### Claim 12 (depends on 11)

The computer program product of claim 11, wherein the program stored on the computer-readable medium comprises a program development wizard and wherein the method further comprises:
eliciting information from a user; and
receiving information from the user; and.
wherein the selection of the segments is made using the received information.

### Claim 13 (depends on 11)

The computer program product of claim 11, wherein at least one of the selected segments includes default data and wherein the method further comprises receiving input data and changing the default data to the input data.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the status of the at least one of the selected segments includes whether the default data has been changed to the input data.

### Claim 15 (depends on 11)

The computer program product of claim 11, wherein changes in the statuses of the selected segments changes the color of the graphical representations of the selected segments, respectively.

### Claim 16 (depends on 11)

The computer program product of claim 11, wherein the segments of software code comprise robot code represented in XML.

### Claim 17

An apparatus for controlling a robot, said apparatus comprising:
(a.) an interface device comprising a central processing unit (CPU) and a display;
(b) a storage medium readable by the CPU;
(c.) a library of segments of robot code with metadata, said library being stored on the storage medium;
(d.) a program development wizard runnable on the CPU to execute a method of developing an executable robot control software program, said method comprising:
eliciting information from a user;
receiving information from the user;
using the received user information to select a plurality of the segments from the library;
combining the selected segments; and
displaying graphical representations of the selected segments on the display; and
(e.) a robot controller for executing the robot control software program to control the robot.

### Claim 18 (depends on 17)

The apparatus of claim 17, wherein the metadata of each segment of robot code identifies the segment and includes a status of the segment.

### Claim 19 (depends on 18)

The apparatus of claim 18, wherein upon execution by the controller, the robot control software program generated by the program development wizard controls the robot to move along a process path having a plurality of position points with default values, and wherein the apparatus further comprises a deployment wizard runnable on the CPU to execute a method of teaching the robot control software program comprising teaching the position points by replacing the default values with taught values.

### Claim 20 (depends on 19)

The apparatus of claim 19, wherein one of the selected segments is for moving the robot to one of the position points, and wherein the metadata for said one of the selected segments is whether said one of the position points has a default value or a taught value.

### Claim 21 (depends on 19)

The apparatus of claim 19, wherein the metadata further includes experiential data and wherein the apparatus further comprises an optimization wizard runnable on the CPU to execute a method of optimizing the robot control software program comprising using the experiential data to generate and display recommendations for changing the robot control software program.

### Claim 22 (depends on 17)

The apparatus of claim 17, wherein the interface device is a teach pendant.

### Claim 23 (depends on 17)

The apparatus of claim 17, wherein the segments of robot code are represented in XML.

### Claim 24

A method of controlling a robot, comprising:
(a.) providing a robot program comprising metadata and robot code represented in XML;
(b.) interpreting the robot code to control the robot; and
(c.) interpreting the metadata to display graphical representations of the robot program; and
wherein steps (b.) and (c.) are performed simultaneously.

### Claim 25 (depends on 24)

The method of claim 24, wherein the metadata identifies segments of the robot program and includes statuses of the segments, and wherein one of the segments has default data.

### Claim 26 (depends on 25)

The method of claim 25, further comprising changing the default data to taught data, and wherein the status of said one of the segments is whether said one of the segments has default data or taught data.

### Claim 27

A computer program product for use with a central processing unit (CPU) and a robot controller, said product comprising:
a computer-readable medium;
a robot control software program stored on the computer-readable medium, said robot control software program comprising robot code infused with metadata that identifies segments of the robot code, said robot control software program having instructions for causing the robot controller to move a robot along a process path having a plurality of position points with default values; and
a deployment wizard stored on the computer-readable medium and having instructions for causing the CPU to execute a method of teaching the robot control software program, said method including teaching the position points by replacing the default values with taught values; and
wherein the metadata includes information for teaching the position points.

### Claim 28 (depends on 27)

The computer program product of claim 27, wherein one of the segments of the robot code is for moving the robot to one of the position points, and wherein the status of said one of the segments includes whether said one of the position points has a default value or a taught value.

### Claim 29 (depends on 28)

The computer program product of claim 28, wherein the status of said one of the segments includes whether said one of the segments has been executed.

### Claim 30 (depends on 27)

The computer program product of claim 27, further comprising an optimization wizard stored on the computer-readable medium and having instructions for causing the CPU to execute a method of optimizing the robot control software program comprising generating and displaying recommendations for changing the robot control software program.

### Claim 31 (depends on 30)

The computer program product of claim 30, wherein the metadata further includes experiential data and wherein the optimization wizard uses the experiential data to generate the recommendations.

### Claim 32 (depends on 27)

The computer program product of claim 27, wherein the robot code is represented in XML.
