A Manufacturing Language
A Manufacturing Language (AML) is a robot programming language created by IBM in the 1970s and 80s, for its RS 1 robot and other robots in its Robot Manufacturing System product line. The systems were used in factory automation by customers such as Plessey and Northern Telecom. They are no longer listed as available from IBM, but robots and parts can occasionally be found in used condition on auction sites, and are refurbished by hobbyists.
AML/2, AML/E, AML/V, and AML/X are versions and derivatives of AML.
AML programs can call subroutines written in AML, C, or FORTRAN. Programs are coded off-line, and can be tested with an off-line simulator. Prior to execution on the robot, they are uploaded to RAM residing in the robot's control unit.

Source code example
The following example shows code for a peg-in-hole program.
PICKUP: SUBR (PART__DATA, TRIES); MOVE(GRIPPER, DIAMETER(PART__DATA)+0.2); MOVE(<1,2,3>, XYZ__POSITION(PART__DATA)+<0,0,1>); TRY__PICKUP(PART__DATA, TRIES); END; TRY__PICKUP: SUBR(PART__DATA, TRIES); IF TRIES LT 1 THEN RETURN('NO PART'); DMOVE(3,-1.0); IF GRASP(DIAMETER(PART__DATA)) = 'NO PART' THEN TRY__PICKUP(PART__DATA, TRIES - 1); END; GRASP: SUBR(DIAMETER, F); FMONS: NEW APPLY($ MONITOR, PINCH__FORCE(F)); MOVE(GRIPPER, 0, FMONS); RETURN( IF QPOSITION(GRIPPER) LE DIAMETER/2 THEN 'NO PART' ELSE 'PART' ); END; INSERT: SUBR(PART__DATA, HOLE); FMONS: NEW APPLY($ MONITOR, TIP__FORCE(LANDING__FORCE)); MOVE(<1,2,3>, HOLE+<O,O,.25>); DMOVE(3, -1.0, FMONS); IF QMONITOR(FMONS) = 1 THEN RETURN('NO HOLE'); MOVE(3, HOLE(3) + PART__LENGTH(PART__DATA)); END; PART__IN__HOLE: SUBR(PART__DATA, HOLE); (PICKUP PART__DATA 2.); (INSERT PART__DATA HOLE); END;
References
External links
- "IBM robotics: tools for advanced manufacturing", in the "Exhibits" section at "IBM Archives".