A Manufacturing Language

General-purpose programming 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.[3][4] The systems were used in factory automation by customers such as Plessey and Northern Telecom.[5] 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.[6]

AML
ParadigmImperative (procedural)
Designed byRussell H. Taylor
First appeared1978; 47 years ago (1978)
Major implementations
AML, AML/2, AML/E, AML/V, AML/X
Influenced by
ALGOL 68, SAIL, AL[1][2]

AML/2, AML/E, AML/V, and AML/X are versions and derivatives of AML.[7]

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.[8]

Two IBM 7535 SCARA industrial robots bracketing the Mayor of Amsterdam, Burgemeester Ed van Thijn, at a 1985 computer exhibition in the Netherlands

Source Code Example

The following example shows code for a peg-in-hole program.[9] <syntaxhighlight lang="yaml"> 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;

</syntaxhighlight>

References

  1. ^ Taylor, R. H. "Russell H. Taylor - Early Research", faculty web page at Johns Hopkins University. Retrieved on 6 July 2019.
  2. ^ Taylor, R. H. "A Synthesis of Manipulator Control Programs From Task-Level Specifications", Stanford A.I. Laboratory (sponsored by Advanced Research Projects Agency, Dept. of Defense, National Science Foundation), Memo AIM-282, July, 1976.
  3. ^ IBM. "IBM robotics: tools for advanced manufacturing", IBM Archives, London, 27 October 2005. Retrieved on 11 June 2019.
  4. ^ IBM Watson Research Center. "Artificial Intelligence (subdiscipline)", section IBM RS 1 Robotic system (1980s), updated on 9 November 2017. Retrieved on 11 June 2019.
  5. ^ Richard C. Dorf, Shimon Y. Nof, editors. "International Encyclopedia of Robotics: Applications and Automation", Vol. 1., John Wiley & Sons, New York, 1988, pp. 216, 219.
  6. ^ sliptonic. "IBM 7575 Scara robot working at last", YouTube, 9 April 2018. Retrieved on 11 June 2019.
  7. ^ R.H. Taylor, P.D. Summers, J.M. Meyer. "AML: A Manufacturing Language", The International Journal of Robotics Research, 1(3), 19–41, 1 September 1982. Retrieved on 11 June 2019.
  8. ^ Korein, J. U., Maier, G. E., et al. "A configurable system for automation programming and control", in IEEE Conf. on Robotics and Automation, San Francisco, April, 1986. pp. 1871-1877.
  9. ^ Lozano-Pérez, Tomás. "Robot Programming", Massachusetts Institute of Technology A.I. Laboratory (for the Advanced Research Projects Agency, Office of Naval Research), A.I. Memo No. 698, December, 1982, p. 33.

External links