A Manufacturing Language

From HandWiki
Short description: General-purpose programming language

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

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/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]

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;

External links

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.