Method and apparatus for tuning an apparatus
Patent Information
- Application Number
- JP2023568493
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-05-21
- Filing Date
- 2022-05-20
- Publication Date
- 2025-02-27
- Estimated Expiration
- 2042-05-20
Smart Images

Figure 0007636700000001 
Figure 0007636700000002 
Figure 0007636700000003
Abstract
Description
[Technical field]
[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of U.S. Provisional Application No. 63 / 191,882, filed May 21, 2021, which is incorporated by reference herein in its entirety.
[0002] TECHNICAL FIELD This disclosure relates generally to tuning machines, such as tuning motors used in robotic systems. [Background technology]
[0003] A device (such as a motor) is used to perform and / or automate a task. The device may include multiple electronics to enable a mobile robot to perform a task. The device may be tuned to enable a specific operation of the device. As an example, the device may be connected to a computing device for tuning. After the device is tuned, it can perform a specific operation. Summary of the Invention
[0004] One aspect of the present disclosure is a system for live tuning of a motor. The system includes a first system and a second system. The first system includes a tuning tool and an associated application configured to run thereon. The associated application may include a tuning application, a middleware application that collects data related to the tuning, and a networking program that streams the data to the second system. The second system may include a network program for receiving the data streamed from the first system through the network program. The second system may include a user interface (UI) application for displaying the received data, for example in numerical or graphical form, and for allowing a user to start or stop the tuning process and adjust settings or parameters related to the tuning. Additionally, the second system may include a program for causing a device of the second system to run the networking program, for example, if the networking program is designed for an operating system (OS) different from the OS running on the device of the second system.
[0005] In another aspect of the present disclosure, a method for live tuning a motor is disclosed. The method includes receiving data indicative of a request to initiate a tuning process for the motor and creating a data connection between a first system and a second system. The first system is associated with a tuning tool and the second system is associated with a UI for displaying and receiving data. The method may further include receiving, in the first system and from the second system, data related to one or more settings or parameters associated with the tuning process, performing tuning moves based on the one or more settings or parameters, and transmitting data related to results of the tuning moves from the first system to the second system.
[0006] In another aspect of the present disclosure, an apparatus configured to perform a method for live tuning a motor is disclosed, the apparatus comprising a processor and a memory configured to store one or more instructions, the one or more instructions being configured, when executed by the processor, to perform the method for live tuning a motor.
[0007] One aspect of the disclosure is a system for tuning a device. The system includes a user interface, at least one processor, and a memory storing computer-executable instructions executed by the at least one processor. The at least one processor obtains one or more first parameters. Further, the at least one processor identifies a first test. The at least one processor initiates a tuning process for the device based on the first test and the one or more first parameters. In response to the initiation of the tuning process, the at least one processor provides the first test and the one or more first parameters to the device, obtains tuning results from the device based on providing the first test and the one or more first parameters to the device, causes at least a portion of the tuning results to be displayed via a display of the user interface, and automatically provides a second test and / or one or more second parameters to the device after providing the first test and the one or more first parameters to the device.
[0008] In another aspect of the present disclosure, the at least one processor may obtain additional tuning results based on the second test and / or providing the one or more second parameters to the device, and further, the at least one processor may cause at least a portion of the additional tuning results to be displayed via a display of the user interface.
[0009] In another aspect of the present disclosure, the one or more second parameters include one or more first parameters.
[0010] In another aspect of the present disclosure, the one or more second parameters and the one or more first parameters are different parameters.
[0011] In another aspect of the present disclosure, the first test and the second test are different tests.
[0012] In another aspect of the present disclosure, the second test and the first test are the same test.
[0013] In another aspect of the present disclosure, the first test includes at least one of a step test, a ramp test, a parabolic velocity test, a trapezoidal velocity test, an S-curve velocity test, a sine wave test, a sine wave sweep test, and a user-defined test.
[0014] In another aspect of the present disclosure, the first test includes movement size, movement speed, and movement profile.
[0015] In another aspect of the present disclosure, the one or more first parameters include at least one of a proportional gain, a derivative gain, a velocity feedforward gain, an integral gain, an acceleration feedforward gain, and a friction feedforward gain.
[0016] In another aspect of the present disclosure, the one or more first parameters include one or more hardware parameters, which may be based on at least one of one or more hardware components of the device, a connection between the device and a system, or a connection between the device and the components.
[0017] In another aspect of the present disclosure, the at least one processor may automatically provide the second test and / or the one or more second parameters to the device without restarting the tuning process.
[0018] In another aspect of the present disclosure, the at least one processor may obtain the one or more first parameters via a user interface.
[0019] In another aspect of the present disclosure, the at least one processor may receive user input via a user interface, and may initiate a tuning process based on the user input.
[0020] In another aspect of the present disclosure, the at least one processor may automatically provide the second test and / or the one or more second parameters without receiving user input via a user interface.
[0021] In another aspect of the present disclosure, the at least one processor may obtain the tuning results via a data stream from the device.
[0022] In another aspect of the present disclosure, the at least one processor may determine that user input defining the second test and / or the one or more second parameters was not obtained prior to automatically providing the second test and / or the one or more second parameters to the device. Further, the at least one processor may re-provide the first test and the one or more first parameters to the device based on determining that user input was not obtained prior to automatically providing the second test and / or the one or more second parameters to the device.
[0023] In another aspect of the present disclosure, the at least one processor may determine that a user input has been obtained prior to automatically providing the second test and / or the one or more second parameters to the device. Further, the user input may identify at least one of the second test or the one or more second parameters. The at least one processor may automatically provide the second test and / or the one or more second parameters to the device based on determining that a user input has been obtained prior to automatically providing the second test and / or the one or more second parameters to the device. The first test and the second test may be different tests and may include different parameters from the one or more first parameters and the one or more second parameters.
[0024] In another aspect of the present disclosure, the at least one processor may determine that no user input is obtained prior to automatically providing the second test and / or the one or more second parameters to the device. The at least one processor may provide the first test and the one or more first parameters to the device based on determining that no user input is obtained prior to automatically providing the second test and / or the one or more second parameters to the device. The one or more second parameters may include one or more first parameters, and the second test and the first test may be the same test. The at least one processor may obtain additional tuning results based on providing the second test and / or the one or more second parameters to the device. Further, the at least one processor may cause at least a portion of the additional tuning results to be displayed via a display of the user interface. The at least one processor may identify one or more third parameters and a third test. Further, the at least one processor may provide the third test and the one or more third parameters to the device based on identifying the one or more third parameters and the third test. The first test and the third test may be different tests and may include different parameters than the one or more first parameters and the one or more third parameters.
[0025] In another aspect of the present disclosure, the one or more first parameters and the first test may be provided to the device during a first tuning interval of the tuning schedule, and the second test and / or the one or more second parameters may be provided during a second tuning interval of the tuning schedule. Further, the at least one processor may obtain one or more third parameters after the first tuning interval and before the second tuning interval, and store the one or more third parameters. The at least one processor may obtain one or more second parameters after the first tuning interval and before the second tuning interval, after obtaining the one or more third parameters, and replace the one or more third parameters with the one or more second parameters. Further, the at least one processor may automatically provide the second test and / or the one or more second parameters to the device based on replacing the one or more third parameters with the one or more second parameters. Further, the one or more third parameters may not be utilized to tune the device.
[0026] In another aspect of the present disclosure, the device is a servo motor.
[0027] In another aspect of the present disclosure, the at least one processor may retrieve one or more second parameters from the memory.
[0028] In another aspect of the present disclosure, the at least one processor may store one or more first parameters in a memory. Further, the at least one processor may obtain one or more second parameters. The at least one processor may replace the one or more first parameters with the one or more second parameters in the memory based on obtaining the one or more second parameters.
[0029] In another aspect of the present disclosure, the at least one processor may cause at least a portion of the one or more first parameters, data related to the first test (eg, type of test), and / or tuning results to be displayed.
[0030] In another aspect of the present disclosure, the at least one processor may be responsive to initiation of a tuning process to periodically provide the corresponding test and one or more corresponding parameters to the device.
[0031] In another aspect of the present disclosure, the at least one processor may determine that the tuning process has been stopped, and further, the at least one processor may cease periodically providing the corresponding test and one or more corresponding parameters to the device based on determining that the tuning process has been stopped.
[0032] In another aspect of the present disclosure, the at least one processor may obtain a user input, and further, the at least one processor may determine that the tuning process is stopped based on the user input.
[0033] In another aspect of the present disclosure, the at least one processor may determine a tuning schedule. Further, the at least one processor may provide a first test and one or more first parameters to the device during a first time period based on the tuning schedule. The at least one processor may further automatically provide a second test and / or one or more second parameters to the device during a second time period based on the tuning schedule.
[0034] In another aspect of the present disclosure, the apparatus may generate a tuning result based on one or more first parameters and a first test.
[0035] In another aspect of the present disclosure, a non-transitory computer readable storage medium is disclosed. The non-transitory computer readable medium stores instructions that, when executed, cause at least one computing device to obtain one or more parameters. Further, the computing device identifies a test. The computing device initiates a tuning process for the device based on the test and the one or more parameters. Periodically, in response to initiating the tuning process, the computing device provides the test and the one or more parameters to the device, obtains tuning results from the device based on providing the test and the one or more parameters to the device, and causes at least a portion of the tuning results to be displayed via a display of a user interface.
[0036] In another aspect of the present disclosure, a method is disclosed that includes obtaining one or more parameters. The method further includes identifying a test. The method further includes initiating a tuning process for the device based on the test and the one or more parameters. In response to initiating the tuning process, the method includes periodically providing the test and the one or more parameters to the device, obtaining from the device tuning results based on providing the test and the one or more parameters to the device, and displaying at least a portion of the tuning results via a display of a user interface.
[0037] In another aspect of the present disclosure, a method of tuning a device is disclosed that includes obtaining one or more first parameters. The method includes performing a first test on the device using the one or more first parameters. The method further includes outputting a test result from the first test. The method includes obtaining one or more second parameters during performance of the first test, the second parameters being different from the one or more first parameters. The method includes storing the one or more second parameters during completion of the first test using the one or more first parameters. The method further includes automatically performing a second test on the device using the one or more second parameters after completion of the first test. The method includes outputting a result of the second test.
[0038] In another aspect of the present disclosure, the method may further include obtaining one or more second parameters via a user interface.
[0039] In another aspect of the present disclosure, the method may further include performing a plurality of tests on the device using the one or more first parameters prior to obtaining the one or more second parameters.
[0040] In another aspect of the disclosure, the method may further include obtaining one or more intermediate parameters during performance of the first test and prior to obtaining the one or more second parameters, wherein the one or more second parameters may replace the one or more intermediate parameters before the intermediate parameters are used in the test.
[0041] In another aspect of the present disclosure, the method may further include transferring test result data of the first test while the first test is being performed.
[0042] In another aspect of the disclosure, the method may further include transferring test result data of the first test using a data stream between the device and the tuning system.
[0043] In another aspect of the present disclosure, the method may further include transferring the test result data of the first test without saving the test result data to a file.
[0044] In another aspect of the disclosure, the method may further include transferring the test results from a first volatile memory on the device to a second volatile memory on the tuning system.
[0045] In another aspect of the present disclosure, a system for tuning an apparatus is disclosed. The system may include at least one processor and a memory storing computer-executable instructions. Execution of the computer-executable instructions by the at least one processor causes the at least one processor to perform a method as described above.
[0046] In another aspect of the present disclosure, a non-transitory computer-readable storage medium is disclosed, which can store instructions that, when executed, can cause at least one computing device to perform a method as described above.
[0047] The foregoing summary is illustrative and not intended to be limiting. Other aspects, features, and advantages of the systems, devices, and methods described herein and / or other subject matter will become apparent in the teachings set forth below. The summary is provided to introduce some of the concepts of the disclosure. The summary is not intended to identify key features or essential features of the subject matter described herein. [Brief description of the drawings]
[0048] Various embodiments are depicted in the accompanying drawings for purposes of illustration, and should in no way be construed as limiting the scope of the embodiments. Various features of different disclosed embodiments may be combined to form additional embodiments that are part of this disclosure.
[0049] [Figure 1] FIG. 1 illustrates an example environment including a computing device for tuning a device, according to an aspect of the present disclosure. [Diagram 2] FIG. 1 illustrates a workflow associated with live tuning of a motor according to some embodiments of the present disclosure. [Diagram 3] FIG. 1 illustrates a user interface (UI) associated with live tuning of a motor according to some embodiments of the present disclosure. [Figure 4] FIG. 1 illustrates a user interface (UI) associated with live tuning of a motor according to some embodiments of the present disclosure. [Diagram 5] 1 is a flow chart of an example routine for tuning a device according to some embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0050] Generally described, the present disclosure relates to a tuning method and apparatus for tuning a device (e.g., a motor, a machine, a computing device, an engine, a chip, or any other device) using a tuning system. For example, the tuning system may tune a stator motor of a mobile robot, an engine of an automobile, a chip of an electronic control unit, etc. By tuning the device, the tuning system may adjust the performance of the device so that the device meets or exceeds a performance threshold. The tuning system may adjust the performance of the device by tuning tuning parameters or settings (e.g., gains) of the device.
[0051] The tuning methods and apparatus described herein enable a tuning system to initiate a tuning process for continuously (e.g., automatically and / or periodically) tuning a device based on tests (e.g., tuning operations or iterations) and / or tuning parameters (e.g., parameters for performing tuning operations or iterations, etc.), while enabling the tuning system to provide updated or modified tests and / or tuning parameters on the fly. The tuning system can initiate the tuning process in response to user input received via a user computing device. As described herein, the user computing device may periodically send tests (e.g., data (instructions or commands) specifying tuning operations or iterations for execution by the device) and / or tuning parameters (e.g., parameters specifying how the device performs tuning operations or iterations) to the motor to tune the motor without restarting the tuning process. Additionally, the user computing device may periodically send tests and / or tuning parameters without stopping the tuning process and write the data to a file and store it in storage for further processing or initiation of a new tuning process. By automatically and periodically sending tests and / or tuning parameters to the device without restarting the tuning process, "live" or "interactive" tuning of the device may reduce the tuning time of the device. Thus, by performing live tuning, the efficiency and speed of tuning of the device may be improved. As used herein, tuning of a device may generally include the process of adjusting various types of parameters (e.g., gains) associated with the device in a control loop until a particular performance level or output is achieved by the device (e.g., until the performance level of the device meets or exceeds a performance threshold).
[0052] As an example, the tuning system may perform a tuning process for live tuning of a motor (e.g., a stator motor), for example, the motor may be a motor utilized in a robotic system, including, but not limited to, systems with mobile robots, horizontal articulated robots ("SCARA"), and the like.
[0053] In many conventional cases, implementing a general tuning process to tune a device may not produce satisfactory results for a particular situation or for a particular user. Such a general tuning process (e.g., an iterative tuning process) may include starting and stopping the tuning process for each iteration or test. For example, the general tuning process may include starting the tuning process, providing tests and / or parameters to the motor, obtaining tuning results, displaying the tuning results, and starting an updated tuning process with updated tests and / or parameters based on the tuning results of the first iteration or test. Each modification of the tests and / or parameters is performed based on a restart of the tuning process. For example, the user computing device provides the updated tests and / or parameters and requests a restart of the tuning process. In some embodiments, the parameters may be predetermined to avoid iteratively restarting the tuning process with updated tests and / or parameters. For example, if a device includes a motor, an encoder, and a drive, which are provided as a package from a single vendor, the parameters may be predetermined based on known settings of the encoder and the drive. This may prove to be unsatisfactory if the predetermined parameters cause the device's performance to fall below a performance threshold. For example, a device may have predefined parameters that may cause performance to fall below a performance threshold or below performance caused by a different set of parameters.
[0054] The tuning process of a device (e.g., an electric machine motor) can be time-consuming and laborious and can involve a "trial and error" approach to achieve a performance level of the device that exceeds or meets a particular performance threshold. The trial and error approach can involve performing multiple iterations of the tuning process, with each iteration including updated tests or updated parameter sets to determine parameters that correspond to performance that exceeds or meets a particular performance threshold. Each iteration of the tuning process can include initiating the tuning process and providing an updated parameter set and / or updated tests (e.g., based on user input received via an input / output device). For example, a user can interact with an input / output device (e.g., a touch screen, a button, etc.) of the tuning system to initiate the tuning process. The user can repeat the iterative process by restarting the tuning process until the performance of the device meets or exceeds the performance threshold (e.g., a predetermined performance criterion). Such an iterative tuning process can result in wasted resources and wasted time.
[0055] One example of a conventional trial and error approach is a "servo tuning" process for tuning a servo motor. A servo motor, as used herein, generally refers to an electromechanical device that can generate torque and speed based on current and voltage supplied to the servo motor. The servo tuning process may include adjusting various parameters of a motion controller associated with a servo motor system in order to tune the servo motor. The servo motor tuning process may be time consuming as multiple iterations of the tuning process may be performed to identify a set of parameters that causes the performance of the servo motor to exceed or meet a performance threshold. Each iteration of the tuning process may include interventions to change settings or parameters, stop the tuning process, write data associated with each iteration to a file, save the data, and the like. For example, each iteration of the tuning process may include obtaining user input (e.g., via an input / output device) to initiate tuning, providing results of the iteration of the tuning process after tuning data has been collected and processed (e.g., the results of the tuning iteration are displayed via a display of a computing device), obtaining updated parameters and obtaining additional user input to resume the tuning process, and providing results of the new iteration of the tuning process. Traditional trial and error approaches include writing relevant data (e.g., test result data) to a file, uploading the file to a server, allowing the file to be retrieved and processed to generate the relevant data, and / or rendered / displayed via a graphical user interface (GUI).
[0056] As devices (such as motors, engines, computing devices, etc.) become more prevalent, there is an increasing demand for faster and more efficient tuning. The present disclosure provides a tuning system for tuning devices that has significant advantages over the prior art. The present disclosure provides a system and method that allows for reduced time and user interaction to identify a set of parameters for a device such that the device's performance meets or exceeds a performance threshold, without significantly impacting the device's speed or power consumption during tuning, as compared to the prior art. These advantages are provided by the embodiments discussed herein, and in particular by the implementation of a live or interactive tuning process that allows the tuning system to continuously tune the device.
[0057] As described herein, a live tuning process of a device may include a continuous tuning process (e.g., a periodic tuning process). During the tuning process, after initialization of the tuning process, providing initial parameters and / or initial tests, at periodic or aperiodic intervals, the tuning system may automatically (e.g., after initialization of the tuning process, without reinitializing the tuning process before stopping the tuning process) periodically (e.g., at regular intervals based on a tuning schedule) provide tests and / or parameters to the device for tuning the device. For example, at each interval, the tuning system may periodically and automatically provide tests and parameters to the device and obtain a tuning result based on providing the tests and parameters to the device. The tests and parameters provided at each interval may include updated tests and / or updated parameters. In some embodiments, the tuning system may provide the same tests and / or parameters to the device (e.g., periodically and automatically provide the same tests and / or parameters at each interval of the tuning schedule following the start of the tuning process) until updated tests and / or parameters are obtained. Furthermore, a continuous tuning process may be continuously performed based on the same tests and / or parameters until updated tests and / or parameters are provided.
[0058] The tuning system may initiate the tuning process based on an input. For example, the tuning system may initiate the tuning process based on a user input received via a user computing device. The user computing device may initiate the live tuning process and provide a test (e.g., identifying a tuning operation or iteration that the device will perform) and / or a parameter set (e.g., a set of parameters for performing a tuning operation or iteration). The user computing device may provide the test by providing an instruction (e.g., selection) of a particular test or load (e.g., from a user interface). In some cases, the user computing device may obtain a user input for initiating the live tuning process via an input / output device. For example, the user computing device may obtain a user input for initiating the live tuning process based on an input via a display of the computing device, an input via a button on a user interface (UI), an input via a keyboard, an input via a touch screen, an input via one or more buttons or a keypad, or any other suitable user input element, etc.
[0059] The tuning system may include one or more tuning tools for tuning the device. Each of the one or more tuning tools may implement a tuning application for performing a live tuning process. The tuning application (e.g., "appware") may run continuously on the one or more tuning tools. As an example, the tuning tools may utilize an integrated development environment, such as the Power Programmable Multi-Axis Controller ("PMAC") Integrated Development Environment ("IDE") developed by Omron Automation. The tuning system may perform the tuning process and obtain tuning results via the one or more tuning tools and the tuning application.
[0060] The tuning system may be in data communication with a computing device to obtain parameters and / or tests and to provide tuning results. The computing device may receive data (e.g., tuning results) collected by the tuning tool. Additionally, the computing device may display (e.g., to a user) the tuning results (e.g., as a graph, a set of statistical data, etc.) via a UI on the computing device.
[0061] After initiation of the tuning process and during the tuning process (e.g., at any time while the tuning process is in progress), the user computing device may modify (e.g., on the fly) tests and / or parameters associated with the tuning process. For example, the user computing device may provide updated tests (e.g., the user computing device may provide updated types of tests or load selections) and / or updated parameters for implementation in the tuning process. The user computing device may provide the updated tests and / or updated parameters to the tuning system.
[0062] The tuning system may retrieve updated tests and / or updated parameters in memory (e.g., a cache, data store, database, data queue, etc.) from the user computing device. At each interval of the tuning process, the tuning system may retrieve tests and / or updated parameters from memory (e.g., which may have been updated since during a previous test) and provide the updated tests and / or updated parameters to the device for tuning. In some embodiments, the user computing device does not provide updated tests and / or updated parameters, and the memory may contain the same tests and / or the same parameters for multiple intervals. Thus, the tuning system may retrieve the same tests and / or the same parameters from memory and provide the same tests and / or the same parameters to the device for tuning at each of the multiple intervals.
[0063] In some embodiments, a user computing device may provide a set of tests and / or parameters to the tuning system (e.g., between intervals of a tuning process). The tuning system may replace the tests and / or parameters in memory with updated tests and / or parameters such that the tuning system provides the device with the most recently received tests and / or parameters at each interval. As an example, the tuning system may receive an updated value for a parameter while a test is being performed (e.g., using a previously received parameter). The tuning system may store the updated parameter value and the current test may continue using the previously received parameters. Once the test is completed, the tuning system may perform a new test using the updated value for the parameter. In some cases, a second updated value may be received by the tuning system while a test is being performed using the previously received parameters. The second updated value may replace the previous updated value for the parameter. The updated value may be overwritten with the second updated value for the parameter. The next test may then use the second updated value for the parameter. In this example, the first updated value is not used for the test because by the time the next test is ready to begin, the value has already been replaced with the second updated value. The tuning device may successively begin the next test using the currently presented (e.g., most recently provided to the tuning device) parameters. In other embodiments, the tuning system may store multiple tests and / or multiple parameter sets in memory. For example, the tuning system may delete from memory each test and each set of parameters provided to the device for tuning.
[0064] Following each interval, the tuning system may receive tuning results from the device based on the tests and / or parameters provided from the tuning system at each interval. The tuning system may receive the tuning results and provide the tuning results to a user computing device for display. The user computing device may thereby receive updated tuning results, and the displayed tuning results may be modified accordingly almost immediately on the UI of the user computing device. In response to the user tuning results, the user computing device may provide updated tests and / or parameters. For example, the user computing device may periodically provide updated tests and / or parameters such that the performance level of the device meets or exceeds a performance threshold.
[0065] As an example, the tuning system may perform a continuous tuning process with any type of motor-encoder-drive combination. For example, the tuning system may perform a continuous tuning process for any motor-encoder-drive combination associated with a particular accuracy threshold and motion control threshold flexibility. Such a tuning system, which does not depend on a particular type of device (e.g., a particular motor-encoder-drive combination), makes the conventional tuning process complex, time-consuming, and inefficient. For example, it may take time to determine a set of parameters that will cause the device's performance to meet a performance threshold, since the device's settings may be unknown. However, the continuous tuning process may improve the efficiency of the tuning process because it allows for periodic and automatic tuning of the device, such that parameters and tests are provided to the device at each interval of the tuning process. It should be noted that a motor encoder generally refers to a rotary encoder attached to an electric motor that provides a closed-loop feedback signal by tracking the speed and / or position of the motor shaft, and a motor drive or drive generally refers to equipment used to control the speed of a robot or machine.
[0066] System Overview FIG. 1 illustrates a schematic diagram of a system 100 including a tuning system 102 according to some embodiments herein. In the illustrated embodiment, the system 100 includes a tuning system 102, a device 104, and a user computing device 106. Any one or any combination of the components illustrated and described in FIG. 1 may each be implemented using one or more computing devices, such as one or more servers, processors, computing devices, virtual machines, etc., and may communicate via a wired or wireless connection (e.g., via a network not shown in FIG. 1) for tuning the device 104. For example, the tuning system 102 and the user computing device 106 may communicate via a local area network or a wide area network such as the Internet.
[0067] The tuning system 102 and / or user computing device 106 may comprise one or more computing systems or computing devices, such as any network-equipped computing device, such as a desktop computer, a laptop, a smartphone, a tablet, or any non-network-equipped computing device. In some embodiments, the tuning system 102 and the user computing device 106 may be incorporated into the same computing system (e.g., a laptop, a smartphone, etc.).
[0068] User computing device 106 may comprise one or more computing devices associated with a user. A user may utilize user computing device 106 to provide tests, parameters, and / or requests to initiate a tuning process to tuning system 102. User computing device 106 may comprise networking utilities 112 and input / output devices 114.
[0069] The tuning system 102 may comprise one or more computing devices for tuning the device 104. The tuning system 102 may comprise tuning components 108, memory 109, and networking utilities 110. The tuning system may utilize the tuning components 108 to tune the device 104. The tuning system 102 may communicate with the device 104 via a wired or wireless connection.
[0070] The device 104 may comprise one or more devices (e.g., a motor, a machine, equipment, a computing device, an engine, a chip, or any other device). The device 104 may comprise one or more adjustable components. In some embodiments, the device 104 may be an adjustable component. In the example of FIG. 1, the device 104 comprises a controller 116. The controller 116 may be a mechanical, electromechanical, or electronic device that performs an operation based on received input (e.g., parameters and / or tests).
[0071] The tuning system 102 and / or the user computing device 106 may include a network utility for data communication. For example, as shown in FIG. 1, the tuning system 102 includes a networking utility 110 and the user computing device 106 includes a networking utility 112. The networking utility 110 and the networking utility 112 may enable data communication between the tuning system 102 and the user computing device 106. Furthermore, the networking utility 110 and the networking utility 112 may enable data communication between the tuning system 102 and the user computing device 106 over a network (e.g., the Internet). The network may include any suitable network including an intranet, the Internet, a cellular network, a local area network, other networks, or combinations thereof. Protocols and components for communicating over the Internet or other types of communication networks as mentioned above are known to those skilled in the art of computer communications and need not be described in further detail herein.
[0072] The tuning system 102 and the device 104 may communicate data over a streaming data connection (e.g., over a data stream). For example, the tuning system 102 may communicate tests and / or test parameters to the device 104 over a data stream (e.g., at each interval of the tuning process) via the tuning component 108, and in response to the tests and / or test parameters, the device 104 may communicate tuning results to the tuning system 102 over the data stream. The tuning system 102 and the user computing device 106 may communicate data over a streaming data connection (e.g., over a data stream). The result data may be sent from a random access memory (RAM) (or other volatile memory) of the device 104 to the RAM (or other volatile memory) of the tuning system 102. In some embodiments, the result data may be sent from the RAM (or other volatile memory) of the running system 102 to the RAM (or other volatile memory) of the user computing device 106. The result data may be transferred without compiling and saving the data to a file in non-volatile memory or long-term storage. This approach allows test result data to be transferred and displayed more quickly, allowing the user to make the next adjustment to the tuning values sooner, accelerating the tuning process. Test results can sometimes contain a significant amount of data, and this data transfer approach can significantly speed up the process of iterative tuning. Parameters and / or test information may be transmitted from the RAM (or other volatile memory) of the user computing device 106 to the RAM (or other volatile memory) of the tuning system 102 and / or from the RAM (or other volatile memory) of the tuning system 102 to the RAM (or other volatile memory) of the device 104. In some embodiments, the tuning system 102 and the user computing system 106 may be integrated into the same computer or program (e.g., such that one data transfer link is used).In some embodiments, the tuning system may be built into device 104 (eg, such that a single data transfer link is used).
[0073] The user computing device 106 includes an input / output device 114 for receiving input specifying the test and / or one or more parameters and / or for providing output specifying the tuning results (e.g., output obtained via the networking utility 112). For example, the input / output device 114 may include a display, a touch screen, a keypad, a speaker, a microphone, or any other device for receiving input and / or providing output. Additionally, the input / output device 114 may be an application programming interface ("API"). The user computing device 106 may communicate with the input / output device 114 to receive the test and / or one or more parameters. Additionally, the user computing device 106 may communicate with the input / output device 114 to enable (e.g., cause to be displayed) display of the tuning results. In some embodiments, the user computing device may communicate the tuning results separately or may provide a uniform resource identifier ("URI") (e.g., a uniform resource locator ("URL")) that allows the system to access the tuning results.
[0074] In some embodiments, the system allows the user to incrementally adjust a digit of the value of a selected parameter. For example, the user I / O device 114 may have a first input element (e.g., an up arrow) to increase the digit value by one. The user I / O device 114 may have a second input element (e.g., a down arrow) to decrease the digit value by one. If digit 8 is selected in 64.852, the up arrow can change it to 64.952, and the down arrow can change it to 64.752. When the digit changes from 9 to 0, the larger digit of the adjacent digit can be increased. When the digit changes from 0 to 9, the larger digit of the adjacent digit can be decreased. Continuing with the above example, pressing the up arrow once changes 64.852 to 64.952, and pressing the up arrow twice changes it to 65.052. Then pressing the down arrow changes the value from 65.052 to 64.952. Tapping the button once changes the value by one. Pressing and holding the button repeatedly changes the value until the button is released. The user input / output device 114 may have a third input element (e.g., a left arrow) for changing the selected digit to a higher digit, and a fourth input element (e.g., a right arrow) for changing the selected digit to a lower digit. Using the value 64.852 in the above example, pressing the left arrow changes the selected digit from the tens digit (8) to the ones digit (4). Pressing the right arrow changes the selected digit from the tens digit (8) to the hundreds digit (5). This configuration allows a user to quickly change test parameter values using a relatively small number of user input elements.
[0075] A user may provide an input command to the input / output device 114 of the user computing device 106 to initiate tuning. In response, the tuning system 102 may receive a request to initiate the tuning process from the user computing device 106 via the networking utility 112 and the networking utility 110. The tuning process may include multiple intervals, and in each interval, the tuning system may automatically (e.g., without reinitialization of the tuning process by the user computing device) provide the tests and parameters (e.g., perform a test using the following parameters) to the device 104. The tuning system 102 may repeatedly run tests without additional commands to initiate tuning. The tuning system 102 may repeatedly run the same test with the same parameters until additional user input is provided. The tuning system 102 may repeatedly run the same type of test with different parameters if user input is provided to change the parameters. In some embodiments, the tuning system 102 may define a time interval for the tuning process based on user input obtained from the user computing device 106. In some embodiments, the duration of each interval of the tuning process may be based on the amount of time it takes to run the test on the device 104. The tuning system 102 may continue to provide tests and parameters to the device 104 at each interval until a request is received from the user computing device 106 to stop the tuning process.
[0076] Upon receiving a request to start the tuning process, tuning component 108 of tuning system 102 may initiate the tuning process for device 104. For example, tuning component 108 may provide initial tests and initial parameters to device 104. Upon initiation of the tuning process, tuning component 108 may repeatedly (e.g., via a data stream) provide the tests and parameters from memory 109 to device 104 (e.g., periodically and continuously).
[0077] Tuning system 102 may receive tests and / or one or more parameters (e.g., initial tests and parameters and / or updated tests and parameters) from user computing device 106 via networking utility 112 and networking utility 110. Based on receiving the tests and / or one or more parameters, tuning system 102 may store the tests and / or one or more parameters in memory 109. During each interval of the tuning process, tuning system 102 may retrieve the tests and / or parameters from memory 109 and provide the tests and / or parameters to device 104. In some embodiments, tuning system 102 may run tests on device 104. Memory 109 may have active parameters (e.g., stored in memory), which may be used for a currently running active test. Memory 109 may have one or more reserved parameters (e.g., stored in memory), which may be used for a subsequent test iteration. When a current test is completed, the reserved parameters become the active parameters and a new test may be started. In some circumstances, the reserved parameters may be the same as the active parameters, for example, if the user has not provided input to change the parameters. If the user provides input (e.g., via the user computing system 106) to change one or more parameters, the current test may continue to use the unchanged parameters (e.g., the active parameters), and the one or more changed parameters may be stored in memory as reserved parameters. If the user provides additional changes to one or more parameters, the new parameter values may overwrite or otherwise replace previous values of the reserved parameters. In some embodiments, the stored reserved parameters may be changes to the active parameters rather than a full set of replacement parameters.Thereafter, before starting each new iteration of the test, the active parameters may be updated based on the pending parameter changes, and the pending parameter changes may be cleared (e.g., until new changes to the parameters are received).
[0078] In response to initiating the tuning process, the device 104 may provide the tests and / or parameters to the controller 116 as it receives the tests and / or parameters from the tuning system 102 at each interval of the tuning process. The controller 116 may use the tests and / or parameters to perform one or more operations to generate a tuning result. The device 104 may provide the tuning result to the tuning system 102 (e.g., via a data stream).
[0079] As an example, the tuning system 102 may include a tuning application (e.g., a TuningC app program), a middleware application (a "gather program"), and a networking program (e.g., Netcat). Additionally, the user computing device 106 may include a software UI, and a networking program (e.g., Netcat).
[0080] The tuning application may execute each iteration of the tuning process, and the tuning tool middleware application may write data related to the results of the tuning iteration to an output data structure (e.g., standard output). The tuning system 102 and the networking program of the user computing device 106 may generate a data connection, so that data from the output data structure can be streamed live to the system and processed and displayed on the fly. Operating systems (OS) on which the foregoing may be implemented include, but are not limited to, Linux-based systems and Windows OS. Based on the OS environment (e.g., the networking program and the UI software program on the user computing device 106), the user computing device 106 may include a program that allows data communication between the networking program and the UI software program (e.g., via Cygwin). The networking program may generate a data connection between the tuning system 102 and the user computing device 106, and the tuning tool may use this data connection to stream data to the user computing device 106. This architecture may allow for streaming of tuning results, allowing tuning iterations to be performed continuously while tuning results are collected and displayed to a user on the user computing device 106. The user may change parameters on the user computing device 106 via a UI software program while the tuning iterations are continuously performed. Parameters and / or tests may be acquired by the device 104 at each new interval of the tuning process, and the results displayed to the user on the user computing device 106 may be up to date at each interval according to the parameters.As previously described, the user computing device 106 may begin the tuning process once with initial parameters and / or initial tests and parameters, and tests may be periodically and automatically provided to the device at each subsequent interval of the tuning process, thereby allowing the tuning process to run continuously, accepting user input of parameters on the fly and updating the parameters at each tuning process interval without stopping the tuning process.
[0081] The process of live tuning the instrument 2 illustrates an example configuration of a tuning environment 200 including a tuning system 102 for tuning a device 104, according to some embodiments. As described above, the tuning system 102 may include one or more tuning components for tuning the device 104 based on acquired inputs. Additionally, the tuning system 102 may include one or more network utilities for communicating with the device 104 and / or a user computing device. The device 104 may include a controller that is provided with the tests and / or parameters and performs actions based on the tests and / or parameters to generate a tuning result. The device 104 may further provide the tuning result to the tuning system 102 and to the user computing device.
[0082] In some embodiments, the tuning system 102 initiates the tuning process at block 206. The tuning system 102 may initiate the tuning process in response to a request to initiate the tuning process. For example, the tuning system 102 may obtain the request to initiate the tuning process from a user computing device. The tuning system 102 may identify a device 104 to be tuned based on obtaining the request to initiate the tuning process.
[0083] In some embodiments, tuning system 102 may determine (e.g., obtain from a user computing device, calculate, etc.) an interval for the tuning process. For example, the interval for the tuning process may be about 0.5 seconds, about 1 second, about 2 seconds, about 3 seconds, about 5 seconds, etc., or any value or range therebetween, although other suitable dime times may be used. The interval may specify a duration for the execution of a particular test. Tuning system 102 may calculate the interval based on the requested tuning process, the requested test, the requested parameters, etc.
[0084] In some embodiments, at block 212, the tuning system 102 retrieves the tests and / or parameters for an interval of the tuning process. The tuning system 102 may retrieve the tests and / or parameters from a memory of the tuning system 102. The tuning system 102 may retrieve the tests and parameters from a user computing device and store the tests and parameters in memory. The tuning system 102 may determine that an interval of the tuning process has been satisfied that requires providing the tests and / or parameters to the device 104. In response to determining that the interval of the tuning process has been satisfied, the tuning system 102 may retrieve the tests and / or parameters from memory. In some embodiments, a timer may be used to determine when the interval for starting the next test iteration is satisfied. In some embodiments, the next test iteration may begin in response to completion of the previous test iteration.
[0085] In some embodiments, tuning system 102 may obtain the initial tests and / or initial parameters along with a request to begin the tuning process. For example, tuning system 102 may obtain the request to begin the tuning process, the initial tests for the tuning process, and / or the initial parameters for the tuning process from a user computing device.
[0086] In some embodiments, at block 214, the tuning system 102 may provide the tests and / or parameters to the device 104. For example, the tuning system 102 may provide the tests and / or parameters to the device 104 via a data stream. In some embodiments, the tuning system 102 may provide the tests and parameters to the device 104 separately.
[0087] In some embodiments, the device acquires the tests and / or parameters at block 216. As previously mentioned, the device may acquire the tests and / or parameters via a data stream with the tuning system 102.
[0088] In some embodiments, at block 218, the device performs the tests. For example, the device may perform the tests by executing a movement profile. The device may perform the tests based on the parameters. Additionally, the device may perform the tests in response to obtaining the tests and / or parameters from tuning system 102. In some embodiments, the device may perform the tests by causing a controller of device 104 to perform one or more actions based on the tests and / or parameters (e.g., executing a movement profile).
[0089] In some embodiments, at block 220, the device 104 provides the tuning results to the tuning system 102 (e.g., via a data stream). The device 104 may obtain the tuning results based on the execution of the tests. The device 104 may monitor the execution of the tests and determine the tuning results based on the monitoring of the execution of the tests. For example, the device 104 may track or monitor how a component performs an operation (e.g., how a controller causes an operation based on the execution of the tests) and generate tuning results that identify the performance of the operation. Based on determining the tuning results, the device may provide the tuning results to the tuning system 102, such as via a streaming data connection (e.g., a data stream) with the tuning system 102.
[0090] In some embodiments, at block 208, the tuning system 102 obtains tuning results from the device 104 via the data stream. The tuning system 102 may obtain the tuning results based on the performance of tests according to the parameters by the device 104. Further, at block 210, the tuning system 102 may cause the tuning results for the intervals of the tuning process to be displayed. For example, in response to obtaining the tuning results via the data stream, the tuning system 102 may provide the tuning results to a user computing device and cause a display of the tuning results.
[0091] Blocks 212, 214, 216, 218, 220, 208, and 210 may be repeated at each interval of the tuning process. Additionally, the blocks may be repeated any number of times at any interval. It will be appreciated that the tuning process may include any number of intervals. In some embodiments, the tuning process may continue until a request to stop the tuning process is received (e.g., from a user computing device). Thereby, following display of the tuning results, tuning system 102 may retrieve tests and parameters from memory and provide them to device 104 for execution of the tests. The user computing device may provide the tests and / or parameters to the memory of tuning system 102. In some cases, the tests and / or parameters may be the same tests and / or parameters as those performed during a previous interval of the tuning process (e.g., if the user computing device has not provided updated tests and / or parameters). In other cases, the tests and / or parameters may be different from the tests and / or parameters performed during the previous interval (e.g., if the user computing device has provided updated tests and / or updated parameters).
[0092] User interface for displaying live tuning results 3 illustrates an exemplary user interface 300 for obtaining device, test, and / or parameter tuning process requests. The exemplary user interface 300 illustrates an interface that a tuning system (or another system) may generate and present to a user for tuning a device. It will be appreciated that the user interface 300 is merely exemplary and that the tuning system may provide any type of user interface to enable tuning of a device.
[0093] The user interface 300 may further comprise a first interface 302, a second interface 304, a third interface 306, a fourth interface 308, a fifth interface 310, and a sixth interface 312. The user interface 300 may further comprise more, fewer, or different interfaces. The first interface 302 may be a tuning process selection interface. The second interface 304 may be a test selection interface. The third interface 306 may be a parameter selection interface. The fourth interface 308 may be a graphical tuning result interface. The fifth interface 310 may be a numerical tuning result interface. The sixth interface 312 may be a settings interface.
[0094] Each of the first interface 302, the second interface 304, the third interface 306, the fourth interface 308, the fifth interface 310, and the sixth interface 312 may comprise multiple interfaces. For example, the first interface 302 may comprise multiple sub-interfaces. It will be appreciated that each interface may comprise more, fewer, or different interfaces. In some embodiments, one or more of the interfaces 302, 304, 306, 308, 310, and 312 may be omitted depending on the capabilities of the system.
[0095] The first interface 302 may identify tuning process information. The tuning process information may identify one or more selectable tuning processes (e.g., closed loop tuning, open loop tuning, torque or current loop tuning, position or velocity loop tuning, etc.). The one or more tuning processes may be performed based on the device selected for tuning and / or characteristics of the device. In the example of FIG. 3, the first interface 302 identifies the available tuning processes as "Current Loop Tune", "Open Loop", and "Position Loop Tune". The first interface 302 further identifies the device as motor "1" and the position of the motor is "0.000000ct". In some embodiments, the user interface may allow the user to define the units as counts per millimeter (ct) (or may use any other suitable unit of distance or position, such as microns). As an example, the system may use 32,767 counts / millimeter, and the system may allow the user to specify various other count values, such as depending on the configuration of the device being tuned. Additionally, the first interface 302 includes one or more interactive elements that allow a user to zero the position of the device, enable amplitude, turn motors on and / or off, etc. It will be appreciated that the first interface 302 may specify more, less, or different information.
[0096] The second interface 304 may specify test information. The test information may specify each test that can be selected and modified, and one or more characteristics of each selectable test (e.g., test interval, test magnitude, etc.). The one or more characteristics may be based on the particular examination selected. In the example of FIG. 3, the second interface 304 identifies the available tests as "Step", "Parabola", "Point to Point", and "Sine / Sine Sweep". For the "Step" test, the second interface 304 identifies the modifiable characteristics as "Move Size" with a value of "640ct", "Move Time" with a value of "300ms", and "Dwell Time" with a value of "500ms". It will be appreciated that the second interface 304 may specify more, less, or different information.
[0097] The third interface 306 may identify parameter information. The parameter information may identify one or more parameters that may be selected and changed (e.g., during live tuning). The third interface 306 may identify a group of one or more parameters that may be selected and changed. In the example of FIG. 3, the third interface 306 identifies the groups of parameters as "gain," "servo loop filter," and "trajectory pre-filter." For the parameter "Gain" group, the third interface 306 identifies the modifiable parameters as "Proportional Gain" (Kp) with a value of "8000", "Derivative Gain 1" (Kvfb) with a value of "80000", "Derivative Gain 2" (Kvifb) with a value of "0", "Integral Gain" (Ki) with a value of "0.000099999997", "Velocity Feedforward Gain 1 (Kvff)" with a value of "80000", "Velocity Feedforward Gain 2 (Kviff)" with a value of "0", "Acceleration Feedforward Gain (Kaff)" with a value of "0", "Friction Feedforward Gain (Kfff)" with a value of "0", and "Integrator Mode (SwZvInt)" with a value of "0". In some embodiments, an integrator mode value of "1" indicates that position error integration is performed only when the motor is not commanded to move, and an integrator mode value of "0" indicates that position error integration is performed regardless of whether the motor is commanded to move or is performed at all times. It will be appreciated that the third interface 306 may specify more, less, or different information.
[0098] The fourth interface 308 may identify the tuning results in a graphical format. Upon receipt of the tuning results from the device, the tuning system may cause the fourth interface 308 to display the tuning results in a graphical format. The fifth interface 310 may identify the tuning results in a non-graphical format (e.g., numeric, alphabetic, alphanumeric, symbolic). Upon receipt of the tuning results from the device, the tuning system may cause the fifth interface 310 to display the tuning results in a non-graphical format. It will be appreciated that the fourth interface 308 and the fifth interface 310 may identify more information, less information, or different information.
[0099] The sixth interface 312 may specify settings and / or status information. The settings may specify one or more adjustable settings or status identifiers (e.g., filters, limits, equipment status, equipment type, equipment algorithm, etc.) to adjust or report on, for example, how tests are performed by the equipment and / or how tuning results are generated, determined, or displayed. In the example of FIG. 3, the sixth interface 312 specifies the settings as "Trajectory Pre-Filter", "Position Loop", "Standard Servo Algorithm", "Independent Motor Type", "Amplifier Fault", "Fatal FE Limit", "Hardware Limit", or "Software Limit". It will be appreciated that the sixth interface 312 may specify more, less, or different information.
[0100] 4 shows an exemplary user interface 400 for obtaining device, test, and / or parameter tuning process requests and displaying tuning results. The exemplary user interface 400 illustrates an interface that a tuning system (or another system) may generate and present to a user for tuning a device and displaying the tuning results. It will be appreciated that the user interface 400 is merely exemplary and that the tuning system may provide any type of user interface to enable tuning of a device.
[0101] The user interface 400 may further comprise a first interface 402, a second interface 404, a third interface 406, a fourth interface 408, a fifth interface 410, and a sixth interface 412. The user interface 400 may further comprise more, fewer, or different interfaces. The first interface 402 may be a tuning method interface. The second interface 404 may be a test selection interface. The third interface 406 may be a parameter selection interface. The fourth interface 408 may be a graphical tuning result interface. The fifth interface 410 may be a numerical tuning result interface. The sixth interface 412 may be a tuning start interface.
[0102] Each of the first interface 402, the second interface 404, the third interface 406, the fourth interface 408, the fifth interface 410, and the sixth interface 412 may comprise multiple interfaces. For example, the first interface 402 may comprise multiple sub-interfaces. It will be appreciated that each interface may comprise more, fewer, or different interfaces.
[0103] The first interface 402 may identify tuning method information. The tuning method information may identify one or more methods of tuning a selectable device (e.g., auto-tune, interactive tuning, live tuning, etc.). The one or more methods of tuning may be based on the device selected for tuning and / or characteristics of the device. In the example of FIG. 4, the first interface 402 identifies the available tuning methods as "auto" and "interactive." It will be appreciated that the first interface 402 may identify more information, less information, or different information.
[0104] The second interface 404 may specify test information. As discussed above, the test information may specify each test that may be selected and altered and one or more characteristics of each selectable test. In the example of FIG. 4, the second interface 404 identifies the available tests as "Step", "Parabola", "Point to Point", and "Sine / Sine Sweep". For the "Step" test, the second interface 404 identifies the alterable characteristics as "Move Size" with a value of "1000mu", "Move Time" with a value of "500ms", and "Stationary" with a value of "No". The second interface 404 also includes parameters for selecting the device to move in a particular direction and / or for stopping (e.g., stopping) the device after the test. It will be appreciated that the second interface 404 may specify more, less, or different information. "Move Size" may be the distance the motor moves in a forward direction and then reverses and moves the same distance in the reverse direction. The units may be user definable motor units (mu) similar to the counts (cn) discussed above, although any suitable distance units may be used. "Move Time" may be the time it takes the motor to move a distance specified by "Move Size" in a forward direction and then move the same distance in a "Move Time" time in a reverse direction.
[0105] The third interface 406 may identify parameter information. As discussed above, the parameter information may identify one or more parameters that can be selected and changed (e.g., during live tuning). The third interface 406 and / or the second interface 404 may allow the user to change the parameters and / or tests to perform at the next interval of the tuning process. In some embodiments, one or more or all of the parameters of the third interface 406 are adjustable on the fly during live tuning, while one or more or all of the parameters of the second interface 404 are configurable for the duration of a tuning session. In the example of FIG. 4, the third interface 406 identifies groups of parameters as "gain", "position filter", "trajectory prefilter", and "filter coefficients". For the parameter "Gain" group, the third interface 406 identifies the modifiable parameters as "Proportional Gain" (Kp) with a value of "3.2225997", "Derivative Gain 1" (Kvfb) with a value of "59.250027", "Derivative Gain 2" (Kvifb) with a value of "0", "Integral Gain" (Ki) with a value of "0086849825", "Velocity Feedforward Gain 1 (Kvff)" with a value of "59.250027", "Velocity Feedforward Gain 2 (Kviff)" with a value of "0", "Acceleration Feedforward Gain (Kaff)" with a value of "539.80347", and "Friction Feedforward Gain (Kfff)" with a value of "0". It will be appreciated that the third interface 406 may identify more, less, or different information. Various other values and parameters may be used.
[0106] The fourth interface 408 may identify the tuning results in a graphical format and the fifth interface 410 may identify the tuning results in a non-graphical format (e.g., numeric, alphabetic, alphanumeric, symbolic). The fourth interface 408 may include a graphical display of the tuning results streamed from the tuning system to the user computing device as described herein with respect to FIG. 1. The fifth interface 410 may include a section for a non-graphical display of the tuning results (e.g., a statistics-based display). The fourth interface 408 and the fifth interface 410 may be continuously updated based on the tuning results streamed from the tuning system to the user computing device. Additionally, the fourth interface 408 and the fifth interface 410 may reflect updates to the tests and / or parameters provided by the user via the user computing device and applied to the tuning process on the fly. It will be appreciated that the fourth interface 408 and the fifth interface 410 may identify more, less, or different information. In some embodiments, the user interface may include an indicator of what parameter values were used to generate the currently displayed test result. The user interface may include icons or other indicators that indicate which values have changed since the values that produced the currently displayed result. In some embodiments, a clock, hourglass, spinning circle, or other indicator may be placed next to values that have changed since the test that produced the displayed result. In some embodiments, the user interface may display (e.g., as separate columns) both the values that produced the displayed result and current or pending values for tests that have not yet completed.
[0107] The sixth interface 412 may specify tuning start information. For example, the sixth interface 412 may include a selectable element for starting and / or stopping the tuning process. In the example of Figure 4, the sixth interface 412 includes a "Stop Tuning" element that is selectable when the tuning process is in progress. It will be appreciated that the sixth interface 412 may specify more information, less information, or different information.
[0108] Live tuning of the device 5 illustrates a method 500 performed by a tuning system using a continuous (e.g., live, interactive) tuning process for tuning a device (e.g., a servo motor) in accordance with some examples of the disclosed technology. The tuning system may be similar to tuning system 102 described above, for example, and may include tuning components similar to tuning components 108, memory similar to memory 109, and / or networking utilities similar to networking utility 110.
[0109] At block 502, the tuning system obtains one or more parameters and / or tests. The one or more parameters and / or tests may identify a device for performing the test according to the parameters. The tuning system may obtain the one or more parameters and / or tests from a user computing device (e.g., via a user interface of the user computing device). In some embodiments, the tuning system may obtain the one or more parameters and tests from a memory of the tuning system. The tests may include a step test, a ramp test, a parabolic velocity test, a trapezoidal velocity test, a S-curve velocity test, a sine wave test, a sine wave sweep test, and / or a user-defined test, and / or the like. Further, the tests may define and / or include a move size, a move speed, and / or a move profile, and / or the like. The parameters may include a proportional gain, a derivative gain, a velocity feedforward gain, an integral gain, an integral mode, an acceleration feedforward gain, and / or a friction feedforward gain, and / or the like. In some embodiments, the parameters may include hardware parameters. For example, the parameters may be based on hardware components of the device, a connection between the device and the system, and / or a connection between the device and another component.
[0110] At block 504, the tuning system initiates a tuning process. The tuning system may initiate the tuning process based on one or more parameters and tests. The tuning system may receive user input via a user interface (e.g., identifying a request to initiate a tuning process) and initiate the tuning process in response to the user input. The tuning system may also identify a tuning schedule for the tuning process. The tuning schedule may identify one or more intervals for providing parameters and / or tests to the device.
[0111] At block 506, the tuning system provides one or more parameters and / or tests to the device in response to initiating the tuning process. For example, the tuning system may provide one or more parameters and tests based on a tuning schedule. Based on providing the one or more parameters and tests to the device, the tuning system may obtain tuning results from the device. For example, the device may generate tuning results based on the one or more parameters and tests and provide the tuning results to the tuning system. The tuning system may obtain the tuning results via a data stream from the device. The tuning system may cause at least a portion of the tuning results to be displayed via a display of a user interface (e.g., a user interface of a user computing device). Additionally, the tuning system may cause at least a portion of the one or more parameters, tests, and / or tuning results to be displayed.
[0112] At block 508, the tuning system automatically provides the additional parameters and additional tests to the device in response to completing the tests. The tuning system may provide the additional parameters and additional tests to the device after providing one or more parameters and tests to the device. For example, the tuning system may provide the additional parameters and additional tests based on a tuning schedule. Furthermore, the tuning system may automatically provide the additional parameters and additional tests to the device without initiating the tuning process again, without receiving user input via a user interface after the tuning process has begun, and / or without receiving user input other than user input defining the parameters and / or tests.
[0113] To provide the additional parameters and tests, the tuning system may obtain the additional parameters and tests from the user computing device and store the additional parameters and tests in memory. As subsequent parameters and / or tests are obtained, the tuning system may replace the parameters and / or tests with the updated parameters and / or tests such that the last received parameters and / or tests are provided at the next interval of the tuning process. To provide the additional parameters and tests to the device, the tuning system may obtain the additional parameters and tests from memory. In some embodiments, the tuning system may not obtain the additional parameters and / or tests from the user computing device before the next interval of the tuning process. In particular, the tuning system may obtain one or more parameters and / or tests from memory (e.g., because one or more parameters and / or tests may not be replaced by updated parameters and / or updated tests) and provide the one or more parameters and / or tests to the device. Thus, the one or more parameters may be the same or different as the additional parameters, and the tests may be the same or different as the additional tests.
[0114] In some embodiments, the tuning system may determine whether user input (e.g., defining parameters and / or tests) has been obtained before automatically providing additional tests and / or additional parameters to the device. If the tuning system determines that user input has not been obtained, the tuning system may provide one or more parameters and / or tests to the device. If no user input was provided to change the parameters, the device may use the same parameters and / or tests for the next test iteration. If the tuning system determines that user input has been obtained, the tuning system may provide the user input (or new tests and / or parameters indicated by the user input) to the device. In some embodiments, the tuning system may obtain a set of parameters without obtaining an updated test (or obtain an updated test without obtaining updated parameters). The tuning system may also provide the updated set of parameters to the device along with the test (e.g., the test obtained in block 502).
[0115] Based on automatically providing the additional parameters and the additional tests to the device, the tuning system may obtain additional tuning results from the device, and the tuning system may cause at least a portion of the additional tuning results to be displayed via a display of the user interface.
[0116] The tuning system may continually (e.g., automatically and periodically) provide parameters and tests to the device at each interval of the tuning process (e.g., based on a tuning schedule). For example, the tuning system may provide parameters and / or tests at each interval until a request to abort the tuning process is obtained (e.g., from a particular user computing device). For example, the tuning system may obtain user input, determine that the tuning process has been aborted based on the user input, and stop tuning the device.
[0117] The tuning system disclosed herein can execute a test profile repeatedly with only a single start input from the user and can continue to repeat the test profile until the user provides a stop input. For each test iteration, the tuning system disclosed herein can collect, transmit, analyze, and / or display data of the test results. The tuning system can perform post-processing of the data, such as Fast Fourier Transform (FFT) and differential calculations. The tuning system can display data including graphs, statistics, and / or active gain parameters from the most recent test iteration. During the test, the user can change test parameters and gains and observe the results during or after the next test iteration. The tuning system disclosed herein can be used to study the effects of external factors on motor response and other characteristics of the tested device. By reducing the user's workload, the tuning system disclosed herein can significantly reduce tuning time. The tuning system disclosed herein can be used to establish response constancy between multiple test iterations. The appendix to U.S. Provisional Application No. 63 / 191,882, which is incorporated herein by reference, contains additional information regarding the tuning system.
[0118] Conditional terms such as "can," "could," "might," or "may" are generally intended to convey that a particular example includes or does not include certain features, elements, and / or steps, unless otherwise specified or understood within the context in which they are used. Thus, such conditional terms generally do not imply that features, elements, and / or steps are in any way required for one or more of the examples.
[0119] Several examples of live tuning of motors are disclosed. Although the present disclosure has been described in terms of certain exemplary embodiments and applications, other embodiments and applications are within the scope of the present disclosure, including embodiments and applications that do not provide all of the features and advantages described herein. Components, elements, features, acts, or steps may be arranged or performed differently than described, and components, elements, features, acts, or steps may be combined, integrated, added, or omitted in various examples. All possible combinations and subcombinations of the elements and components described herein are intended to be included in the present disclosure. No feature or group is essential.
[0120] Certain features that are described in the present disclosure in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features are described above as acting in a particular combination, in some cases, one or more features can be excluded from a claimed combination and the combination can be claimed as a subcombination or a variation of the subcombination.
[0121] Any portion of the steps, processes, structures, and / or apparatus disclosed or illustrated in one embodiment of the disclosure may be combined with or used in place of any other portion of the steps, processes, structures, and / or apparatus disclosed or illustrated in a different embodiment or flow chart. The embodiments described herein are not intended to be in isolation from one another. Combinations of the disclosed features, variations, and embodiments are within the scope of the disclosure.
[0122] Although operations may be depicted in the figures or described in the specification in a particular order, such operations need not be performed in the particular order shown or in sequential order to achieve the desired results, nor need all operations be performed. Other operations not depicted or described may be incorporated into the exemplary methods and processes. For example, one or more additional operations may be performed before, after, simultaneously with, or during the operations described. Furthermore, in some embodiments, the operations may be rearranged or reordered. Also, the separation of various components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described components and systems may generally be integrated together in a single product or packaged in multiple products. Furthermore, some embodiments are within the scope of the present disclosure.
[0123] Further, although exemplary embodiments have been described, embodiments having equivalent elements, modifications, omissions, and / or combinations are also within the scope of the present disclosure. Moreover, although certain aspects, advantages, and novel features have been described herein, not necessarily all such advantages are achieved in accordance with a particular embodiment. For example, some embodiments within the scope of the present disclosure achieve one advantage or group of advantages taught herein without necessarily achieving other advantages taught or suggested herein. Moreover, some embodiments may achieve advantages different from those taught or suggested herein.
[0124] Several embodiments have been described in connection with the accompanying drawings. While the drawings are drawn and / or shown to scale, such scale is not limiting and dimensions and proportions other than those shown are contemplated and within the scope of the disclosed invention. Distances, angles, and the like are merely illustrative and do not necessarily bear precise relationship to the actual dimensions or layout of the devices shown. Components may be added, removed, or rearranged. Furthermore, disclosures herein of specific features, aspects, methods, properties, characteristics, qualities, attributes, elements, etc., associated with various embodiments may be used in all other embodiments described herein. Furthermore, the methods described herein may be performed using any apparatus suitable for performing the steps described.
[0125] For purposes of summarizing the disclosure, certain aspects, advantages, and features of the invention have been described herein. Not all or any of such advantages will necessarily be achieved in accordance with a particular embodiment of the invention disclosed herein. No aspect of the disclosure is essential or dispensable. In many examples, the devices, systems, and methods may be configured differently than as illustrated in the drawings or description herein. For example, various functions provided by the illustrated modules may be combined, rearranged, added, or removed. In some embodiments, additional or different processors or modules may perform some or all of the functionality described with reference to the examples described and illustrated in the drawings. Many embodiment variations are possible. Any of the features, structures, steps, or processes disclosed herein may be included in any embodiment.
[0126] In some embodiments, the methods, techniques, microprocessors, and / or controllers described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hardwired to perform the techniques, may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general-purpose hardware processors that are programmed to perform the techniques according to program instructions in firmware, memory, other storage, or combinations thereof. The instructions may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, removable disk, CD-ROM, or any other form of non-transitory computer-readable storage medium. Such special-purpose computing devices may combine custom hardwired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, server computer systems, portable computer systems, handheld devices, network devices, or other devices or combinations of devices that incorporate hardwired and / or program logic to implement the techniques.
[0127] The microprocessors or controllers described herein may be coordinated by operating system software, such as iOS, Android, Chrome OS, Windows, Unix, Linux, SunOS, Solaris, Blackberry OS, VxWorks, or other compatible operating systems. In other embodiments, a computing device may be controlled by its own operating system. A conventional operating system controls and schedules the execution of computer processes, performs memory management, provides file systems, networking, I / O services, and provides user interface functionality, such as a graphical user interface ("GUI").
[0128] The microprocessor and / or controller described herein may implement the techniques described herein using customized hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic dedicated to the microprocessor and / or controller. According to one embodiment, portions of the techniques disclosed herein are executed in the controller in response to execution of one or more sequences of instructions contained in a memory. Such instructions may be read into the memory from another storage medium, such as a storage device. Execution of the sequences of instructions contained in the memory causes the processor or controller to perform the process steps described herein. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions.
[0129] Furthermore, the various example logic blocks and modules described in connection with the embodiments disclosed herein may be implemented or performed by machines such as a processor device, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. The processor device may be a microprocessor, but may alternatively be a controller, a microcontroller, or a state machine, combinations thereof, and the like. The processor device may include electrical circuitry configured to process computer-executable instructions. In another embodiment, the processor device includes an FPGA or other programmable device that performs logical operations without processing computer-executable instructions. The processor device may be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in combination with a DSP core, or other such configurations. Although primarily digital technology has been described herein, the processor device may also comprise primarily analog components. For example, some or all of the technology described herein may be implemented with analog circuitry or mixed analog and digital circuitry.
[0130] In summary, various examples of live tuning of a motor are disclosed. The disclosure extends beyond the specifically disclosed embodiments to other alternative embodiments and / or other uses of the embodiments, as well as certain modifications and equivalents thereof. Moreover, the disclosure expressly contemplates that various features and aspects of the disclosed embodiments can be combined with or substituted for one another. Thus, the scope of the disclosure should not be limited by the specific disclosed examples set forth above.
Claims
1. 1. A system for tuning an apparatus, comprising: A user interface; At least one processor; a memory storing computer executable instructions; Equipped with Execution of the computer-executable instructions by the at least one processor causes the at least one processor to: obtaining one or more first parameters; Identify the first test, causing the apparatus to determine a tuning schedule indicating one or more tuning intervals for providing each parameter and each test; initiating a tuning process for the device based on the first test, the tuning schedule, and the one or more first parameters; In response to initiating the tuning process, causing the device to provide the first test and the one or more first parameters in accordance with the tuning schedule; obtaining a tuning result from the device based on the first test and providing the one or more first parameters to the device; displaying at least a portion of the tuning results via a display of the user interface; after providing the first test and the one or more first parameters to the device, causing the device to automatically provide a second test and / or one or more second parameters in accordance with the tuning schedule; system.
2. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: obtaining additional tuning results based on the second test and / or providing the one or more second parameters to the device; The system of claim 1 , further comprising: displaying at least a portion of the additional tuning results via a display of the user interface.
3. The system of claim 1 , wherein the one or more second parameters include the one or more first parameters.
4. The system of claim 1 , wherein the one or more second parameters and the one or more first parameters are different parameters.
5. The system of claim 1 , wherein the first test and the second test are different tests.
6. The system of claim 1 , wherein the second test and the first test are the same test.
7. The first test is Step test, Lamp test, Parabolic Velocity Test, Trapezoidal Speed Test, S-curve speed test, Sine wave test, Sine wave sweep test, User-defined tests, The system of claim 1 , comprising at least one of:
8. The system of claim 1 , wherein the first test includes a movement size, a movement speed, and a movement profile.
9. The one or more first parameters are: Proportional Gain, Differential gain, Velocity Feedforward Gain, Integral Gain, Acceleration feedforward gain, Friction Feedforward Gain, The system of claim 1 , comprising at least one of:
10. the one or more first parameters include one or more hardware parameters; The system of claim 1 , wherein the one or more hardware parameters are based on at least one of one or more hardware components of the device, a connection between the device and the system, or a connection between the device and a component.
11. 2. The system of claim 1, wherein execution of the computer-executable instructions by the at least one processor to provide the second test and / or the one or more second parameters causes the at least one processor to automatically provide the second test and / or the one or more second parameters to the device without restarting the tuning process.
12. The system of claim 1 , wherein execution of the computer-executable instructions by the at least one processor further causes the at least one processor to obtain the one or more first parameters via the user interface.
13. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: receiving user input via the user interface; The system of claim 1 , further comprising: a step of initiating the tuning process based on the user input.
14. 14. The system of claim 13, wherein execution of the computer-executable instructions by the at least one processor to provide the second test and / or the one or more second parameters causes the at least one processor to automatically provide the second test and / or the one or more second parameters without receiving additional user input via the user interface.
15. The system of claim 1 , wherein execution of the computer-executable instructions by the at least one processor further causes the at least one processor to obtain the tuning results via a data stream from the device.
16. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: determining that user input defining the second test and / or the one or more second parameters has not been obtained prior to automatically providing the second test and / or the one or more second parameters to the device; and causing the device to re-provide the first test and / or the one or more first parameters based on determining that the user input was not obtained prior to automatically providing the second test and / or the one or more second parameters to the device. The system of claim 1 .
17. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to determine that user input has been obtained prior to automatically providing the second test and / or the one or more second parameters to the device; the user input identifies at least one of the second test or the one or more second parameters; automatically providing the second test and / or the one or more second parameters to the device is based on determining that user input has been obtained prior to automatically providing the second test and / or the one or more second parameters to the device; The system of claim 1 , wherein the first test and the second test are different tests or the one or more first parameters and the one or more second parameters are different parameters.
18. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: determining that no user input has been obtained prior to automatically providing the second test and / or the one or more second parameters to the device; providing the first test and the one or more first parameters to the device is based on determining that no user input has been obtained prior to automatically providing the second test and / or the one or more second parameters to the device; the one or more second parameters include the one or more first parameters; and the second test and the first test are the same test; obtaining additional tuning results based on the second test and / or providing the one or more second parameters to the device; displaying at least a portion of the additional tuning results via a display of the user interface to identify one or more third parameters and a third test; 2. The system of claim 1, wherein based on identifying the one or more third parameters and the third test, the third test and the one or more third parameters are automatically provided to the device, and at least one of the first test and the third test are different tests, or the one or more first parameters and the one or more third parameters are different parameters.
19. The one or more first parameters and the first test are provided to the device during a first tuning interval of the tuning schedule, and the second test and / or the one or more second parameters are provided during a second tuning interval of the tuning schedule, and execution of the computer-executable instructions by the at least one processor further comprises: obtaining one or more third parameters subsequent to the first tuning interval and prior to the second tuning interval; storing the one or more third parameters; obtaining the one or more second parameters after the first tuning interval and before the second tuning interval, and after obtaining the one or more third parameters; replacing the one or more third parameters with the one or more second parameters; 2. The system of claim 1, wherein automatically providing the second test and / or the one or more second parameters to the device is based on replacing the one or more third parameters with the one or more second parameters, and the one or more third parameters are not utilized to tune the device.
20. The system of claim 1 , wherein the device is a servo motor.
21. The system of claim 1 , wherein execution of the computer-executable instructions by the at least one processor further causes the at least one processor to obtain the one or more second parameters from a memory.
22. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: storing the one or more first parameters in a memory; obtaining the one or more second parameters; 22. The system of claim 21, further comprising: based on obtaining the one or more second parameters, causing the one or more first parameters in the memory to be replaced with the one or more second parameters.
23. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: The one or more first parameters; data relating to the first test; At least a portion of the tuning results; The system of claim 1 , further comprising:
24. 2. The system of claim 1, wherein execution of the computer-executable instructions by the at least one processor further causes the at least one processor to periodically provide a corresponding test and one or more corresponding parameters to the device in response to initiation of the tuning process.
25. Execution of the computer-executable instructions by the at least one processor further causes the at least one processor to: determining that the tuning process has been stopped; 25. The system of claim 24, further comprising: upon determining that the tuning process has been stopped, ceasing to periodically provide the corresponding test and the one or more corresponding parameters to the device.
26. 26. The system of claim 25, wherein execution of the computer-executable instructions by the at least one processor further causes the at least one processor to obtain user input and determine that the tuning process is aborted based on the user input.
27. The method of claim 27, wherein execution of the computer-executable instructions by the at least one processor to provide the first test and the one or more first parameters further causes the at least one processor to provide the first test and the one or more first parameters to the device during a first time period based on the tuning schedule; 2. The system of claim 1, wherein execution of the computer-executable instructions by the at least one processor to automatically provide the second test and / or the one or more second parameters further causes the at least one processor to automatically provide the second test and / or the one or more second parameters to the device during a second time period based on the tuning schedule.
28. The system of claim 1 , wherein the device generates the tuning result based on the one or more first parameters and the first test.
29. 1. A non-transitory computer-readable storage medium that, when executed, causes at least one computing device to: acquiring one or more parameters according to a tuning schedule indicating one or more tuning intervals for each parameter and each test; Obtaining tests according to said tuning schedule; initiating a tuning process for the device based on the tests, the tuning schedule, and the one or more parameters; responsive to initiation of the tuning process, periodically perform the test using the one or more parameters of the device, obtain tuning results from the device based on the test and providing the one or more parameters to the device, and display at least a portion of the tuning results on a display of a user interface.
30. A method of tuning an apparatus using a tuning system having at least one processor, comprising: The at least one processor, acquiring one or more parameters according to a tuning schedule indicating one or more tuning intervals for each parameter and each test; Identifying tests according to said tuning schedule; initiating a tuning process for the device based on the tests, the tuning schedule, and the one or more parameters; periodically in response to initiation of said tuning process; performing the test on the device using the one or more parameters, obtaining tuning results from the device based on providing the test and the one or more parameters to the device, and displaying at least a portion of the tuning results on a display of a user interface.
31. A method of tuning an apparatus using a tuning system having at least one processor, comprising: The at least one processor, obtaining one or more first parameters according to a tuning schedule indicating a tuning interval for each parameter; causing the device to perform a first test using the one or more first parameters; outputting a test result from the first test; obtaining, during the first test, one or more second parameters different from the one or more first parameters in accordance with the tuning schedule; storing one or more second parameters while the first test is completed using the one or more first parameters; after completion of the first test, causing the device to automatically perform a second test using the one or more second parameters; outputting a test result from the second test.
32. The method of claim 31, comprising causing the at least one processor to obtain the one or more second parameters via a user interface.
33. The method of claim 31, comprising causing the at least one processor to perform a plurality of tests on the device using the one or more first parameters before obtaining the one or more second parameters.
34. The method of claim 31, comprising causing the at least one processor to acquire one or more intermediate parameters during performance of the first test and before acquiring the one or more second parameters, and causing the one or more second parameters to replace the one or more intermediate parameters before the intermediate parameters are used in testing.
35. The method of claim 31, comprising causing the at least one processor to transfer test result data for the first test while the first test is being performed.
36. The method of claim 31, comprising causing the at least one processor to transfer test result data for the first test using a data stream between the device and the tuning system.
37. The method of claim 31, comprising causing the at least one processor to transfer test result data of the first test without saving the test result data to a file.
38. The method of claim 31, comprising causing the at least one processor to transfer test results from a first volatile memory of the device to a second volatile memory of the tuning system.
39. 1. A tuning system for tuning an apparatus, comprising: At least one processor; A memory storing computer-executable instructions, the execution of which by said at least one processor causes said at least one processor to perform the method of claim 31; A system comprising:
40. 32. A non-transitory computer readable storage medium storing instructions that, when executed, cause at least one computing device to perform the method of claim 31.
Citation Information
Patent Citations
Automatic adjusting method and feature quantity criterion change method, and plural adjusting condition global decision methods and data sampling methods for numerical controller, numerical control system, and control parameter
JP1992302306A
Servogain-parameter tuning apparatus
JP1995107766A