SYSTEMS AND METHODS FOR PROCESSING ULTRASONIC SIGNALS TO DETECT THE POSITION OF A PISTON
20250376997 ยท 2025-12-11
Inventors
Cpc classification
International classification
Abstract
A position detection system comprising a hydraulic actuator including a cylinder and piston adapted to move within the cylinder; an ultrasonic transducer adapted to detect an ultrasonic signal indicative of a position of the piston within the cylinder; and a controller. The controller is adapted to receive the ultrasonic signal from the ultrasonic transducer, implement a cross-correlation function to identify a first echo and a second echo in the ultrasonic signal, determine a velocity of first echo and the second echo, and determine the position of the piston within the cylinder in response to determining that the difference between the velocity of the first echo and the second echo and a theoretical velocity is less than a threshold.
Claims
1. A position detection system, comprising: a hydraulic actuator including a cylinder and a piston adapted to move linearly within the cylinder, the piston having a first surface and a second surface that is displaced from the first surface by a known distance; an ultrasonic transducer adapted to detect an ultrasonic signal indicative of a position of the piston within the cylinder; and a controller coupled to the ultrasonic transducer, the controller is adapted to: receive the ultrasonic signal from the ultrasonic transducer; implement a cross-correlation function to identify a first echo and a second echo in the ultrasonic signal; determine a velocity of the first echo and the second echo; determine whether a difference between the velocity of the first echo and the second echo and a theoretical velocity is less than a threshold; and in response to determining that the difference between the velocity of the first echo and the second echo and a theoretical velocity is less than a threshold, determine the position of the piston within the cylinder based in part on the known distance.
2. The position detection system of claim 1, wherein to generate the ultrasonic signal, the ultrasonic transducer is further adapted to emit an ultrasonic pulse in a first direction towards the piston.
3. The position detection system of claim 2, wherein the first echo is a reflection of the ultrasonic pulse off the first surface of the piston and the second echo is a reflection of the ultrasonic pulse off the second surface of the piston.
4. The position detection system of claim 1, wherein the controller is further adapted to: determine a time of flight of the first echo based on the ultrasonic signal; and store the time of flight of the first echo in a memory.
5. The position detection system of claim 1, wherein to determine the position of the piston within the cylinder based in part on the known distance, the controller is further adapted to: determine a time of flight of the first echo based on the ultrasonic signal; determine a time shift between the first echo and the second echo based on the ultrasonic signal; and determine the position of the piston within the cylinder based on the known distance, the time of flight of the first echo, and the time shift between the first echo and the second echo.
6. The position detection system of claim 5, wherein in response to determining that the difference between the velocity of the first echo and the second echo and a theoretical velocity exceeds the threshold, the controller is further adapted to: implement a Hilbert envelope method to identify the first echo and the second echo in the ultrasonic signal; and determine the position of the piston within the cylinder based on the known distance and at least one characteristic of the first echo and the second echo, the time of flight of the first echo, and the time shift between the first echo and the second echo.
7. The position detection system of claim 1, wherein to determine the velocity of the first echo and the second echo, the controller is further adapted to: determine a time shift between the first echo and the second echo; and determine the velocity of the first echo and the second echo based on the known distance and the time shift between the first echo and the second echo.
8. The position detection system of claim 1, wherein the controller is further adapted to: receive a second ultrasonic signal from the ultrasonic transducer; implement the cross-correlation function to identify a first echo in the second ultrasonic signal and a second echo in the second ultrasonic signal; determine at least one characteristic of the first echo in the second ultrasonic signal; determine whether a difference between the at least one characteristic of the first echo in the second ultrasonic signal and a characteristic of the first echo in the ultrasonic signal passes a physical check; and in response to determining that the difference between the at least one characteristic of the first echo in the second ultrasonic signal and the characteristic of the first echo in the ultrasonic signal passes the physical check, determine an updated position of the piston within the cylinder based in part on the at least one characteristic of the first echo in the second ultrasonic signal.
9. The position detection system of claim 8, wherein the at least one characteristic of the first echo in the second ultrasonic signal is a time of flight of the first echo in the second ultrasonic signal.
10. The position detection system of claim 8, wherein in response to determining that the difference between the at least one characteristic of the first echo in the second ultrasonic signal and the characteristic of the first echo in the ultrasonic signal does not pass the physical check, the controller is further adapted to: implement a Hilbert envelope method to identify the first echo in the second ultrasonic signal and the second echo in the ultrasonic signal; determine at least one updated characteristic of the first echo in the second ultrasonic signal; and determine the updated position of the piston within the cylinder based in part on the known distance and the at least one updated characteristic of the first echo in the second ultrasonic signal.
11. A method for detecting the position of a piston within a cylinder of a hydraulic actuator, the method comprising: receiving, from an ultrasonic transducer, an ultrasonic signal indicative of the position of the piston within the cylinder; implementing a cross-correlation function to identify a first echo and a second echo in the ultrasonic signal; determining a velocity of the first echo or the second echo; determining whether a difference between the velocity of the first echo or the second echo and a theoretical velocity is less than a threshold; and in response to determining that the difference between the velocity of the first echo or the second echo and a theoretical velocity is less than a threshold, determining the position of the piston within the cylinder based in part on a time shift between the first echo and the second echo in the ultrasonic signal.
12. The method of claim 11, wherein determining the position of the piston within the cylinder based in part on the time shift between the first echo and the second echo in the ultrasonic signal comprises: determining a time of flight of the first echo based on the ultrasonic signal; determining a known distance between a first surface of the piston off which the first echo was reflected and a second surface of the piston off which the second echo was reflected; and determining the position of the piston within the cylinder based on the time shift between the first echo and the second echo in the ultrasonic signal, the time of flight of the first echo, and the known distance.
13. The method of claim 11, further comprising in response to determining that the difference between the velocity of the first echo and the second echo and a theoretical velocity exceeds the threshold: implementing a Hilbert envelope method to identify the first echo and the second echo in the ultrasonic signal; and determining the position of the piston within the cylinder based in part on a time shift between the first echo and the second echo that were identified in the ultrasonic signal with the Hilber envelope method.
14. The method of claim 11, wherein to generate the ultrasonic signal, the method further comprises: emitting, via the ultrasonic transducer, an ultrasonic pulse in a first direction towards the piston; detecting the first echo, wherein the first echo is a reflection of the ultrasonic pulse off a first surface of the piston; and detecting the second echo, wherein the second echo is a reflection of the ultrasonic pulse off a second surface of the piston.
15. The method of claim 11, further comprising: determining a time of flight of the first echo based on the ultrasonic signal; and storing the time of flight of the first echo in a memory.
16. The method of claim 11, further comprising: receiving a second ultrasonic signal from the ultrasonic transducer; implementing the cross-correlation function to identify a first echo in the second ultrasonic signal and a second echo in the second ultrasonic signal; determining at least one characteristic of the first echo in the second ultrasonic signal; determining whether a difference between the at least one characteristic of the first echo in the second ultrasonic signal and a characteristic of the first echo in the ultrasonic signal passes a physical check; and in response to determining that the difference between the at least one characteristic of the first echo in the second ultrasonic signal and the characteristic of the first echo in the ultrasonic signal passes the physical check, determining an updated position of the piston within the cylinder based in part on the at least one characteristic of the first echo in the second ultrasonic signal.
17. The method of claim 16, wherein in response to determining that the difference between the at least one characteristic of the first echo in the second ultrasonic signal and the characteristic of the first echo in the ultrasonic signal does not pass the physical check, the method further comprises: implementing a Hilbert envelope method to identify the first echo in the second ultrasonic signal and the second echo in the ultrasonic signal; determining at least one updated characteristic of the first echo in the second ultrasonic signal; and determining the updated position of the piston within the cylinder based in part on the at least one updated characteristic of the first echo in the second ultrasonic signal.
18. A hydraulic actuator, comprising: a cylinder having a base portion; a piston adapted to move within an interior of the cylinder, the piston having a first surface and a second surface that is indented relative to the first surface by a known distance; an ultrasonic transducer disposed on the base portion and adapted to detect an ultrasonic signal indicative of a position of the piston within the cylinder; and a controller coupled to the ultrasonic transducer, the controller is adapted to: receive the ultrasonic signal from the ultrasonic transducer; implement a cross-correlation function to identify a first echo and a second echo in the ultrasonic signal; determine a velocity of the first echo and the second echo; determine whether a difference between the velocity of the first echo and the second echo and a theoretical velocity is less than a threshold; and in response to determining that the difference between the velocity of the first echo and the second echo and a theoretical velocity is less than a threshold, determine a distance between the base portion and the first surface of the piston independent of a pressure or a temperature within the interior of the cylinder.
19. The position detection system of claim 18, wherein to determine the distance between the base portion and the first surface of the piston independent of the pressure or the temperature within the interior of the cylinder, the controller is further adapted to determine the distance between the base portion and the first surface of the piston based on the known distance.
20. The position detection system of claim 18, wherein the first echo is a reflection of an ultrasonic pulse off the first surface of the piston and the second echo is a reflection of the ultrasonic pulse off the second surface of the piston.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
DETAILED DESCRIPTION
[0026] Before any embodiments are explained in detail, it is to be understood that the embodiments are not limited in its application to the details of the configuration and arrangement of components set forth in the following description or illustrated in the accompanying drawings. The embodiments are capable of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein are for the purpose of description and should not be regarded as limiting. The use of including, comprising, or having and variations thereof are meant to encompass the items listed thereafter and equivalents thereof as well as additional items. Unless specified or limited otherwise, the terms mounted, connected, supported, and coupled and variations thereof are used broadly and encompass both direct and indirect mountings, connections, supports, and couplings.
[0027] In addition, it should be understood that embodiments may include hardware, software, and electronic components or modules that, for purposes of discussion, may be illustrated and described as if the majority of the components were implemented solely in hardware. However, one of ordinary skill in the art, and based on a reading of this detailed description, would recognize that, in at least one embodiment, the electronic-based aspects may be implemented in software (e.g., stored on non-transitory computer-readable medium) executable by one or more electronic processors, such as a microprocessor and/or application specific integrated circuits (ASICs). As such, it should be noted that a plurality of hardware and software-based devices, as well as a plurality of different structural components, may be utilized to implement the embodiments. For example, servers, computing devices, controllers, processors, etc., described in the specification can include one or more electronic processors, one or more computer-readable medium modules, one or more input/output interfaces, and various connections (e.g., a system bus) connecting the components.
[0028] Relative terminology, such as, for example, about, approximately, substantially, etc., used in connection with a quantity or condition would be understood by those of ordinary skill to be inclusive of the stated value and has the meaning dictated by the context (e.g., the term includes at least the degree of error associated with the measurement accuracy, tolerances [e.g., manufacturing, assembly, use, etc.] associated with the particular value, etc.). Such terminology should also be considered as disclosing the range defined by the absolute values of the two endpoints. For example, the expression from about 2 to about 4 also discloses the range from 2 to 4. The relative terminology may refer to plus or minus a percentage (e.g., 1%, 5%, 10%, or more) of an indicated value.
[0029] Functionality described herein as being performed by one component may be performed by multiple components in a distributed manner. Likewise, functionality performed by multiple components may be consolidated and performed by a single component. Similarly, a component described as performing particular functionality may also perform additional functionality not described herein. For example, a device or structure that is configured in a certain way is configured in at least that way but may also be configured in ways that are not explicitly listed.
[0030]
[0031] A first surface of the piston 104, or piston face, 116 is oriented to face in the direction of the base 112 of the cylinder 102. As described herein, the position of the piston 104 within the cylinder 102 corresponds to a distance from the base 112 of the cylinder 102 to the piston face 116. In the illustrated example of
[0032] In the illustrated example of
[0033] In some examples, one or more sensors can be coupled to and/or disposed within the hydraulic actuator 100 for measuring one or more characteristics of the hydraulic actuator 100. For example, one or more pressure sensors 122 can be disposed within the first chamber 108 and/or placed in fluid communication with the first chamber 108 to measure the pressure of the hydraulic fluid in the first chamber 108. As example, one or more temperature sensors 124 can be disposed within the first chamber 108 and/or placed in fluid communication with the first chamber 108 to measure the temperature of the hydraulic fluid in the first chamber 108.
[0034] As further shown in the illustrated example of
[0035] In operation, the ultrasonic transducer 126 generates an ultrasonic signal. As described herein, generating an ultrasonic signal includes emitting, by the ultrasonic transducer 126, an ultrasonic pulse in the direction of the piston face 116 and receiving, by the ultrasonic transducer 126, one or more reflections, or echoes, of the ultrasonic pulse emitted in the direction of the piston face 116. The one or more echoes of the ultrasonic pulse emitted by the ultrasonic transducer 126 can include, for example, a first echo of the ultrasonic pulse that was reflected off the piston face 116 back towards the ultrasonic transducer 126 and a second echo of the ultrasonic pulse that was reflected off the step face 120 back towards the ultrasonic transducer 126. In some examples, the one or more echoes of the ultrasonic pulse emitted by the ultrasonic transducer 126 can further include one or more parasitic reflections of the ultrasonic pulse off surfaces other than the piston face 116 or step face 120 (e.g., reflections off side surfaces of the cylinder 102).
[0036] As will be described in more detail herein, an ultrasonic signal generated by the ultrasonic transducer 126 can be analyzed to identify, within the ultrasonic signal, the first echo reflected off the piston face 116 and/or the second echo reflected off the step face 120. Then, based on the known distance D.sub.step between the piston face 116 and the step face 120, the identified first echo reflected off the piston face 116, and the identified second echo reflected off the step face 120, the position of the piston 104 within the cylinder 102 can be determined (e.g., the distance D.sub.face from the base 112 of the cylinder 102 to the piston face 116).
[0037]
[0038]
[0039] The first echo 204 and the second echo 206 travel in the second direction 208 towards the ultrasonic transducer 126 and/or base 112 such that the first and second echoes 204, 206 are received, or detected, by the ultrasonic transducer 126. The time delay between the time at which the first echo 204 is detected by the ultrasonic transducer 126 and the second echo 206 is detected by the ultrasonic transducer 126 is a function of the velocity of the echoes 204, 206 and the known distance D.sub.step between the piston face 116 and the step face 120. As will be described in more detail herein, the first echo 204 and the second echo 206 can be included an ultrasonic signal generated by the ultrasonic transducer 126. In that regard, a processing device that is processing, or analyzing, the ultrasonic signal generated by the ultrasonic transducer 126 can identify the first and second echoes 204, 206 within the ultrasonic signal. Moreover, the processing device can further determine a position of the piston 104 within the cylinder 102 based in part on the first and second echoes 204, 206 identified within the ultrasonic signal.
[0040] However, in some instances, one or more parasitic echoes of the ultrasonic signal 200 propagating through the hydraulic fluid in the first chamber 108 can be received, or detected, by the ultrasonic transducer 126 and mistaken for the first echo 204 and/or the second echo 206. In such instances, if the position of the piston 104 is determined based on a parasitic echo that was incorrectly identified the first echo 204 or the second echo 206, the determined position of the piston 104 can be inaccurate. In that regard, as will be described in more detail herein, with the disclosed techniques, an ultrasonic signal generated by the ultrasonic transducer 126 can be processed to filter out parasitic echoes from the ultrasonic signal and/or prevent using a parasitic echo to determine a position of the piston 104 within the cylinder 102.
[0041]
[0042] The parasitic echo 210 travels in the third direction 212 until the parasitic echo 210 is received, or detected, by the ultrasonic transducer 126. As will be described in more detail herein, the parasitic echo 210 can be included an ultrasonic signal generated by the ultrasonic transducer 126. In that regard, a processing device that is processing, or analyzing, the ultrasonic signal generated by the ultrasonic transducer 126 may mistake the parasitic echo 210 in the ultrasonic signal for the first echo 204 or the second echo 206 and use the parasitic echo 210 to inaccurately determine a position of the piston 104 within the cylinder 102. Accordingly, as will be described in more detail herein, one or more post processing techniques can be applied to the ultrasonic signal generated by the ultrasonic transducer 126 to avoid misidentifying the parasitic echo 210 as the first or second echo 204, 206 and inaccurately determining a position of the piston 104. Although the parasitic echo 206 is shown in the illustrated example of
[0043]
[0044] The I/O system 308 includes routines for transferring information between components within the controller 302 and other components of the position detection system 300. In some examples, the I/O system 308 includes a communication interface that is configured to provide communication between the controller 302 and one or more external computing devices 310 (e.g., a smart phone, a tablet, a laptop, etc.). In some examples, the I/O system 308 enables the controller 302 to communicate with external computing devices 310 associated with operators of the oil well in which the hydraulic actuator 100 is implemented. In such examples, the controller 302 communicates with the one or more communication devices 310 through a network. The network is, for example, a wide area network (WAN) (e.g., the Internet, a TCP/IP based network, a cellular network, such as, for example, a Global System for Mobile Communications [GSM] network, a General Packet Radio Services [GPRS] network, a Code Division Multiple Access [CDMA] network, an Evolution-Data Optimized [EV-DO] network, an Enhanced Data Rates for GSM Evolution [EDGE] network, a 3 GSM network, a 4GSM network, a Digital Enhanced Cordless Telecommunications [DECT] network, a Digital AMPS [IS-136/TDMA] network, or an Integrated Digital Enhanced Network [iDEN] network, etc.). In other examples, the network is, for example, a local area network (LAN), a neighborhood area network (NAN), a home area network (HAN), or personal area network (PAN) employing any of a variety of communications protocols, such as Wi-Fi, Bluetooth, ZigBee, etc. In some examples, the network includes one or more of a wide area network (WAN), a local area network (LAN), a neighborhood area network (NAN), a home area network (HAN), or personal area network (PAN).
[0045] The memory 306 includes, for example, a read-only memory (ROM), a random access memory (RAM), an electrically erasable programmable read-only memory (EEPROM), a flash memory, a hard disk, an SD card, or another suitable magnetic, optical, physical, or electronic memory device. The memory 306 stores software, such as but not limited to firmware, one or more applications, program data, one or more program modules, and/or other executable instructions, for detecting the position of the piston 104 within the cylinder 102 of hydraulic actuator 100. Stated another way, the memory 306 stores software, such as but not limited to firmware, one or more applications, program data, one or more program modules, and/or other executable instructions, for determining the distance D.sub.face from the base 112 of the cylinder 102 to the piston face 116. In some examples, the memory 306 stores one or more parameters of the piston 104 and/or the ultrasonic transducer 126. For example, the memory 306 can store the value of the known distance D.sub.step from the piston face 116 to the step face 120. In some examples, the memory 306 stores one or more manufacturing parameters Q (e.g., quality factor(s)) of the hydraulic actuator 100 and/or the ultrasonic transducer 126. In some examples, the memory 306 stores a value of the resonance frequency .sub.res of the ultrasonic transducer 126. As will be described in more detail herein, in some examples, the memory 306 stores one or more characteristics of the first echo 204 and/or the second echo 206 that were determined during an initialization step and/or a piston position tracking loop.
[0046] In operation, the processor 304 retrieves from the memory 306 and executes software instructions for detecting the position of the piston 104 within the cylinder 102 of hydraulic actuator 100. Hereinafter, functions and/or actions performed by components of the controller 302 (e.g., processor 304, memory 306, and I/O system 308) can collectively be referred to as being performed by the controller 302.
[0047] Referring back to
[0048] In operation, the one or more pressure sensors 122 can generate and transmit signals to the controller 302 that include measurements indicative of the pressure conditions for one or more portions of the hydraulic actuator 100. For example, a pressure sensor 122 can generate and transmit signals to the controller 302 that are indicative of the pressure of hydraulic fluid in the first chamber 108 of the cylinder 102. Similarly, in operation, the one or more temperature sensors 124 can generate and transmit signals to the controller 302 that include measurements indicative of the temperature of one or more portions of the hydraulic actuator 100. For example, a temperature sensor 124 can generate and transmit signals to the controller 302 that are indicative of the temperature of hydraulic fluid within the first chamber 108 of the cylinder 102.
[0049] As described herein, the controller 302 can transmit, via the I/O system 308, one or more signals to one or more external computing devices 310. For example, the controller 302 can transmit signals indicative of the position of the piston 104 within the cylinder 102 of the hydraulic actuator 100 to one or more external computing devices 310. As another example, the controller 302 transmit signals indicative of a drawdown volume of the first chamber 108 in the cylinder 102 of the hydraulic actuator 100 to one or more external computing devices 310.
[0050] The user-interface 312 is adapted to receive input from an operator of the oil well in which the hydraulic actuator 100 is implemented and/or output information to the operator of the oil well in which the hydraulic actuator 100 is implemented. For example, the user-interface 312 can output information indicative of the position of the piston 104 within the cylinder 102 of hydraulic actuator 100. In some examples, the user-interface 312 includes a display (e.g., a primary display, a secondary display, etc.) and/or input devices (e.g., touchscreen displays, a plurality of knobs, dials, switches, buttons, levers, joysticks, etc.). The display may be, for example, a liquid crystal display (LCD), a light-emitting diode (LED) display, an organic LED (OLED) display, an electroluminescent display (ELD), a surface-conduction electron-emitter display (SED), a field emission display (FED), a thin-film transistor (TFT) LCD, etc. In some examples, the user-interface 312 includes one or more audio indicators (e.g., speakers, horns, buzzers, etc.) and/or visual indicators such as LEDs.
[0051] The ultrasonic transducer 126 is adapted to generate and transmit to the controller 302 one or more ultrasonic signals indicative of the position of the piston 104 within the cylinder 102 of the hydraulic actuator 100. Hereinafter, the position of the piston 104 within the cylinder 102 of the hydraulic actuator 100 can simply be referred to as the position of the piston 104. As described herein, to generate an ultrasonic signal indicative of the position of the piston 104, the ultrasonic transducer 126 emits an ultrasonic pulse 200 in a first direction 202 towards the piston 104 and receives, or detects, a first echo 204 of the ultrasonic pulse 200 reflected off the piston face 116 and a second echo 206 of the ultrasonic pulse 200 reflected off the step face 120. In some examples, the ultrasonic signal further includes parasitic noise and/or one or more parasitic echoes 210 of the ultrasonic pulse 200. The controller 302 can then process, or analyze, an ultrasonic signal generated by the ultrasonic transducer 126 to detect the first and second echoes 204, 206 in the ultrasonic signal and determine, based in part on the identified first and second echoes 204, 206, the position of the piston 104.
[0052] In some examples, the ultrasonic transducer 126 is adapted to generate an ultrasonic signal that is an analog voltage waveform. In such examples, the controller 302 may include an analog-to-digital converter (ADC) that is adapted to convert the analog voltage waveform generated by the ultrasonic transducer 126 into a digital signal. The sampling rate (e.g., the number of samples per second) of the ADC can be designed in accordance with the central frequency of the ultrasonic transducer 126. The central frequency of the ultrasonic transducer 126, for example, refers to the resonant mode which is used to generate pressure pulses from a driving voltage applied to the ultrasonic transducer 126. A ratio between the sampling rate and the central frequency of the ultrasonic transducer 126 (e.g., sampling rate/central frequency) can be indicative of how the signal quality is digitalized. In some examples, the ratio between the sampling rate and the central frequency of the ultrasonic transducer 126 ranges between 3 and 6. In some examples, the ratio between the sampling rate and the central frequency of the ultrasonic transducer 126 can be as large as 10-20. In one example, if the ultrasonic transducer 126 is a 2 MHz transducer, the signals generated by the ultrasonic transducer 126 are processed at rates between 6 MHz to 12 MHz.
[0053] In some examples, the ultrasonic transducer 126 may include one or more piezoelectric elements adapted to emit and detect pressure waves. In such examples, the controller 302 can apply a voltage to the ultrasonic transducer 126 to excite one or more of the piezoelectric elements. When excited with a voltage, a piezoelectric element in the ultrasonic transducer 126 emits a pressure wave (e.g., the ultrasonic pulse 200) in the direction of the piston 104. Furthermore, in this example, when a reflected pressure wave (e.g., the first echo 204, the second echo 206, or a parasitic echo 210) is received, or detected, by a piezoelectric element in the ultrasonic transducer 126, the piezoelectric element converts the detected pressure wave into a voltage pulse in the ultrasonic signal generated by ultrasonic transducer 126.
[0054] In operation, the controller 302 is adapted to control the ultrasonic transducer 126 to generate one or more ultrasonic signals indicative of the position of the piston 104.
[0055] In operation, the controller 302 is further adapted to analyze, or process, one or more ultrasonic signals generated by the ultrasonic transducer 126 to determine the position of the piston 104 and/or the drawdown volume of the first chamber 108 in the cylinder 102 of hydraulic actuator 100. As will be described in more detail herein, the controller 302 processes an ultrasonic signal generated by the ultrasonic transduce 126 to identify, or detect, a voltage pulse that corresponds to the first echo 204 and a voltage pulse that corresponds to the second echo 206. For example, the controller 302 processes the ultrasonic signal 400 to identify, or detect, the second pulse 404 that corresponds to the measured voltage of the first echo 204 and/or the third pulse 406 that corresponds to the measured voltage of the second echo 204. Hereinafter, the controller 302 processing an ultrasonic signal to identify, or detect, a voltage pulse in an ultrasonic signal that corresponds to a received, or detected, echo can simply be referred to as processing an ultrasonic signal to identify an echo in the ultrasonic signal. In that regard, the controller 302 can process the ultrasonic signal 400 to identify the first echo 204 in the ultrasonic signal 400 and/or identify the second echo 206 in the ultrasonic signal 400.
[0056] In signal processing, cross-correlation refers to a measure of similarity between two series, or signals, as a function of the displacement of one signal relative to the other signal. In some examples, the controller 302 uses cross-correlation signal processing techniques to identify the first echo 204 in an ultrasonic signal generated by the ultrasonic transducer 126 and/or the second echo 206 in an ultrasonic signal generated by the ultrasonic transducer 126. For example, the controller 302 implements a cross-correlation function to scan the ultrasonic signal and identify one or more echoes that are suspected to be the first echo 204 or the second echo 206. While implementing the cross-correlation function, the controller 302 may compare a suspected echo to a reference signal to determine whether the suspected echo is the first echo 204 or the second echo 206. As described herein, a reference signal is a signal that includes one or more references echoes that correspond to the first echo 204 and/or the second echo 206 in an ultrasonic signal generated by the ultrasonic transducer 126.
[0057] In some examples, the controller 302 uses a generic reference signal to implement the cross-correlation function. The generic reference signal can be calculated, for example, using generic manufacturing parameters Q and/or generic resonance frequency parameters. However, depending on the type of ultrasonic transducer 126 that is used to generate the ultrasonic signal, or the type of hydraulic actuator 100 for which the ultrasonic transducer 126 is used to detect the position of the piston 104, the shapes and/or sizes of echoes can vary. Thus, using a generic reference signal to implement a cross-correlation function does not account for these variations in echo size and/or shape and can introduce an error in the cross-correlation. For example, using a generic reference signal to implement the cross-correlation function can result in the first echo 204 and/or the second echo 206 being detected at an incorrect time. As another example, using a generic reference signal to implement the cross-correlation function can result in the first echo 204 and/or the second echo 206 going undetected altogether.
[0058] Accordingly, to account for the above-described variations in echo size and/or shape between the different types of ultrasonic transducer 126 and/or hydraulic actuators 100, the controller 302 can implement a self-calibration step. During the self-calibration step, the controller 302 can generate a calibrated reference signal that is specific to the type of ultrasonic transducer 126 being used and/or the type of hydraulic actuator 100 for which the ultrasonic transducer 126 is used to detect the position of the piston 104. For example, the calibrated reference signal is calculated with parameters (e.g., manufacturing parameters Q and resonance frequency .sub.res) that have been extracted from a fit on a real waveform. In some examples, the calibrated reference signal can be generated using an algorithm based on manufacturing parameters Q of the cylinder 102, manufacturing parameters Q of the piston 104, manufacturing parameters Q of the ultrasonic transducer 126, a resonance frequency .sub.res of the ultrasonic transducer 126, and/or a known function that describes an ultrasonic echo. Then, the controller 302 can re-implement the cross-correlation function with the calibrated reference signal to scan the ultrasonic signal and identify one or more echoes that are suspected to be the first echo 204 or the second echo 206.
[0059] In some examples, the self-calibration step is implemented as an optimization algorithm and/or as a regression algorithm. In such examples, the self-calibration step can be used to determine the minimum discrepancies between a known function, such as a time domain envelope or frequency domain envelope, and parameters such as the resonance frequency .sub.res of the ultrasonic transducer 126 and/or manufacturing parameters Q of the cylinder 102, the piston 104, and/or the ultrasonic transducer 126. In some examples, the self-calibration step can be run at any time during operation of the hydraulic actuator 100. In some examples, a change in parameters and/or a range of parameters during operation of the hydraulic actuator 100 can be an indicator of proper operation or issues with the detected echoes.
[0060] In some examples, the controller 302 implements a cross-correlation function to identify the position of the first echo 204 within an ultrasonic signal generated by the ultrasonic transducer 126 and/or to identify the position of the second echo 206 within the ultrasonic signal generated by the ultrasonic transducer 126. Moreover, in some examples, the controller 302 implements a cross-correlation function to extract the time of flight of the first echo 204 from the piston face 116 to the ultrasonic transducer 126 from an ultrasonic signal and/or to extract the time of flight of the second echo 206 from the step face 120 to the ultrasonic transducer 126 from an ultrasonic signal. Furthermore, in some examples, the controller 302 implements a cross-correlation function to extract a time shift between the first echo 204 in the ultrasonic signal and the second signal 206 in an ultrasonic signal generated by the ultrasonic transducer 126.
[0061] In some examples, implementing a cross-correlation function includes calculating, or determining, the cross-correlation between an ultrasonic signal and a reference signal in the frequency domain. Using Equation 1 below, the controller 302 can determine the cross-correlation CC.sub.fd between an ultrasonic signal generated by the ultrasonic transducer 126 and a reference signal in the frequency domain based on a Fast Fourier Transform (FFT) of the ultrasonic signal FFT.sub.ultra and an FFT of the reference signal FFT.sub.reference.
[0062] In some examples, implementing a cross-correlation function includes calculating, or determining, a cross-correlation analytic signal for the cross-correlation between the ultrasonic signal and the reference signal. Using Equation 2 below, the controller 302 can determine the cross-correlation analytic signal CC.sub.as based on an inverse zero-frequency shift iFFTshift of the inverse FFT iFFT of the cross-correlation CC.sub.fd between the ultrasonic signal and the reference signal in the frequency domain.
[0063] In some examples, implementing a cross-correlation function includes calculating, or determining, a cross-correlation envelope for the cross-correlation between the ultrasonic signal and the reference signal. Using Equation 3 below, the controller 302 can determine the cross-correlation envelope CC.sub.e by taking the absolute value of the cross-correlation analytic signal CC.sub.as.
[0064] In some instances, even when the controller 302 implements a cross-correlation function with a calibrated reference signal, errors in detecting the first and/or second echoes 204, 206 in an ultrasonic signal can occur. For example, the presence of parasitic noise and/or parasitic echoes in an ultrasonic signal near the first echo 204 and/or the second echo 206 can result in the cross-correlation function incorrectly identifying a first echo 204 and/or a second echo 206. Accordingly, in some examples, the controller 302 performs a check on the shape of a determined cross-correlation envelope CC.sub.e to determine whether parasitic noise and/or parasitic echoes that are likely to negatively affect the identification of the first and/or second echoes 204, 206 are present in the cross-correlation envelope CC.sub.e. When performing the check, the number and/or relative amplitude of peaks within the cross-correlation envelope CC.sub.e can be a strong indicator for the quality of the ultrasonic signal in which the first and/or second echoes 204, 206 are being identified.
[0065] For example, if the cross-correlation envelope CC.sub.e includes relatively few peaks and/or the relative differences between amplitudes of adjacent peaks in the cross-correlation envelope CC.sub.e are quite large, the ultrasonic signal may include relatively few parasitic echoes and/or little parasitic noise that negatively affect the identification of the first echo 204 and/or the second echo 206. In that regard, if the controller 302 determines that the cross-correlation envelope CC.sub.e includes relatively few peaks and/or the relative difference between amplitudes of adjacent peaks in the cross-correlation envelope CC.sub.e is quite large, the controller 302 may determine that the shape of the cross-correlation envelope CC.sub.e satisfies a quality threshold and/or that the first and/or second echoes 204, 206 were correctly identified in the ultrasonic signal.
[0066] As another example, if the cross-correlation envelope CC.sub.e includes relatively many peaks and/or the relative differences between amplitudes of adjacent peaks in the cross-correlation envelope CC.sub.e are quite small, the ultrasonic signal may include relatively large parasitic echoes and/or significant amounts parasitic noise. In that regard, if the controller 302 determines that the cross-correlation envelope CC.sub.e includes relatively many peaks and/or the relative differences between amplitudes of adjacent peaks in the cross-correlation envelope CC.sub.e are quite small, the controller 302 may determine that the shape of the cross-correlation envelope CC.sub.e does not satisfy a quality threshold and/or that the first and/or second echoes 204, 206 were incorrectly identified in the ultrasonic signal. In some examples, in response to determining that the shape of the cross-correlation envelope CC.sub.e does not satisfy a quality threshold and/or that the first and/or second echoes 204, 206 were incorrectly identified in the ultrasonic signal, the controller 302 implements a Hilbert envelope method to identify the first echo 204 and/or the second echo 206 in the ultrasonic signal.
[0067]
[0068] As shown in
[0069] When the controller 302 correctly identifies a first echo 204 in an ultrasonic signal, for example by using a cross-correlation function, the controller 302 can further process the ultrasonic signal to determine the time of flight TOF.sub.1st of the first echo 204. The time of flight TOF.sub.1st of the first echo 204 corresponds to how long the first echo 204 takes to travel from the piston face 116 to the ultrasonic transducer 126. Similarly, when the controller 302 correctly identifies a second echo 206 within an ultrasonic signal, for example by using a cross-correlation function, the controller 302 can further process the ultrasonic signal to determine the time of flight TOF.sub.2nd of the second echo 206. The time of flight TOF.sub.2nd of the second echo 206 corresponds to how long the second echo 206 takes to travel from the step face 120 to the ultrasonic transducer 126. Furthermore, the controller 302 can determine a time shift TS between the first and second echoes 204, 206, where the time shift TS between the first and second echoes 204, 206 is equal to the difference between the time of flight TOF.sub.1st of the first echo 204 and the time of flight TOF.sub.2nd of the second echo 206.
[0070] Using Equation 4 below, the controller 302 can then determine the distance D.sub.face from the base 112 of the cylinder 102 to the piston face 116 (e.g., the position of the piston 104) based on the time of flight TOF.sub.1st of the first echo 204, the known distance D.sub.step between the piston face 116 and the step face 120, and the time shift TS between receipt of the first echo 204 by the ultrasonic transducer 126 and receipt of the second echo 206 by the ultrasonic transducer 126. As described herein, the distance D.sub.face from the base 112 of the cylinder 102 to the piston face 116 corresponds to the position of the piston 104. Importantly, by using Equation 4 shown below, the position of the piston 104 can be determined independent of the pressure and/or temperature conditions within the first chamber 108. Stated another way, by using the time shift TS between the first echo 204 reflected off the piston face 116 and the second echo 206 reflected off the step face 120, where the piston face 116 is separated from the step face 120 by the known distance D.sub.step, the controller 302 can determine the position of the piston 104 independent of the pressure and/or temperature within the first chamber 108.
[0071] As described herein, in some instances, the first echo 204 and/or the second echo 206 can be incorrectly identified within an ultrasonic signal. For example, when parasitic echoes (e.g., parasitic echo 210) and/or parasitic noise are intertwined with the first echo 204 and/or the second echo 206, the controller 302 may incorrectly identify the first echo 204 and/or the second echo 206 within the ultrasonic signal. As further described herein, when the controller 302 determines a position of the piston 104 based on an echo that was incorrectly identified as the first echo 204 and/or the second echo 206, the determined position of the piston 104 will not be accurate. Thus, during an initialization step in which the controller 302 identifies a first echo 204 and a second echo 206 in an ultrasonic signal generated by the ultrasonic transducer 126, the controller 302 can perform one or more physical checks to determine whether the first echo 204 and/or the second echo 206 were correctly identified in the ultrasonic signal.
[0072] In that regard, the respective times of flight and/or velocities of the first and second echoes 204, 206 propagating through the hydraulic fluid in the first chamber 108 are governed by principles of ultrasonic physics. For example, the velocity of the first echo 204 propagating through the hydraulic fluid in the first chamber 108 is equal to the velocity of the second echo 206 propagating through the hydraulic fluid in the first chamber 108 because the first and second echoes 204, 206 are subject to the same pressure and temperature conditions within the first chamber 108. Accordingly, using Equation 5 below, the controller 302 can determine the velocity V.sub.calculated of the first and second echoes 204, 206 identified in the ultrasonic signal based on (i) the known distance D.sub.step by which the piston face 116 is separated from the step face 120 and (ii) the determined time shift TS between the first echo 204 and the second echo 206.
[0073] The controller 302 can also determine a theoretical value for the sound velocity V.sub.theoretical of ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108 based on, for example, known pressure and temperature conditions within the first chamber 108. As described herein, the pressure and temperature conditions within the first chamber 108 can be respectively determined based on measurements generated by the pressure sensor(s) 122 and the temperature sensor(s) 124. Thus, using Equation 6 below, the controller 302 can determine the value of the theoretical sound velocity V.sub.theoretical for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108 based on a pressure P within the first chamber 108 measured by the pressure sensor 122, a temperature T within the first chamber 108 measured by the temperature sensor 124, and a plurality of 2-dimensional polynomial filters c1-c6.
[0074] The controller 302 can then compare the calculated velocity V.sub.calculated of the first and second echoes 204, 206 to the theoretical sound velocity V.sub.theoretical for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108 to determine whether the first and second echoes, 204, 206 were correctly identified. In some examples, the controller 302 can determine whether calculated velocity V.sub.calculated of the first and second echoes 204, 206 is incorrect and/or whether the first and/or second echoes 204, 206 were incorrectly identified based on a difference between the calculated velocity V.sub.calculated of the first and second echoes 204, 206 and the theoretical sound velocity V.sub.theoretical for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108.
[0075] For example, if the difference between the calculated velocity V.sub.calculated and the theoretical sound velocity V.sub.theoretical is less than a threshold (e.g., 10, 20, 40, etc.), the controller 302 determines that the calculated velocity V.sub.calculated of the first and second echoes 204, 206 is correct and/or that the first and/or second echoes 204, 206 were correctly identified. Stated another way, the controller 302 determines that the physical check on the calculated velocity V.sub.calculated passed when the difference between the calculated velocity V.sub.calculated and the theoretical sound velocity V.sub.theoretical is less than a threshold. In response to the physical check passing, the controller 302 can proceed with continuous tracking of the position of the piston 104.
[0076] However, if the difference between the calculated velocity V.sub.calculated and the theoretical sound velocity V.sub.theoretical exceeds a threshold (e.g., 10, 20, 40, etc.), the controller 302 determines that the calculated velocity V.sub.calculated of the first and second echoes 204, 206 is incorrect and/or that the first and/or second echoes 204, 206 were incorrectly identified. Stated another way, the controller 302 determines that the physical check on the calculated velocity V.sub.calculated failed when the difference between the calculated velocity V.sub.calculated and the theoretical sound velocity V.sub.theoretical exceeds a threshold. In response to the physical check failing, the controller 302 does not proceed with continuous tracking of the position of the piston 104. Rather, the controller 302 proceeds with using an alternative method, such as the Hilbert envelope method, to identify the first and second echoes 204, 206 within the ultrasonic signal and determine, based on the identified first and second echoes 204, 206, an initial position of the piston 104.
[0077] In one example, the controller 302 can determine that the calculated velocity V.sub.calculated of the first and second echoes 204, 206 is incorrect and/or that the first and/or second echoes 204, 206 were incorrectly identified when either of the following conditions is met:
[0078] If the controller 302 determines that neither Condition 1 nor Condition 2 above are met, the controller 302 determines that the calculated velocity V.sub.calculated of the first and second echoes 204, 206 is correct and/or that the first and/or second echoes 204, 206 were correctly identified. Stated another way, the controller 302 determines that the physical check on the calculated velocity V.sub.calculated passed when neither Condition 1 nor Condition 2 is met. In response to the physical check passing, the controller 302 can proceed with continuous tracking of the position of the piston 104.
[0079] In contrast, if the controller 302 determines that one of Condition 1 or Condition 2 above is met, the controller 302 determines that the calculated velocity V.sub.calculated of the first and second echoes 204, 206 is incorrect and/or that the first and/or second echoes 204, 206 were incorrectly identified. Stated another way, the controller 302 determines that the physical check on the calculated velocity V.sub.calculated failed when one of Condition 1 or Condition 2 is met. In response to the physical check failing, the controller 302 does not proceed with continuous tracking of the position of the piston 104. Rather, the controller 302 proceeds with using an alternative method, such as the Hilbert envelope method, to identify the first and second echoes 204, 206 within the ultrasonic signal and determine, based on the identified first and second echoes 204, 206, an initial position of the piston 104.
[0080] When implementing the Hilbert envelope method to identify a first echo 204 and/or a second echo 206 in an ultrasonic signal generated by the ultrasonic transducer 126, the controller 302 determines the envelope of the ultrasonic signal. The envelope of the of the ultrasonic signal includes a first peak that corresponds to the maximum amplitude of the first echo 204 and a second peak that corresponds to the maximum amplitude of the second echo 206. In that regard, the controller 302 can identify the first echo 204 in the ultrasonic signal based on the first peak in the envelope of the ultrasonic signal and can identify the second echo 206 in the ultrasonic signal based on the second peak in the envelope of the ultrasonic signal. Then, the controller 302 can determine a time shift TS between the first and second echoes 204, 206 based on a time difference between the first and second peaks in the envelope of the ultrasonic signal. After determining the time shift TS between the first and second echoes 204, 206, the controller can use Equation 4 described herein to determine the initial position of the piston 104.
[0081] Although the envelope of an ultrasonic signal can include one or more additional peaks that correspond to parasitic noise and/or parasitic echoes in the ultrasonic signal, the controller 302 can distinguish the peaks that correspond to the first and second echoes 204, 206 from the peaks corresponding to parasitic noise and/or parasitic echoes because the respective amplitudes of the peaks that correspond to the first and second echoes 204, 206 are greater than the amplitudes of peaks corresponding to parasitic noise and/or parasitic echoes. In some examples, the controller 302 can reject parasitic noise and/or parasitic echoes having amplitudes less than a particular amplitude threshold from the envelope of an ultrasonic signal. When compared to the cross-correlation functions used to identify first and/or second echoes 204, 206 in an ultrasonic signal described herein, the Hilbert envelope method does not take into account the specific shape of echoes of an ultrasonic pulse emitted by the ultrasonic transducer 126. However, the Hilbert envelope method is still a reliable back-up method for determining the position of the piston 104.
[0082]
[0083]
[0084] As shown, a method 700 begins at step 702, at which a controller receives an initial ultrasonic signal from an ultrasonic transducer. For example, the controller 302 receives an initial ultrasonic signal from the ultrasonic transducer 126 disposed on the base 112 of the cylinder 102 included in hydraulic actuator 100. As described herein, the ultrasonic transducer 126 can generate an ultrasonic signal by emitting an ultrasonic pulse 200 in the first direction 202 towards the piston 104 in cylinder 102 and receiving, or detecting, a first echo 204 of the ultrasonic pulse 200 reflected off the piston face 116 and a second echo 206 of the ultrasonic pulse 200 reflected off the step face 120. In some examples, the initial ultrasonic signal further includes parasitic noise and/or one or more parasitic echoes 210 of the ultrasonic pulse 200. In some examples, the initial ultrasonic signal generated by the ultrasonic transducer 126 is a waveform that includes a first pulse that corresponds to the first echo 204, a second pulse that corresponds to the second echo 206, and one or more other pulses that correspond to parasitic noise and/or parasitic echoes 210.
[0085] At step 704, a controller scans, or processes, the initial ultrasonic signal to identify a first echo in the ultrasonic signal and a second echo in the initial ultrasonic signal. For example, the controller 302 scans the initial ultrasonic signal to identify the first echo 204 reflected off the piston face 116 and the second echo 206 reflected off the step face 120. In some examples, at step 704, the controller 302 implements a cross-correlation function, for example using one or more of Equations 1-3 described herein, to identify the first and second echoes 204, 206 in the initial ultrasonic signal. In some examples, at step 704, the controller 302 uses a generic reference signal to implement the cross-correlation function.
[0086] At step 706, a controller performs a self-calibration step. During the self-calibration step, for example, the controller 302 can generate a calibrated reference signal that is specific to the type of ultrasonic transducer 126 being used and/or the type of hydraulic actuator 100 for which the ultrasonic transducer 126 is used to detect the position of the piston 104. For example, the calibrated reference signal can be generated using an algorithm based on manufacturing parameters Q of the cylinder 102 and/or the piston 104, a resonance frequency .sub.res of the ultrasonic transducer 126, and a known function that describes an ultrasonic echo.
[0087] At step 708, a controller re-scans, or re-processes, the initial ultrasonic signal using calibrated parameters to identify the first echo in the initial ultrasonic signal and the second echo ultrasonic signal. For example, the controller 302 can re-scan, or re-process, the initial ultrasonic signal by implementing a cross-correlation function in combination with the calibrated reference signal generated at step 708. In that regard, the controller 302 identifies the first echo 204 and/or the second echo 206 in the initial ultrasonic signal by using the cross-correlation function in combination with the calibrated reference signal generated at step 708.
[0088] At step 710, a controller checks for parasitic signals, such as parasitic noise and/or parasitic echoes, in the cross-correlation envelope for the cross-correlation between the initial ultrasonic signal and the reference signal. For example, the controller 302 analyzes the shape of the cross-correlation envelope to determine whether any parasitic noise and/or parasitic echoes are present in the cross-correlation envelope for the cross-correlation between the initial ultrasonic signal and the reference signal. As described herein, if the cross-correlation envelope includes relatively few peaks and/or the relative differences between amplitudes of adjacent peaks in the cross-correlation envelope is quite large, the initial ultrasonic signal may include relatively few parasitic echoes and/or little parasitic noise. Moreover, as described herein, if the cross-correlation envelope includes relatively many peaks and/or the relative differences between amplitudes of adjacent peaks in the cross-correlation envelope are quite small, the initial ultrasonic signal may include relatively large parasitic echoes and/or significant amounts parasitic noise.
[0089] In some examples, if the controller 302 determines that the initial ultrasonic signal includes relatively large parasitic echoes and/or significant amounts parasitic noise at step 710, the controller 302 can proceed with using the Hilbert envelope method to calculate, or determine, one or more characteristics of the first and second echoes identified in the initial ultrasonic signal at step 708. In such examples, the controller 302 can use initial manufacturing parameters of the ultrasonic transducer 126 to determine the one or more characteristics of the first and second echoes identified at step 708. The controller 302 may continue to use the Hilbert Envelope method until piston 104 stops moving, where at this time the controller 302 attempt to re-initialize the ultrasonic transducer 126 and use the cross-correlation methods described herein.
[0090] If the controller 302 determines that the initial ultrasonic signal includes relatively few parasitic echoes and/or insignificant amounts parasitic noise at step 710, the method 700 proceeds to step 712.
[0091] At step 712, a controller calculates, or determines, one or more characteristics of the first and second echoes identified in the initial ultrasonic signal at step 708. For example, at step 712, the controller 302 can determine, based on the initial ultrasonic signal and/or the cross-correlation envelope for the cross-correlation between the initial ultrasonic signal and the reference signal, one or more of the time of flight TOF.sub.1st of the first echo 204 identified in the initial ultrasonic signal at step 708, the time of flight TOF.sub.2nd of the second echo 206 identified in the initial ultrasonic signal at step 708, and/or a time shift TS between the first and second echoes 204, 206 identified in the initial ultrasonic signal at step 708. In some examples, at step 712, the controller 302 can further calculate, or determine, the velocity at which the first echo 204 and/or the second echo 206 propagates through the hydraulic fluid in first chamber 108 based on (i) the known distance D.sub.step between the piston face 116 and (ii) the step face 120 and the time shift TS between the first and second echoes 204, 206 identified in the initial ultrasonic signal at step 708. For example, the controller 302 can use Equation 5 described herein to calculate the velocity of the first and second echoes 204, 206 identified in the initial ultrasonic signal at step 708.
[0092] At step 714, a controller performs one or more physical checks based on principles of ultrasonic physics to determine whether the first and/or second echoes were correctly identified in the initial ultrasonic signal at step 708. In one example of a physical check, the controller 302 determines whether the velocity of the first and second echoes 204, 206 calculated at step 712 differs from a theoretical sound velocity for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108 by less than a threshold amount (e.g., 20, 40, or some other threshold amount). As described herein, the controller 302 can use Equation 6 to calculate the theoretical sound velocity for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108.
[0093] If, at step 714, the controller 302 determines that the difference between the velocity of the first and second echoes 204, 206 calculated at step 712 and the theoretical sound velocity for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108 is less than a threshold, the controller 302 determines that the velocity of the first and second echoes 204, 206 was correctly calculated at step 712 and/or that the first and second echoes 204, 206 were correctly identified in the initial ultrasonic signal at step 708. In response to the controller 302 determining that the velocity of the first and second echoes 204, 206 was correctly calculated at step 712 and/or that the first and second echoes 204, 206 were correctly identified in the initial ultrasonic signal at step 708, the method 700 proceeds to step 720.
[0094] However, if at step 714, the controller 302 determines that the difference between the velocity of the first and second echoes 204, 206 calculated at step 712 and the theoretical sound velocity for ultrasonic echoes propagating through the hydraulic fluid in the first chamber 108 exceeds a threshold, the controller 302 determines that the velocity of the first and second echoes 204, 206 was incorrectly calculated at step 712 and/or that the first and second echoes 204, 206 were incorrectly identified in the initial ultrasonic signal at step 708. In response to the controller 302 determining that the velocity of the first and second echoes 204, 206 was incorrectly calculated at step 712 and/or that the first and second echoes 204, 206 were incorrectly identified in the initial ultrasonic signal at step 708, the method 700 proceeds to step 716.
[0095] In some examples, at step 714, the controller 302 can further perform a physical check on the signal-to-noise ratio (SNR) of the initial ultrasonic signal. In such examples, the controller 302 determines whether the SNR of the initial ultrasonic signal satisfies a threshold condition. For example, the controller 302 can determine whether the SNR of the initial ultrasonic signal is greater than 6 dB, greater than 20 dB, or greater than some other threshold amount. If the SNR of the initial ultrasonic signal does not satisfy a threshold condition, the method 700 proceeds to step 716. However, if the SNR of the initial ultrasonic signal does satisfy a threshold condition, the method 700 proceeds to step 720.
[0096] At step 716, a controller implements a Hilbert envelope method to identify a first echo in the initial ultrasonic signal and/or a second echo in the ultrasonic signal. For example, the controller 302 uses the Hilbert envelope to identify, in the initial ultrasonic signal, the first echo 204 reflected off the piston face 116 and the second echo 206 reflected off the step face 120.
[0097] At step 718, a controller calculates, or determines, one or more characteristics of the first and second echoes identified in the initial ultrasonic signal at step 716. For example, at step 718, the controller 302 can determine, based on the Hilbert envelope of initial ultrasonic signal determined at step 716, one or more of the time of flight TOF.sub.1st of the first echo 204 identified in the initial ultrasonic signal at step 716, the time of flight TOF.sub.2nd of the second echo 206 identified in the initial ultrasonic signal at step 716, and/or a time shift TS between the first and second echoes 204, 206 identified in the initial ultrasonic signal at step 716. In some examples, at step 718, the controller 302 can further calculate, or determine, the velocity at which the first echo 204 and/or the second echo 206 propagates through hydraulic fluid in the first chamber 108 based on (i) the known distance D.sub.step between the piston face 116 and the step face 120 and (ii) the time shift TS between the first and second echoes 204, 206 identified in the initial ultrasonic signal at step 716. For example, the controller 302 can use Equation 5 described herein to calculate the velocity of the first and second echoes 204, 206 identified in the initial ultrasonic signal at step 716.
[0098] At step 720, a controller stores the respective times of flights of the first and second echoes that were determined at step 712 or step 718. For example, the controller 302 stores the time of flight TOF.sub.1st of the first echo 204 that was determined at step 712 or step 718 in the memory 306 and/or stores the time of flight TOF.sub.2nd of the second echo 206 that was determined at step 712 or step 718. As will be described in more detail herein, the time of flight TOF.sub.1st of the first echo 204 and/or the time of flight TOF.sub.2nd of the second echo 206 can be used in a position tracking loop for tracking the position of the piston 104.
[0099] In some examples, the method 700 further includes a step 722 at which a controller calculates, or determines, an initial position of the piston 104. For example, at step 722, the controller 302 can use Equation 4 described herein to determine the initial position of the piston 104 based on the time of flight TOF.sub.1st of the first echo 204, the known distance D.sub.step between the piston face 116 and the step face 120, and the time shift TS between the first echo 204 and the second echo 206. As described herein, the controller 302 can determine the initial position of the piston 104 independent of the pressure and/or temperature conditions of the first chamber 108 in the cylinder 102 of hydraulic actuator 100.
[0100] After an initialization step in which the controller 302 correctly identifies the first and second echoes 204, 206 within an initial ultrasonic signal generated by the ultrasonic transducer 126 and/or determines an initial position of the piston 104 (e.g., using the cross-correlation function or the Hilbert envelope method), the controller 302 can proceed with continuous tracking of the piston position as the piston 104 extends and retracts within the cylinder 102 during operation of the hydraulic actuator 100. Continuous tracking of the piston position can hereinafter be referred to as a position tracking loop.
[0101] During each iteration of the position tracking loop, the controller 302 can receive a new, or updated, ultrasonic signal generated by the ultrasonic transducer 126. Then, using one or more of the cross-correlation functions described herein, the controller 302 can identify the first and second echoes 204, 206 within the updated ultrasonic signal. Furthermore, using one or more of the techniques described herein and based on the first and second echoes 204, 206 identified within the updated ultrasonic signal, the controller 302 can determine one or more of an updated time shift TS between the first and second echoes 204, 206, an updated time of flight TOF.sub.1st of the first echo 204, an updated time of flight TOF.sub.2nd of the second echo 206, an updated position of the piston 104 (e.g., for example using Equation 4), and/or an updated velocity of the first and second echoes 204, 206 (e.g., for example using Equation 5). Notably, with the techniques described herein, the controller 302 can determine each of these updated values independent of the pressure and/or temperature conditions within the first chamber 108.
[0102] As described herein with respect to the initializations step, in some instances, the first echo 204 and/or the second echo 206 can be incorrectly identified within an ultrasonic signal generated by the ultrasonic transducer 126. Thus, as the controller 302 continuously determines updated positions of the piston 104 during a position tracking loop, the controller 302 can perform one or more physical checks to determine whether the first echo 204 and/or the second echo 206 were correctly identified in the updated ultrasonic signal.
[0103] In a first physical check performed by the controller 302 during implementation of the position tracking loop, the controller 302 determines whether an updated time of flight of the first echo 204 calculated during a current iteration of the position tracking loop differs from a time of flight of the first echo 204 calculated in the previous iteration of the position tracking loop by an amount that exceeds the maximum time of flight change from one iteration of the tracking loop to another. For example, the controller 302 can determine, based on a known maximum velocity of the piston 104, a maximum amount TOF.sub.max by which the time of flight of the first echo 204 can change between concurrent iterations of the position tracking loop.
[0104] Using Equation 7 below, the controller 302 can determine the amount TOF.sub.change by which the time of flight of the first echo 204 changes between iteration i1 of the position tracking loop and iteration i of the position tracking loop. In Equation 7, TOF.sub.1st(i1) is the time of flight of the first echo 204 during iteration i1 of the position tracking loop and TOF.sub.1st(i) is the time of flight of the first echo 204 during iteration i of the position tracking loop.
[0105] If the amount TOF.sub.change exceeds the maximum amount TOF.sub.max, the controller 302 determines that the first physical check has failed. When the first physical check fails, the controller 302 determines that the first and/or second echoes 204, 206 were incorrectly identified in the updated ultrasonic signal during iteration i of the position tracking loop and/or that the time of flight TOF.sub.1st(i) of the first echo 204 was incorrectly determined during iteration i of the position tracking loop.
[0106] In some examples, in response to the first physical check failing during an iteration i of the position tracking loop, the controller 302 uses the Hilbert envelope method to identify the first and/or second echoes 204, 206 in the updated ultrasonic signal. Then, using one or more of the techniques described herein and based on the first and second echoes 204, 206 identified within the update ultrasonic signal using the Hilbert envelope method, the controller 302 can determine one or more of an updated time shift TS between the first and second echoes 204, 206, an updated time of flight TOF.sub.1st of the first echo 204, an updated time of flight TOF.sub.2nd of the second echo 206, an updated position of the piston 104 (e.g., for example using Equation 4), and/or an updated velocity of the first and second echoes 204, 206 (e.g., for example using Equation 5).
[0107] In a second physical check performed by the controller 302 during implementation of the position tracking loop, the controller 302 determines whether an updated time shift between the first and second echoes 204, 206 calculated during a current iteration of the position tracking loop differs from a time shift between the first and second echoes 204, 206 that was calculated in the previous iteration of the position tracking loop by an amount that exceeds the maximum time shift change from one iteration of the tracking loop to another. For example, the controller 302 can determine, based on measured pressure and/or temperature conditions within the first chamber 108 of the cylinder 102, a maximum amount TS.sub.max by which the time shift between the first and second echoes 204, 206 can change between concurrent iterations of the position tracking loop.
[0108] Using Equation 8 below, the controller 302 can determine the amount TS.sub.change by which the time shift between the first and second echoes 204, 206 changes between iteration i1 of the position tracking loop and iteration i of the position tracking loop. In Equation 8, TS.sub.(i1) is the time shift between the first and second echoes 204, 206 during iteration i1 of the position tracking loop and TS.sub.(i) is the time shift between the first and second echoes 204, 206 during iteration i of the position tracking loop.
[0109] If the amount TS.sub.change exceeds the maximum amount TS.sub.max, the controller 302 determines that the second physical check has failed. When the second physical check fails, the controller 302 determines that the first and/or second echoes 204, 206 were incorrectly identified in the updated ultrasonic signal during iteration i of the position tracking loop and/or that the time shift TS.sub.(i) between the first and second echoes 204, 206 was incorrectly determined during iteration i of the position tracking loop.
[0110] In some examples, in response to the second physical check failing during an iteration i of the position tracking loop, the controller 302 uses the Hilbert envelope method to identify the first and/or second echoes 204, 206 in the updated ultrasonic signal. Then, using one or more of the techniques described herein and based on the first and second echoes 204, 206 identified within the updated ultrasonic signal using the Hilbert envelope method, the controller 302 can determine one or more of an updated time shift TS between the first and second echoes 204, 206, an updated time of flight TOF.sub.1st of the first echo 204, an updated time of flight TOF.sub.2nd of the second echo 206, an updated position of the piston 104 (e.g., for example using Equation 4), and/or an updated velocity of the first and second echoes 204, 206 (e.g., for example using Equation 5).
[0111] In a third physical check performed by the controller 302 during implementation of the position tracking loop, the controller 302 determines whether a calculated velocity V.sub.i of the first and second echoes 204, 206 during a current iteration of the position tracking loop differs from a reference velocity, such as the theoretical sound velocity V.sub.theoretical or the velocity V.sub.calculated of the first and second echoes 204, 206 that was calculated during the initialization step, by more than a threshold amount.
[0112] For example, using Equation 5 described herein, the controller 302 can calculate the velocity V.sub.i of the first and second echoes 204, 206 during a current iteration i of the position tracking loop. For examples in which the pressure and temperature conditions within the first chamber 108 can be determined (e.g., via pressure sensor(s) 122 and temperature sensor(s) 124), the controller 302 can use Equation 6 to determine the theoretical sound velocity V.sub.theoretical based on measurements of the pressure and/or temperature conditions in the first chamber 108 that were taken during the current iteration i of the position tracking loop. In such examples, if the difference between the calculated velocity V.sub.i and the theoretical sound velocity V.sub.theoretical exceeds a threshold (e.g., 10, 20, 40, etc.), the controller 302 determines that the third physical check failed.
[0113] For examples, in which the pressure and temperature conditions within the first chamber 108 cannot be determined (e.g., there are no pressure sensor(s) 122 and temperature sensor(s) 124), the controller 302 can use the velocity V.sub.calculated of the first and second echoes 204, 206 that was calculated during the initialization step as a reference velocity. In such examples, if the difference between the calculated velocity V.sub.i and the velocity V.sub.calculated of the first and second echoes 204, 206 that was calculated during the initialization step exceeds a threshold (e.g., 10, 20, 40, etc.), the controller 302 determines that the third physical check failed.
[0114] In some examples, in response to the third physical check failing during an iteration i of the position tracking loop, the controller 302 uses the Hilbert envelope method to identify the first and/or second echoes 204, 206 in the updated ultrasonic signal. Then, using one or more of the techniques described herein and based on the first and second echoes 204, 206 identified within the updated ultrasonic signal using the Hilbert envelope method, the controller 302 can determine one or more of an updated time shift TS between the first and second echoes 204, 206, an updated time of flight TOF.sub.1st of the first echo 204, an updated time of flight TOF.sub.2nd of the second echo 206, an updated position of the piston 104 (e.g., for example using Equation 4), and/or an updated velocity of the first and second echoes 204, 206 (e.g., for example using Equation 5).
[0115] After the controller 302 performs one or more of the physical checks during an iteration i of the position tracking loop, the controller 302 stores the time of flight TOF.sub.1st(i) of the first echo 204 and/or the time of flight TOF.sub.2nd(i) of the second echo 206 that were determined during the current iteration i of the position tracking loop in the memory 306. Then, during the next iteration i+1 of the position tracking loop, the controller 302 can use the time of flight TOF.sub.1st(i) of the first echo 204 and/or the time of flight TOF.sub.2nd(i) of the second echo 206 stored in memory 306 to perform one or more physical checks.
[0116] Furthermore, after the controller 302 performs one or more of the physical checks during an iteration i of the position tracking loop, the controller 302 determines the current position of the piston 104 during the iteration i of the position tracking loop. For example, using Equation 4 described herein, the controller 302 can determine the current position D.sub.face(i) of the piston 104 (e.g., the distance D.sub.face from the base 112 of the cylinder 102 to the piston face 116) based on the time of flight TOF.sub.1st(i) of the first echo 204, the known distance D.sub.step between the piston face 116 and the step face 120, and the time shift TS.sub.(i) between the first and second echoes 204, 206. In some examples, the controller 302 stores the current position D.sub.face(i) of the piston 104 in the memory 306. In some examples, the controller 302 outputs the current position D.sub.face(i) of the piston 104 via the I/O system 308 and/or the user-interface 312. In some examples, the controller 302 transmits the current position D.sub.face(i) of the piston 104 to one or more external computing devices 310.
[0117] In some examples, after the controller 302 performs one or more of the physical checks during an iteration i of the position tracking loop, the controller 302 determines a variation in volume, or the volume drawdown, Vol.sub.i in the first chamber 108 between concurrent iterations in the position tracking loop. Using Equation 9 below, the controller 302 can determine the variation in volume Vol.sub.i in the first chamber 108 that occurs between iteration i1 of the position tracking loop and iteration i of the position tracking loop. In Equation 9, r is the radius of the first chamber 108, D.sub.face(i1) is the position of the piston 104 that was calculated during the previous iteration i1 of the position tracking loop, and D.sub.face(i) is the position of the piston 104 that was calculated during the current iteration I of the position tracking loop.
[0118] In some examples, the controller 302 stores the variation in volume Vol.sub.i in the first chamber 108 in the memory 306. In some examples, the controller 302 outputs the variation in volume Vol.sub.i in the first chamber 108 via the I/O system 308 and/or the user-interface 312. In some examples, the controller 302 transmits the variation in volume Vol.sub.i in the first chamber 108 to one or more external computing devices 310.
[0119]
[0120] As shown, a method 800 begins at step 802, at which a controller receives an updated ultrasonic signal from an ultrasonic transducer. For example, the controller 302 receives an updated ultrasonic signal from the ultrasonic transducer 126 disposed on the base 112 of the cylinder 102 included in hydraulic actuator 100. As described herein, the ultrasonic transducer 126 can generate an ultrasonic signal by emitting an ultrasonic pulse 200 in the first direction 202 towards the piston 104 in cylinder 102 and receives, or detects, a first echo 204 of the ultrasonic pulse 200 reflected off the piston face 116 and a second echo 206 of the ultrasonic pulse 200 reflected off the step face 120. In some examples, the updated ultrasonic signal further includes parasitic noise and/or one or more parasitic echoes 210 of the ultrasonic pulse 200. In some examples, the updated ultrasonic signal generated by the ultrasonic transducer 126 is a waveform that includes a first pulse that corresponds to the first echo 204, a second pulse that corresponds to the second echo 206, and one or more other pulses that correspond to parasitic noise and/or parasitic echoes 210.
[0121] At step 804, a controller scans, or processes, the updated ultrasonic signal to identify a first echo and/or a second echo within a pre-selected window of the updated ultrasonic signal. For example, the controller 302 scans the updated ultrasonic signal within the pre-selected window to identify the first echo 204 reflected off the piston face 116 and/or the second echo 206 reflected off the step face 120. The pre-selected window of the updated ultrasonic signal is a time window that was selected, or determined, during a previous iteration of the method 800. For example, at iteration i1, the first echo is correctly detected in a 64-point window centered around the beginning of the first echo. The index of the waveform corresponding to the center of this window is then stored, for example, by the controller 302. Then, at iteration i, the previously stored index is used as the center a 64-point window that constitutes the pre-selection window.
[0122] At step 806, a controller implements one or more cross-correlation functions to refine the identification of the first and/or second echoes in the updated ultrasonic signal. For example, the controller 302 can re-scan, or re-process, the updated ultrasonic signal by using the cross-correlation function in combination with a calibrated reference signal. In that regard, the controller 302 identifies the first echo 204 and/or the second echo 206 in the updated ultrasonic signal by using one or more cross-correlation functions and a calibrated reference signal described herein.
[0123] At step 808, a controller calculates, or determines, one or more characteristics of the first and second echoes identified in the updated ultrasonic signal at step 806. For example, at step 808, the controller 302 can determine, based on the updated ultrasonic signal and/or the cross-correlation envelope for the cross-correlation between the updated ultrasonic signal and the calibrated reference signal, one or more of the time of flight TOF.sub.1st(i) of the first echo 204 identified in the updated ultrasonic signal at step 806, the time of flight TOF.sub.2nd(i) of the second echo 206 identified in the updated ultrasonic signal at step 806, and/or a time shift TS.sub.(i) between the first and second echoes 204, 206 identified in the updated ultrasonic signal at step 806. In some examples, at step 808, the controller 302 can further calculate, or determine, the velocity V.sub.i at which the first echo 204 and/or the second echo 206 propagate through hydraulic fluid in the first chamber 108 based on (i) the known distance D.sub.step between the piston face 116 and the step face 120 and (ii) the time shift TS.sub.(i) between the first and second echoes 204, 206 identified in the updated ultrasonic signal at step 806. For example, the controller 302 can use Equation 5 described herein to calculate the velocity V.sub.i of the first and second echoes 204, 206 identified in the updated ultrasonic signal at step 806.
[0124] At step 810, a controller determines whether one or more characteristics of the first and second echoes determined at step 808 pass one or more physical checks. For example, the controller 302 can determine whether the time of flight TOF.sub.1st(i) of the first echo 204 determined at step 808 passes the first physical check described herein, can determine whether the time shift TS.sub.(i) between the first and second echoes 204, 206 determined at step 808 passes the second physical check described herein, and/or can determine whether the velocity V.sub.i of the first and second echoes 204, 206 determined at step 808 passes the third physical check described herein.
[0125] If each of the one or more physical checks performed at step 810 are passed, the method 800 proceeds to step 816. If, however, at least one of the one or more physical checks performed at step 810 are failed, the method proceeds to step 812. In some examples, depending on the refresh rate of the tracking loop (e.g., how quickly the method 800 is repeated), it may be acceptable for the controller 302 to replicate the outputs from iteration i1 when one or more physical checks are failed at step 810. In such examples, in iteration(s) i+1 and/or i+n, the controller 302 verifies whether the failed physical check in iteration i was a single event or a repeated failed check.
[0126] At step 812, a controller implements a Hilbert envelope method to identify a first echo in the updated ultrasonic signal and/or a second echo in the updated ultrasonic signal. For example, the controller 302 uses the Hilbert envelope to identify, in the updated ultrasonic signal, the first echo 204 reflected off the piston face 116 and/or the second echo 206 reflected off the step face 120.
[0127] At step 814, a controller calculates, or determines, one or more characteristics of the first and second echoes identified in the updated ultrasonic signal at step 812. For example, at step 814, the controller 302 can determine, based on the Hilbert envelope of updated ultrasonic signal, one or more of the time of flight TOF.sub.1st(i) of the first echo 204 identified in the updated ultrasonic signal at step 812, the time of flight TOF.sub.2nd(i) of the second echo 206 identified in the updated ultrasonic signal at step 812, and/or a time shift TS.sub.(i) between the first and second echoes 204, 206 identified in the updated ultrasonic signal at step 812. In some examples, at step 812, the controller 302 can further calculate, or determine, the velocity V.sub.i at which the first echo 204 and/or the second echo 206 propagate based on (i) the known distance D.sub.step between the piston face 116 and the step face 120 and (ii) the time shift TS.sub.(i) between the first and second echoes 204, 206 identified at step 812. For example, the controller 302 can use Equation 5 described herein to calculate the velocity V.sub.i of the first and second echoes 204, 206 identified in the updated ultrasonic signal at step 812.
[0128] At step 816, a controller stores the respective times of flights of the first and second echoes that were determined at step 808 or step 814. For example, the controller 302 stores the time of flight TOF.sub.1st(i) of the first echo 204 that was determined at step 808 or step 814 in the memory 306 and/or stores the time of flight TOF.sub.2nd(i) of the second echo 206 that was determined at step 808 or step 814. The time of flight TOF.sub.1st(i) of the first echo 204 and/or the time of flight TOF.sub.2nd(i) of the second echo 206 stored in memory 306 can be used to perform one or more physical checks at step 810 during the next iteration of method 800.
[0129] At step 818, a controller determines a current position of the piston and/or a volume drawdown of a chamber in the cylinder through which the piston moves. For example, the controller 302 can calculate, using Equation 4 described herein, the current position D.sub.face(i) of the piston 104 based on the time of flight TOF.sub.1st(i) of the first echo 204, the known distance D.sub.step between the piston face 116 and the step face 120, and the time shift TS (i) between the first echo 204 and the second echo 206. In that regard, as described herein, the controller 302 can determine the current position D.sub.face(i) of the piston 104 independent of the pressure and/or temperature conditions of the first chamber 108 in the cylinder 102 of hydraulic actuator 100. As another example, the controller 302 can use Equation 9 described herein to calculate a variation in volume, or volume drawdown, Vol.sub.i in the first chamber 108 based on the radius r of the first chamber 108, a position D.sub.face(i1) of the piston 104 that was calculated during the previous iteration of the method 800, and the position D.sub.face(i) of the piston 104 that was calculated during the current iteration of the method 800.
[0130] After step 818, the method 800 returns to step 802 at which method 800 is repeated.
[0131] As described above with respect to
[0132]
[0133] When the piston 900 is implemented as piston 104 in the hydraulic actuator 100, the piston face 902 and the step face 906 are oriented to face in the direction of the base 112 of the cylinder 102. In that regard, an ultrasonic pulse emitted by the ultrasonic transducer 126 propagates, or travels, through hydraulic fluid in the first chamber 108 of the cylinder 102 towards the piston 900 until the ultrasonic pulse reflects off the piston face 902 and/or the step face 906 back towards the ultrasonic transducer 126. For example, the ultrasonic pulse reflects off the piston face 902 as a first echo that propagates back towards the ultrasonic transducer 126 and reflects off the step face 906 as a second echo that propagates back towards the ultrasonic transducer 126. When compared to ultrasonic echoes that are reflected off flat surfaces, the ultrasonic echoes reflected off the curved piston face 902 and the curved step face 906 have more reflective energy, thereby making the echoes easier to detect by the ultrasonic transducer 126.
[0134]
[0135] When the piston 1000 is implemented as piston 104 in the hydraulic actuator 100, the piston face 1002 and the step face 1006 are oriented to face in the direction of the base 112 of the cylinder 102. In that regard, an ultrasonic pulse emitted by the ultrasonic transducer 126 propagates, or travels, through hydraulic fluid in the first chamber 108 of the cylinder 102 towards the piston 1000 until the ultrasonic pulse reflects off the piston face 1002 and/or the step face 1006 back towards the ultrasonic transducer 126. For example, the ultrasonic pulse reflects off the piston face 1002 as a first echo that propagates back towards the ultrasonic transducer 126 and reflects off the step face 1006 as a second echo that propagates back towards the ultrasonic transducer 126. When compared to ultrasonic echoes that are reflected off flat surfaces, the ultrasonic echoes reflected off the spherical piston face 1002 and the spherical step face 1006 have more reflective energy, thereby making the echoes easier to detect by the ultrasonic transducer 126.
[0136] Although certain aspects have been described with reference to certain examples, variations and modifications exist within the spirit and scope of one or more independent aspects. Various features and aspects are set forth in the following claims.
[0137] Any and all combinations of any of the claim elements recited in any of the claims and/or any elements described in this application, in any fashion, fall within the contemplated scope of the present disclosure and protection. The descriptions of the various embodiments have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments.
[0138] 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 storage 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 can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
[0139] Aspects of the present disclosure are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the disclosure. 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, can be implemented by computer program instructions. 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.
[0140] The instructions, when executed via the processor of the computer or other programmable data processing apparatus, enable the implementation of the functions/acts specified in the flowchart and/or block diagram block or blocks. Such processors may be, without limitation, general purpose processors, special-purpose processors, application-specific processors, or field-programmable gate arrays.
[0141] 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 disclosure. 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, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
[0142] While the preceding is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.