Abstract:
A portable articulated arm coordinate measurement machine (AACMM) having integrated software controls. The AACMM includes a manually positionable articulated arm portion having opposed first and second ends, the arm portion including a plurality of connected arm segments, each of the arm segments including at least one position transducer for producing position signals. The AACMM also includes a measurement device attached to the first end of the AACMM, and an electronic circuit having a self-contained operating environment for the AACMM. The self-contained operating environment includes a user interface application, an application programming interface, and logic. The logic is configures for performing data collection including receiving position signals from the transducers, calculating data corresponding to a position of the measurement device, the calculating responsive to the position signals, and outputting the data to at least one of the user interface application and the application programming interface.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application claims the benefit of provisional application No. 61/296,555 filed Jan. 20, 2010, the content of which is hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND 
       [0002]    The present disclosure relates to a coordinate measuring machine, and more particularly to a portable articulated arm coordinate measuring machine having integrated software controls. 
         [0003]    Portable articulated arm coordinate measuring machines (AACMMs) have found widespread use in the manufacturing or production of parts where there is a need to rapidly and accurately verify the dimensions of the part during various stages of the manufacturing or production (e.g., machining) of the part. Portable AACMMs represent a vast improvement over known stationary or fixed, cost-intensive and relatively difficult to use measurement installations, particularly in the amount of time it takes to perform dimensional measurements of relatively complex parts. Typically, a user of a portable AACMM simply guides a probe along the surface of the part or object to be measured. The measurement data are then recorded and provided to the user. In some cases, the data are provided to the user in visual form, for example, three-dimensional (3-D) form on a computer screen. In other cases, the data are provided to the user in numeric form, for example when measuring the diameter of a hole, the text “Diameter=1.0034” is displayed on a computer screen. 
         [0004]    An example of a prior art portable articulated arm CMM is disclosed in commonly assigned U.S. Pat. No. 5,402,582 (&#39;582), which is incorporated herein by reference in its entirety. The &#39;582 patent discloses a 3-D measuring system comprised of a manually-operated articulated arm CMM having a support base on one end and a measurement probe at the other end. Commonly assigned U.S. Pat. No. 5,611,147 (&#39;147), which is incorporated herein by reference in its entirety, discloses a similar articulated arm CMM. In the &#39;147 patent, the articulated arm CMM includes a number of features including an additional rotational axis at the probe end, thereby providing for an arm with either a two-two-two or a two-two-three axis configuration (the latter case being a seven axis arm). 
         [0005]    Contemporary portable AACMMs require a connection to an external computer, such as a laptop, to calculate positional data from the raw measurement data collected by the AACMM. In addition, the external computer also provides a user interface application to allow the operator to give instructions to the AACMM. Thus, an AACMM is required to have a driver that supports communication with a variety of operating systems (and operating system levels). In addition, troubleshooting is often difficult because other applications, including those not related to portable AACMM functions, may also be executing on the external computer and impacting portable AACMM functions. Though current AACMMs are suitable for their intended purpose, it would be desirable to reduce the amount of variability introduced by the use of an external computer in conjunction with the portable AACMM to perform measurement functions. 
       SUMMARY OF THE INVENTION 
       [0006]    An embodiment is a portable articulated arm coordinate measurement machine (AACMM) that includes a manually positionable articulated arm portion having opposed first and second ends, the arm portion including a plurality of connected arm segments, each of the arm segments including at least one position transducer for producing position signals. The AACMM also includes a measurement device attached to the first end of the AACMM, and an electronic circuit having a self-contained operating environment for the AACMM. The self-contained operating environment includes a user interface application, an application programming interface, and logic. The logic is configured for performing data collection including receiving position signals from the transducers, calculating data corresponding to a position of the measurement device, the calculating responsive to the position signals, and outputting the data to at least one of the user interface application and the application programming interface. 
         [0007]    Another embodiment is a method of implementing a portable AACMM. The method includes providing a self-contained operating environment for the portable AACMM. The portable AACMM includes a manually positionable articulated arm portion having opposed first and second ends, the arm portion including a plurality of connected arm segments, each arm segment including at least one position transducer for producing position signals. The AACMM also includes a measurement device attached to the first end of the portable AACMM, and an electronic circuit having the self-contained operating environment. The electronic circuit includes a user interface application, an application programming interface, and logic. The logic is configured for performing data collection including receiving position signals from the transducers, calculating data corresponding to a position of the measurement device, the calculating responsive to the position signals, and outputting the data to at least one of the user interface application and the application programming interface. 
         [0008]    A further embodiment is a computer program product for implementing a portable AACMM. The computer program product includes a storage medium having computer-readable program code embodied thereon, which when executed by an electronic circuit on the AACMM causes the computer to implement a method. The method includes providing a self-contained operating environment for the portable AACMM. The portable AACMM includes a manually positionable articulated arm portion having opposed first and second ends, the arm portion including a plurality of connected arm segments, each arm segment including at least one position transducer for producing position signals. The portable AACMM also includes a measurement device attached to the first end of the portable AACMM, and the electronic circuit. The electronic circuit has a self-contained operating environment and includes a user interface application, an application programming interface, and logic. The logic is configured for performing data collection including receiving position signals from the transducers, calculating data corresponding to a position of the measurement device, the calculating responsive to the position signals, and outputting the data to at least one of the user interface application and the application programming interface. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    Referring now to the drawings, exemplary embodiments are shown which should not be construed to be limiting regarding the entire scope of the disclosure, and wherein the elements are numbered alike in several FIGURES: 
           [0010]      FIG. 1 , including  FIGS. 1A and 1B , are perspective views of a portable articulated arm coordinate measuring machine (AACMM) having embodiments of various aspects of the present invention therewithin; 
           [0011]      FIG. 2 , including  FIGS. 2A-2D  taken together, is a block diagram of electronics utilized as part of the AACMM of  FIG. 1  in accordance with an embodiment; 
           [0012]      FIG. 3 , including  FIGS. 3A and 3B  taken together, is a block diagram describing detailed features of the electronic data processing system of  FIG. 2  in accordance with an embodiment; 
           [0013]      FIG. 4  is a flow diagram of a process for implementing a self-contained operating environment on the AACMM in accordance with an embodiment; 
           [0014]      FIG. 5  is a user interface screen presented to an operator when the AACMM is powered on in accordance with an embodiment; 
           [0015]      FIG. 6  is a user interface screen presented to an operator when performing part setup in accordance with an embodiment; 
           [0016]      FIG. 7  is a user interface screen presented to an operator when performing measurement in accordance with an embodiment; 
           [0017]      FIG. 8  is a user interface screen presented to an operator when displaying position data; 
           [0018]      FIG. 9  is a user interface screen presented to an operator when reviewing features in accordance with an embodiment; 
           [0019]      FIG. 10  is a user interface screen presented to an operator when managing files on the AACMM in accordance with an embodiment; 
           [0020]      FIG. 11  is a user interface screen presented to an operator when managing settings on the AACMM in accordance with an embodiment; 
           [0021]      FIG. 12  is a is a flow diagram of a process for verifying that requested updates to the AACMM are authorized in accordance with an embodiment; 
           [0022]      FIG. 13  is a user interface screen presented to an operator when performing diagnostics in accordance with an embodiment; and 
           [0023]      FIG. 14  is a user interface screen presented to an operator when performing calibration in accordance with an embodiment. 
       
    
    
     DETAILED DESCRIPTION 
       [0024]    An articulated arm coordinate measuring machine (AACMM) having a self-contained operating environment is provided in accordance with exemplary embodiments. As used herein, the term “self-contained operating environment” refers to the AACMM being portable, with all of the elements required to perform measurement located on the portable AACMM (e.g., within a housing of the AACMM). This is contrasted with an AACMM that requires a laptop, or other processing device, to perform some functions (e.g., calculating positional data from raw measurement data). The self-contained AACMM may be powered by a battery and/or plugged in to a power source (e.g., 120 VAC). In an embodiment, the self-contained AACMM operates in a “kiosk mode” where the software on the AACMM is designed to perform a set of supported functions that are presented to the operator in a user interface screen when the AACMM is powered on. The “kiosk mode” provides a dedicated and controlled environment where the operator does not need to be concerned with the operating environment (e.g., operating system, software versions, etc.) of the AACMM. Further, the operator does not need to be concerned with the nuances of bringing up an operating system and loading particular software. In an embodiment, a user interface screen is presented to the operator when the AACMM is powered on to guide the operator through using the functions provided by the AACMM. 
         [0025]      FIGS. 1A and 1B  illustrate, in perspective, a portable articulated arm coordinate measuring machine (AACMM)  100  according to various embodiments of the present invention, an articulated arm being one type of coordinate measuring machine. As shown in  FIGS. 1A and 1B , the exemplary AACMM  100  may comprise a six or seven axis articulated measurement device having a measurement probe housing  102  coupled to an arm portion  104  of the AACMM  100  at one end. The arm portion  104  comprises a first arm segment  106  coupled to a second arm segment  108  by a first grouping of bearing cartridges  110  (e.g., two bearing cartridges). A second grouping of bearing cartridges  112  (e.g., two bearing cartridges) couples the second arm segment  108  to the measurement probe housing  102 . A third grouping of bearing cartridges  114  (e.g., three bearing cartridges) couples the first arm segment  106  to a base  116  located at the other end of the arm portion  104  of the AACMM  100 . Each grouping of bearing cartridges  110 ,  112 ,  114  provides for multiple axes of articulated movement. Also, the measurement probe housing  102  may comprise the shaft of the seventh axis portion of the AACMM  100  (e.g., a cartridge containing an encoder system that determines movement of the measurement device, for example a probe  118  and/or a peripheral device, in the seventh axis of the AACMM  100 ). In use of the AACMM  100 , the base  116  is typically affixed to a work surface. 
         [0026]    Each bearing cartridge within each bearing cartridge grouping  110 ,  112 ,  114  typically contains an encoder system (e.g., an optical encoder system). The encoder system (i.e., transducer) provides an indication of the position of the respective arm segments  106 ,  108  and corresponding bearing cartridge groupings  110 ,  112 ,  114 , that all together provide an indication of the position of the probe  118  with respect to the base  116  (and, thus, the position of the object being measured by the AACMM  100  in a certain frame of reference—for example a local or global frame of reference). The arm segments  106 ,  108  may be made from a suitably rigid material such as but not limited to a carbon composite material for example. A portable AACMM  100  with six or seven axes of articulated movement (i.e., degrees of freedom) provides advantages in allowing the operator to position the probe  118  in a desired location within a 360° area about the base  116  while providing an arm portion  104  that may be easily handled by the operator. However, it should be appreciated that the illustration of an arm portion  104  having two arm segments  106 ,  108  is for exemplary purposes, and the claimed invention should not be so limited. An AACMM  100  may have any number of arm segments coupled together by bearing cartridges (and, thus, more or less than six or seven axes of articulated movement or degrees of freedom). 
         [0027]    The probe  118  is detachably mounted to the measurement probe housing  102 , which is connected to bearing cartridge grouping  112 . A handle  126  is removable with respect to the measurement probe housing  102  by way of, for example, a quick-connect interface. The handle  126  may be replaced with another device (e.g., a laser line probe, a bar code reader), thereby providing advantages in allowing the operator to use different measurement devices with the same AACMM  100 . In exemplary embodiments, the probe housing  102  houses a removable probe  118 , which is a contacting measurement device and may have different tips  118  that physically contact the object to be measured, including, but not limited to: ball, touch-sensitive, curved and extension type probes. In other embodiments, the measurement is performed, for example, by a non-contacting device such as a laser line probe (LLP). In an embodiment, the handle  126  is replaced with the LLP using the quick-connect interface. Other types of measurement devices may replace the removable handle  126  to provide additional functionality. Examples of such measurement devices include, but are not limited to, one or more illumination lights, a temperature sensor, a thermal scanner, a bar code scanner, a projector, a paint sprayer, a camera, or the like. 
         [0028]    As shown in  FIGS. 1A and 1B , the AACMM  100  includes the removable handle  126  that provides advantages in allowing accessories or functionality to be changed without removing the measurement probe housing  102  from the bearing cartridge grouping  112 . As discussed in more detail below with respect to  FIG. 2 , the removable handle  126  may also include an electrical connector that allows electrical power and data to be exchanged with the handle  126  and the corresponding electronics located in the probe end. 
         [0029]    In various embodiments, each grouping of bearing cartridges  110 ,  112 ,  114  allows the arm portion  104  of the AACMM  100  to move about multiple axes of rotation. As mentioned, each bearing cartridge grouping  110 ,  112 ,  114  includes corresponding encoder systems, such as optical angular encoders for example, that are each arranged coaxially with the corresponding axis of rotation of, e.g., the arm segments  106 ,  108 . The optical encoder system detects rotational (swivel) or transverse (hinge) movement of, e.g., each one of the arm segments  106 ,  108  about the corresponding axis and transmits a signal to an electronic data processing system within the AACMM  100  as described in more detail herein below. Each individual raw encoder count is sent separately to the electronic data processing system as a signal where it is further processed into measurement data. No position calculator separate from the AACMM  100  itself (e.g., a serial box) is required, as disclosed in commonly assigned U.S. Pat. No. 5,402,582 (&#39;582). 
         [0030]    The base  116  may include an attachment device or mounting device  120 . The mounting device  120  allows the AACMM  100  to be removably mounted to a desired location, such as an inspection table, a machining center, a wall or the floor for example. In one embodiment, the base  116  includes a handle portion  122  that provides a convenient location for the operator to hold the base  116  as the AACMM  100  is being moved. In one embodiment, the base  116  further includes a movable cover portion  124  that folds down to reveal a user interface, such as a display screen. 
         [0031]    In accordance with an embodiment, the base  116  of the portable AACMM  100  contains or houses an electronic data processing system that includes two primary components: a base processing system that processes the data from the various encoder systems within the AACMM  100  as well as data representing other arm parameters to support three-dimensional (3-D) positional calculations; and a user interface processing system that includes an on-board operating system, a touch screen display, and resident application software that allows for relatively complete metrology functions to be implemented within the AACMM  100  without the need for connection to an external computer. 
         [0032]    The electronic data processing system in the base  116  may communicate with the encoder systems, sensors, and other peripheral hardware located away from the base  116  (e.g., a LLP that can be mounted to the removable handle  126  on the AACMM  100 ). The electronics that support these peripheral hardware devices or features may be located in each of the bearing cartridge groupings  110 ,  112 ,  114  located within the portable AACMM  100 . 
         [0033]      FIG. 2  is a block diagram of electronics utilized in an AACMM  100  in accordance with an embodiment. The embodiment shown in  FIG. 2  includes an electronic data processing system  210  including a base processor board  204  for implementing the base processing system, a user interface board  202 , a base power board  206  for providing power, a Bluetooth module  232 , and a base tilt board  208 . The user interface board  202  includes a computer processor for executing user interface application software to perform user interface, display, and other functions described herein. 
         [0034]    As shown in  FIG. 2 , the electronic data processing system  210  is in communication with the aforementioned plurality of encoder systems via one or more arm buses  218 . In the embodiment depicted in  FIG. 2 , each encoder system generates encoder data and includes: an encoder arm bus interface  214 , an encoder digital signal processor (DSP)  216 , an encoder read head interface  234 , and a temperature sensor  212 . Other devices, such as strain sensors, may be attached to the arm bus  218 . 
         [0035]    Also shown in  FIG. 2  are probe end electronics  230  that are in communication with the arm bus  218 . The probe end electronics  230  include a probe end DSP  228 , a temperature sensor  212 , a handle/LLP interface bus  240  that connects with the handle  126  or the LLP  242  via the quick-connect interface in an embodiment, and a probe interface  226 . The quick-connect interface allows access by the handle  126  to the data bus, control lines, and power bus used by the LLP  242  and other accessories. In an embodiment, the probe end electronics  230  are located in the measurement probe housing  102  on the AACMM  100 . In an embodiment, the handle  126  may be removed from the quick-connect interface and measurement may be performed by the laser line probe (LLP)  242  communicating with the probe end electronics  230  of the AACMM  100  via the handle/LLP interface bus  240 . In an embodiment, the electronic data processing system  210  is located in the base  116  of the AACMM  100 , the probe end electronics  230  are located in the measurement probe housing  102  of the AACMM  100 , and the encoder systems are located in the bearing cartridge groupings  110 ,  112 ,  114 . The probe interface  226  may connect with the probe end DSP  228  by any suitable communications protocol, including commercially-available products from Maxim Integrated Products, Inc. that embody the 1-wire® communications protocol  236 . 
         [0036]      FIG. 3  is a block diagram describing detailed features of the electronic data processing system  210  of the AACMM  100  in accordance with an embodiment. In an embodiment, the electronic data processing system  210  is located in the base  116  of the AACMM  100  and includes the base processor board  204 , the user interface board  202 , a base power board  206 , a Bluetooth module  232 , and a base tilt module  208 . 
         [0037]    In an embodiment shown in  FIG. 3 , the base processor board  204  includes the various functional blocks illustrated therein. For example, a base processor function  302  is utilized to support the collection of measurement data from the AACMM  100  and receives raw arm data (e.g., encoder system data) via the arm bus  218  and a bus control module function  308 . The memory function  304  stores programs and static arm configuration data. The base processor board  204  also includes an external hardware option port function  310  for communicating with any external hardware devices or accessories such as an LLP  242 . A real time clock (RTC) and log  306 , a battery pack interface (IF)  316 , and a diagnostic port  318  are also included in the functionality in an embodiment of the base processor board  204  depicted in  FIG. 3 . 
         [0038]    The base processor board  204  also manages all the wired and wireless data communication with external (host computer) and internal (display processor  202 ) devices. The base processor board  204  has the capability of communicating with an Ethernet network via an Ethernet function  320  (e.g., using a clock synchronization standard such as Institute of Electrical and Electronics Engineers (IEEE) 1588), with a wireless local area network (WLAN) via a LAN function  322 , and with Bluetooth module  232  via a parallel to serial communications (PSC) function  314 . The base processor board  204  also includes a connection to a universal serial bus (USB) device  312 . 
         [0039]    The base processor board  204  transmits and collects raw measurement data (e.g., encoder system counts, temperature readings) for processing into measurement data without the need for any preprocessing, such as disclosed in the serial box of the aforementioned &#39;582 patent. The base processor  204  sends the processed data to the display processor  328  on the user interface board  202  via an RS485 interface (IF)  326 . In an embodiment, the base processor  204  also sends the raw measurement data to an external computer. 
         [0040]    Turning now to the user interface board  202  in  FIG. 3 , the angle and positional data received by the base processor is utilized by applications executing on the display processor  328  to provide an autonomous metrology system within the AACMM  100 . Applications may be executed on the display processor  328  to support functions such as, but not limited to: measurement of features, guidance and training graphics, remote diagnostics, temperature corrections, control of various operational features, connection to various networks, and display of measured objects. Along with the display processor  328  and a liquid crystal display (LCD)  338  (e.g., a touch screen LCD) user interface, the user interface board  202  includes several interface options including a secure digital (SD) card interface  330 , a memory  332 , a USB Host interface  334 , a diagnostic port  336 , a camera port  340 , an audio/video interface  342 , a dial-up/cell modem  344  and a global positioning system (GPS) port  346 . 
         [0041]    The electronic data processing system  210  shown in  FIG. 3  also includes a base power board  206  with an environmental recorder  362  for recording environmental data. The base power board  206  also provides power to the electronic data processing system  210  using an AC/DC converter  358  and a battery charger control  360 . The base power board  206  communicates with the base processor board  204  using inter-integrated circuit (I2C) serial single ended bus  354  as well as via a DMA serial peripheral interface (DSPI)  356 . The base power board  206  is connected to a tilt sensor and radio frequency identification (RFID) module  208  via an input/output (I/O) expansion function  364  implemented in the base power board  206 . 
         [0042]    Though shown as separate components, in other embodiments all or a subset of the components may be physically located in different locations and/or functions combined in different manners than that shown in  FIG. 3 . For example, in one embodiment, the base processor board  204  and the user interface board  202  are combined into one physical board. 
         [0043]      FIG. 4  illustrates a process flow for providing an AACMM  100  having a self-contained operating environment in accordance with an embodiment. In an embodiment, the self-contained operating environment uses a commercially available operating system such as, but not limited to, Windows CE. The process shown in  FIG. 4  is performed by the electronic data processing system  210  (also referred to herein as an “electronic circuit”). At step  402 , the AACMM  100  is powered on and a user interface screen, such as that shown in  FIG. 5 , is presented to the operator via the LCD  338 . At step  404 , user interface screens, such as those shown in  FIGS. 6-7 , step the user through a data collection process. At step  406 , positional data is calculated at the base processor board  204  of the AACMM  100 , and at step  408 , the positional data is output to a user interface application and/or to an application programming interface. If the positional data is output to the user interface application, then user interface screens such as those shown in  FIGS. 8-9  are displayed. In an embodiment, the application programming interface communicates with one or more applications executing on the AACMM (e.g., on the display processor  328 , on the coldfire processor  302 ) to perform one or more of the functions described herein. In an embodiment, the application programming interface also interfaces with one or more applications executing external to the AACMM (e.g., CAD/CAM software, measurement software). The user interface application is a specialized application that interfaces with a user interface device such as the color LCD  338  to communicate with the operator. 
         [0044]      FIG. 5  is a main menu user interface screen  500  presented to an operator when the AACMM  100  is powered on in accordance with an embodiment. In an embodiment, the main menu user interface screen  500  depicted in  FIG. 5  is displayed on the LCD  338  on the user interface board  202 . In an embodiment, the user interface board  202  includes resident user interface applications (e.g., stored in the memory  332 ) and executed by the display processor  328  for providing a graphical user interface (GUI) with selectable menu options corresponding to the available functions implemented by the AACMM  100 . The GUI may be implemented as a set of menu options, such as those shown in  FIG. 5 . In  FIG. 5 , a main menu user interface screen  500  displayed on the LCD  338  illustrates various menu options, such as “Part Setup” (e.g., for specifying part elements such as planes, lines, circles, and cylinders), “Measure” (e.g., for specifying features, lengths, angles, and positions), “Files” (e.g., for defining new parts, loading macros, and transferring data), “Settings” (e.g., for specifying applications, network connections, display characteristics, sound elements, power parameters, and languages), and “Diagnostics”. In an embodiment, an operator makes a selection (e.g., by touching the screen on the LCD  338 ) to initiate an action. The main menu user interface screen  500  includes several icons: a probe tip at the bottom which, when selected, brings up compensation screens used to determine a location of the probe; a battery in the top right which indicates how much battery power still remains which is helpful to the operator when the AACMM  100  is being powered by a battery; and network icon (“WiFi”) which indicates current network connections. The icons shown in  FIG. 5  are exemplary in nature as other icons to show status and/or to initiate fast paths to functions may be implemented by other embodiments. 
         [0045]      FIG. 6  is a part setup user interface screen  600  presented to an operator when the operator selects “Part Setup” on the main menu user interface screen  500  shown in  FIG. 5 . In an embodiment, the part setup user interface screen  600  is used by the operator to select a type of part measurement to be performed during data collection. The part setup user interface screen  600  has an icon shaped like a house which is used to bring the operator back to the main menu user interface screen  500 , and an icon shaped like an arrow to bring the operator back to a previous user interface screen. 
         [0046]      FIG. 7  is a measure user interface screen  700  presented to an operator for performing part measurement in accordance with an embodiment. The measure user interface screen  700  is displayed when the operator selects “Measure” on the main menu user interface screen  500  shown in  FIG. 5 . The measure user interface screen  700  options include “Features”, “Lengths”, “Angles”, “Position Display”, and “Review Features”. Examples of features (that may be selected on a subsequent screen or pop-up window) include, but are not limited to circle, cylinder, line, plane, point, and sphere. In an embodiment, once a feature is selected, additional user interface screens step the operator through the measurement process to collect raw measurement data. For example, if a plane is selected, a picture of a plane is displayed on the LCD  338  along with dots indicating which measurement point to take next. As described previously, the measurement device may be implemented by any number of devices including a touch probe where a measurement point is taken by pressing the touch probe to the part being measured. Examples of lengths include, but are not limited to point-to-point, point-to-plane, plane-to-plane, sphere-to-sphere, and circle-to-circle. Examples of angles include, but are not limited to plane-to-plane, plane-to-cylinder, line-to-line, and apex. In an embodiment, once a length or angle is selected, additional user interface screens step the user through the measurement process to collect raw measurement data (also referred to herein as position signals). 
         [0047]      FIG. 8  is a position display user interface screen  800  presented to an operator when the operator selects “Position Display” from the measure user interface screen  700  as shown in  FIG. 7 . The position data is calculated by the AACMM  100  based on the raw measurement data. An operator may view, via the position display user interface screen  800 , position data for each of the selected measurement points. Further details, such as the raw measurement data (e.g., including angles and temperatures at each encoder system) may also be output to the operator. 
         [0048]      FIG. 9  is a review features user interface screen  900  presented to an operator when the operator selects “Review Features” from the measure user interface screen  700  as shown in  FIG. 7 . Using the review features user interface screen  900 , an operator may view position data of measured features.  FIG. 9  has a camera icon that is displayed when a camera (e.g., a web camera) is plugged in to the AACMM  100 . The web camera can be used to take a picture of the part being measured. The picture can then be saved, measurement points can be overlaid on the picture, and the picture displayed and used to assist an operator in measuring the part. 
         [0049]      FIG. 10  is a files user interface screen  1000  presented to an operator when managing files on the AACMM  100  in accordance with an embodiment. The files user interface screen  1000  is displayed on the LCD  338  when the operator selects “Files” on the main menu user interface screen  500  shown in  FIG. 5 . In an embodiment, the files user interface screen  1000  is used by the operator to manage files on the AACMM  100 . When “New Part” is selected, a file to store measurement data for a new part is opened. When “Transfer Files” is selected, the operator is prompted to transfer parts and/or macro files between two or more of a USB, a SD and an on-board flash memory. When “Load Macro” is selected, a sequence of measurement steps are shown to guide an operator through measuring a part. When “Load Parts” is selected, measurement data already taken for a part is displayed (e.g., for review). When “Save Macro” is selected, the operator is prompted to save a macro, and when “Save Parts” is selected, the operator is prompted to save part data. 
         [0050]      FIG. 11  is a settings user interface screen  1100  presented to an operator when managing settings on the AACMM  100  in accordance with an embodiment. The settings user interface screen  1100  is displayed on the LCD  338  when the operator selects “Settings” on the main menu user interface screen  500  shown in  FIG. 5 . An operator may change application settings, connection settings, display settings, sound settings, update software, and language settings. In an embodiment, application settings may be updated by the operator. For example, the minimum point distance may be adjusted, scanning may be enabled/disabled and/or a current time may be set. Similarly, network connection settings; display settings (size of font, colors, etc.); sound settings (volume, type of sound, etc.); update software; and language settings (French, English, etc.) may be updated by the operator. The ranges of items that can be changed and the values that they can be changed to are dictated by a current operating environment of the AACMM  100 . The current operating environment includes software and/or hardware interfaces to each of the elements that may be set. For example, the display interface defines the universe of display attributes that may be updated, and includes valid values of any attributes. Similar interfaces are provided for the connections, sound, software updates, and language elements. In an embodiment, when an operator selects update software, a list containing the current (or latest) software version and the version of the software on the AACMM  100  is displayed, and the operator may be prompted through a software upgrade process. Alternatively, the list may include all or a subset of supported software versions between the software version on the AACMM  100  and the latest software version available. 
         [0051]      FIG. 12  is a is a flow diagram of a process for verifying that requested updates to the AACMM  100  are authorized in accordance with an embodiment. At step  1202 , a request to update AACMM  1000  software code is received from a user. In an embodiment, the update request is initiated from a sub-menu of the settings user interface screen  1100  shown in  FIG. 11 . For example, the sub-menu may have an “update application software” option that the operator has selected. In an embodiment, the application software includes any logic instructions being used by the self-contained operating environment of the AACMM  100 . This includes, but is not limited to, any updates to application software, the application programming interface, the user interface application, the connection interface, the display interface, the sound interface, the power interface, and the language interface, the operating system. For example, the update may include allowing the display interface to support a new setting, allowing the language interface to support a new language, modifying a user interface screen, etc. In order to keep a controlled environment, block  1204  is performed to verify that the user (e.g., the operator and/or source of the update) has authorization to make the update. The authorization is performed in any manner known in the art. If the user does not have authorization, the request is denied at block  1208 . If the user does have authorization, the update to the AACMM  100  is performed at block  1206 . 
         [0052]      FIG. 13  is a diagnostics user interface screen  1300  presented to an operator when performing diagnostics in accordance with an embodiment.  FIG. 14  is a calibration user interface screen  1400  presented to an operator when performing calibration in accordance with an embodiment. 
         [0053]    The user interface screens shown and described herein are examples of high level screens that are used by an exemplary embodiment. Other screens (different content, additional content, presented in a different order) including additional sub-screens may be implemented by exemplary embodiments. In addition, the terms screen and sub-screen are intended to cover any method of providing the data such as, but not limited to pop-up menus and selection lists. 
         [0054]    In an alternate embodiment, the user interface includes audio and/or haptic communication with the operator. 
         [0055]    Technical effects and benefits include having a self-contained portable AACMM  100  that does not require a connection to an external computer for calculating position data from the raw measurement data collected by the AACMM  100 . In addition, an external computer is not required for providing a user interface application to allow the operator to give instructions to the AACMM  100 . A benefit is that a single device, the stand-alone portable AACMM  100  is all that is required to collect and report on measurement data. An additional benefit is that the AACMM  100  is only required to support one operating system/operating system level (i.e., the one that is being used by the self-contained operating environment). In addition, troubleshooting is easier because the entire environment is known and there is no variation in operation due to different operating environments (e.g., different operating systems, software, etc. installed on the external computers). 
         [0056]    As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
         [0057]    Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that may contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0058]    A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0059]    Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
         [0060]    Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++, C# or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0061]    Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. 
         [0062]    These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer readable medium that may direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0063]    The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0064]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
         [0065]    While the invention has been described with reference to example embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed as the best mode contemplated for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another. Furthermore, the use of the terms a, an, etc. do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced item.