The present disclosure generally relates to a computerized system including at least one computing device and camera collectively configured to measure and accommodate the adjustment of predetermined physical attributes associated with a mechanical device (in real time) by predicting three-dimensional (3D) features of the mechanical device based on processed two-dimensional (2D) data associated with the mechanical device.
A mechanical device is often subjected to an adjustment phase, during or subsequent to manufacturing of the device, to e.g., configure angles and other dimensions associated with components of the device as desired. For example, the angle of an arm or elongated member relative to a general body of the device or to a selected surface may be adjusted or modified according to predetermined specifications suitable for a particular application. However, the adjustment phase may involve attachment and detachment of the mechanical device to various measuring and adjustment tools, which may cause wear or damage to the device.
As a specific non-limiting example, adjustment of a golf club's attributes (e.g., loft) during manufacturing or otherwise requires the careful application of structural modifications to the club head and the club shaft according to precise measurements. In particular, measurements must be taken after every adjustment of a golf club attribute (e.g., loft angle, lie angle, length, bulge, or roll) to assure proper adjustment. However, tools that measure attributes of a golf club generally require physical contact with the golf club. As such, the golf club is generally transferred to and from multiple times between a measurement tool and an adjustment tool. Accordingly, the golf club may have to be repositioned within the adjustment tool prior to every adjustment. Transferring the golf club multiple times in this manner results in increased task time for manufacturing and can also result in the formation of scratches and wear on the finished golf club product.
It is with these observations in mind, among others, that various aspects of the present disclosure were conceived and developed.
Corresponding reference characters indicate corresponding elements among the view of the drawings. The headings used in the figures do not limit the scope of the claims.
In view of the aforementioned, there is a need for technological improvements related to systems for measuring three-dimensional (3D) attributes associated with mechanical devices. Accordingly, aspects of the present disclosure relate to an inventive technological solution in the form of a system including a computing device and/or computer program product configured via an application or otherwise, and at least one camera (integrated with the computing device or separately implemented), where the system is generally configured for measuring 3D attributes related to predefined performance measurements of a mechanical device based on the computation or processing of image data representative of changes to 2D image features associated with the mechanical device (interpreted by real features defined along the device and/or by fiducials positioned along the device).
The present inventive system can improve various aspects of manufacturing and measurement of the mechanical device. More specifically, the system can give the manufacturer a real time reading of the 3D attributes of the mechanical device while in production such that adjustments of the attributes may be made without repositioning the device within an adjustment mechanism after every measurement. Accordingly, the system can reduce task time, the number of adjustments, and wear and scratching of the finished product. Further, the system can improve the quality of the device, lower the operational cost, and reduce fatigue on the technician. Referring to the drawings, embodiments of a system for measuring attributes of a mechanical device in real time are illustrated and generally indicated as 100 and 200 in
Referring to
In some embodiments, the system 100 may further include a fixation tool 112 such as a vise grip for holding the mechanical device 110 in place relative to the camera 106, and may also include an adjustment tool 114 (such as e.g., a bending machine, plyers, a wrench, etc.) for manipulating, bending, or otherwise modifying physical properties of the mechanical device 110. Collectively, the system 100 is configured to accommodate the measurement and adjustment of predetermined properties of the mechanical device 110, as further described herein.
As shown, the computing device 104 may be in operable wireless communication with the camera 106 via a network 116. In other embodiments, the computing device 104 may be in operable communication with the camera 106 by way of a wired connection, or the camera 106 may be integrated with the computing device 104, as further described herein. The computing device 104 may include one or more of a server, controller, a personal computer, terminal, workstation, laptop, mobile device, smartphone, tablet, mainframe, or other such computing device configured by the application 102 or otherwise to implement functionality described herein. The application 102 may be created using different software packages such as Open CV and ArUco tool sets in C++, but the present concept is not limited in this regard. Aspects of the system 100 and/or the application 102 may be provided as a mobile application, using platform as a service (PaaS), and/or software as a service (SaaS) using e.g., Amazon Web Services, or other distributed or decentralized systems. The network 116 may include the Internet, an intranet, a virtual private network (VPN), a local area network (LAN), a wide area network (LAN), a peer-to-peer network, a cloud, and the like. In some embodiments, a cloud (not shown) may be implemented to execute one or more components of the system 100.
As further indicated, the computing device 104 may be in operable connection with or may otherwise have access to a database 118. The database 118 may store information about predetermined or desired properties for the mechanical device 110, virtual objects, and other associated information as described herein. For example, the database 118 may store information about predetermined loft and lie angles suitable for different types of golf clubs. In addition, at least some features of the application 102 may be made available to a plurality of user devices 120 in communication with the computing device 104 via the network 116. The plurality of user devices 120 may include, without limitation, at least one of a controller, a personal computer, terminal, workstation, portable computer, laptop, mobile device, tablet, phone, pager, or multimedia console. Any one of the plurality of user devices 120 may be implemented to e.g., submit requests or information to the computing device 104, e.g., request that the mechanical device 110 be adjusted in some form.
Referring to
More specifically, referring to the Scene Calibration module 154 of
Referring to
Returning back to
It should be understood that the camera 106 implemented may include a sole camera or a set of cameras or multiple camera devices operating collectively or independently operated, such that the camera 106 is not limited to any particular number of camera or camera devices capable of capturing image data. The camera 106 may further be any electronic device with a camera (e.g., a mobile device, a tablet, or a laptop) or any camera with a connection to the computer. Further, the camera 106 may be a stereo camera (not shown) configured to capture 3D images. In embodiments using such a stereo camera, the stereo camera can be used independently without the fiducials 108 as correspondence points to produce attribute measurements. In some embodiments, the camera 106 is configured with sufficient resolution to capture the chosen real features or fiducials 108 used to mark the mechanical device 110. Multiple cameras may be used in order to increase the field of view, or to provide a stereoscopic view of the mechanical device 110. In one embodiment, positioning and posing of the camera 106 is done prior to the Scene Calibration module 154 being executed. The real features and/or fiducials 108 used to mark the mechanical device 110 may be represented by pixels in a 2D image, and the application 102 utilizes these 2D images (and observed changes to the same) as described herein. In one embodiment, using a camera 106 capable of capturing high resolution (1920p×1080p) images may improve functionality and output of the application 102 because the fiducials 108 or real features may be represented by a higher number of pixels. In some embodiments, when implementing the camera 106 as a live camera (camera constantly feeding information to the application 102), the image frames 158 are being refreshed at a given rate between 0.1 and 144 Hz. The application 102 may operate on one or more files associated with the image frames 158 in order to convert the image frames 158 to binary (i.e. black and white), sharpen edge resolution, thicken lines, thin lines, etc. in order to perform subsequent measurements or to locate certain features/fiducials 108 within the image frames 158.
Once the scene calibration has been completed, the fiducials 108 may be deployed or positioned along predetermined locations of the mechanical device 110 as desired. Referring to the illustration 300 of
In some embodiments, the fiducials 108 illustrated in
Referring back to
Using the Fiducial Tracking module 160, the 2D positions of the fiducials 108 in the image frames 158 may be recorded or otherwise identified for use in the 3D Position Estimation module 170. Similarly, in other embodiments, the Real Feature Tracking module 164 may be used to record or identify the 2D image positions of predetermined real features of the mechanical device 110 within the image frames 158. At this stage, the camera 106 may continuously track the fiducials 108 as long as the mechanical device 110 remains within the image frame. In other words, the pose of the camera 106, calculated by the Scene Calibration module 154, may be used to calibrate the fiducials 108 and/or real features within the natural scene and may be tracked over an extended set of frames. Positions and rotations of the fiducials 108 are reported in the camera coordinate frame of the image frames 158.
The 3D Position Estimation module 170 may then be configured to import data produced in the previous modules of
Once the 3D points 172 are generated, the ‘Define Physical Attributes’ module 174 may be implemented which is configured to apply a series of predetermined linear algebraic operations to the 3D points 172 in order to define or identify certain physical attributes 176 of the mechanical device 110. The ‘Performance Measurements’ module 178 may then be implemented to process or apply the data associated with the physical attributes 176 of the mechanical device 110 with additional predefined functions to output any number or type of performance measurements, as further described herein. As one example, the relative angle of the elongated member 304 of the mechanical device 110 relative to the surface 306 may be determined using the functionality of
Numerous additional applications of the system 100 are contemplated. In some embodiments, a set of fiducials may be placed as stickers on various parts of a golf club, bat, hockey stick, or other sporting equipment for use in fitting for swing analysis. The fiducials may be read by a camera and their assigned identifiers may be fed as input into the system 100. The system 100 may then be used to analyze the initial body motions on the downswing, club-head orientation at different swing segments, and overall consistency of the swing. During analysis, the system 100 may assign a value during fittings or lessons which a player may be able to see and implement to improve performance.
More specifically, referring to the illustration 400 of
In addition, any number of the fiducials 108 may be aligned along the golf club 412. As shown in
In some embodiments, upon conducting swing analysis, the system 100 may output one or more swing analysis input values which may be leveraged during fittings of the club 412. Specifically, the system 100 may utilize the swing analysis input values as an input to a set of predetermined functions comprising a series of predetermined linear algebraic operations. As further described herein (e.g.,
For example, the set of points representing the predetermined origin of a local coordinate system may be (0, 0, 0). The set of points representing a point on the club 412 can be chosen to be (10, 20, 30). Applying the three dimensional function, the set of coordinates representing the vector of the shaft axis of the club 412 is found to be (10, 20, 30)−(0, 0, 0)=(10, 20, 30).
If a plane on the face of the club 412 is defined by points A=(2, 2, 3), B=(1, 0, 1), and C=(−1, 3, 4), the coordinates of the normal vector to the plane, represented by the variable F, may be calculated as follows:
AB×AC=F
((1,0,1)−(2,2,3))×((−1,3,4)−(1,0,1))=F
(−1,−2,−2)×(−2,3,3)=F
(0,7,−7)=F
Therefore, the coordinates of the vector normal to the chosen points on the face of the club 412 is (0,7,−7).
Finally, if the ratio of coordinates used as input to find the lie is 0.88, then the lie may be arctan(0.88) which is equal to 0.73 radians, which is approximately 41.63 degrees. Likewise, if the ratio of coordinates used as input to find the loft is 0.45, then the loft may be arctan(0.45), which is equal to 0.42 radians, which is approximately 24.23 degrees.
The system 100 may further be implemented to improve gripping during the manufacturing of golf clubs or other clubs, bats, or hockey sticks used as sporting equipment. Currently, club gripping may often be performed using the human eye. This method results in different grippers producing inconsistent products. By applying the system 100 not only to the loft/lie process but also to the gripping process, assembly time may be reduced and consistency between products may substantially increase. Other golf-related applications are contemplated.
In some embodiments, one further application of the system 100 may be in the field of construction. Specifically the system 100 may be implemented by framers to calculate the angle of one stud with respect to another stud and to calculate the distance between studs to ensure more consistent spacing between studs and to ensure that the studs are level with one another. For a typical framer who must often frame hundreds of houses in a short period of time, the speed at which the system 100 may calculate the angle and distance between separate studs could result in significant savings in labor time and costs. The system 100 may also serve to reduce labor time and costs when applied to robotics during manufacturing processes. Fiducials 180 may be placed or aligned on components so that a robot in a manufacturing environment may pick up a sheet of material or finished part and use input provided by the fiducial to properly orient the sheet of material or finished part for assembly or another task. In this application, the fiducials 108 may contain a QR code defining an identifier associated with a set of instructions instructing the robot on how to properly orient the associated sheet of material or finished part.
As another example, utilizing the system 100, the angle between a gun barrel or arrow shaft and a flat target placed some pre-determined distance away may be computed. In this manner, gun/archery enthusiasts may benefit from having the ability to better align their weapon. As another example, the angle between a paint gun and a chosen surface may be computed. Because auto manufacturers use robot arms to paint car bodies, this may enable the manufacturers to have closed-loop feedback for the spray angle between the paint gun and the car body surface. In addition, the disclosed computer vision may be suitable for detecting voids in the opaque paint layer of a car body. As another example, the angle and distance between a landing gear on a strut of a helicopter or airplane and an approaching landing pad or runaway may be calculated. This may provide closed-loop automatic control during landing to safeguard passengers, and could be used to provide warning if the landing pad or runaway is tilted (e.g. landing a helicopter on a cruise ship during stormy weather when the deck of the ship is akimbo).
Further, the system 100 may also be used for data acquisition in motorsports. The fiducials 180 in the form of stickers or otherwise may be placed on key parts of a vehicle. The fiducials 180 may be scanned by a camera in communication with the system 100. The system 100 may then use as input any identifiers associated with the fiducials 180 to analyze vital measurements and determine if a car is conforming to the rules and regulations associated with its respective motorsport. The system 100 may use the inputs to analyze, among other things, the vehicles dynamic suspension angles. The system 100 may further record the suspension travel around a variety of cornering scenarios. With respect to any of the above possible applications of the system 100, the fiducials 108 may be replaced in whole or in part by real features present along the device or object analyzed, and changes to the position, orientation, and other attributes of the real features may be interpreted using the camera 106 or otherwise, as described herein.
Referring to
In general, the camera 106 may be used to generate calibration image frames 452 associated with a ‘Scene Calibration’ module 454, in order to assess pre-calibrated 3D positions (456) of the fiducials 108. The fiducials 108 may then be deployed along predetermined locations of the golf club 510, image frames 458 of the golf club 510 may be generated, and a ‘Fiducial Tracking’ module 460 and/or a ‘Real Feature Tracking’ module 464 may then be used (in tandem or separately) with the camera 106 to record or identify 2D image coordinates 462 or other 2D image features associated with the fiducials 108. Utilizing the 2D image coordinates 462 a ‘3D Position Estimation’ module 470 associated with the application 102 is configured to subsequently estimate or generate a set of three-dimensional (3D) points/coordinates 472 corresponding to the fiducials 108 and real features of the golf club 510. Once such 3D points 472 are created, a ‘Define Shaft Axis+Face Place Normal Vector’ module 474 may be implemented which is configured to apply a series of predetermined linear algebraic operations (represented as “Define Shaft Axis+Face Place Normal Vector” in 474) to the 3D points 472 in order to define the center axis of the golf club shaft, a plane parallel to the face of the golf club 510, and a normal vector to that plane 476. A ‘Loft+Lie Calculation’ module 478 may then utilize the aforementioned data to output a loft and lie in degrees associated with the golf club 510. In some embodiments, the loft and lie in degrees associated with the golf club 510 may further be checked against predetermined target specifications via a ‘Virtual Objects Superposition’ module 480 with reference to a database 482 of predefined virtual objects associated with golf clubs and golf club fitting.
More specifically, referring to the Scene Calibration module 454 of
Returning to
Once the scene calibration has been completed, the golf club 510 may then be prepared for deployment and measurement. Referring to
The golf dub head 512 includes a body 518 and a hosel 620, which has a cylindrical bore 522 for receiving one end of the golf dub shaft 514. The body 518 defines a heel end 524 spaced apart from a toe end 526. A sole (not shown in
Prior to generation of the image frames 458 of the golf club 510, the fiducials 108 (which may be the same fiducials used for scene calibration) can be placed, engaged, or otherwise positioned along distinct predetermined locations on the golf club 510 at any time or prior to being placed into the adjustment tool 114. Referring to
In other examples, the fiducials 108 can include any number (e.g., at least four fiducials, at least five fiducials, at least six fiducials, at least seven fiducials, at least eight fiducials, at least nine fiducials, at least 10 fiducials, at least 11 fiducials, at least 12 fiducials, or at least 13 fiducials). Increasing the amount of the fiducials 108 deployed may increase the accuracy of the application 102 to measure aspects of the golf club 510. Further, increasing the amount of the fiducials 108 can allow for the application 102 to measure other attributes such as the roll and bulge of the golf club. In some embodiments, the orientation of the fiducials 108 on the face plate 540 can be aligned with one edge of the fiducials 108 parallel with a plurality of grooves located on the face plate 540 of the golf club head 512. In other examples, the fiducials 108 on the face plate 540 are not required to be aligned with the plurality of grooves of the golf club head 512. The orientation of the fiducials 108 on the shaft 514 can be in any orientation, as long as there are at least two fiducials 108 located on the shaft 514.
In some embodiments, the fiducials 108 shown may be cut from the calibration sheet 202 and placed along the distinct predetermined locations of the golf club 510 shown. The fiducials 108 positioned along the golf club 510 may also be copied or duplicated from the calibration sheet 202. The fiducials 108 can be temporarily engaged to surfaces of the golf club 510 using tape, an adhesive, or by magnetic application. In examples with the fiducials scaled down, the fiducials 108 can embedded within a coating of the golf club 510, or manufactured such that the fiducials are integrated within or along the golf club 510. The fiducials 108 may further be placed onto the shaft 514 of the golf club 510 by adhering the fiducials 108 onto a flat surface that has an attachment mechanism (e.g. snap clamp) that attaches to the shaft 514. The fiducials 108 can further be placed onto the shaft 514 of the golf club head 512 by a magnet as well. The positions of the fiducial 108A, the fiducial 108B, and the fiducial 108C as shown are merely exemplary and may be re-positioned where different measurements of the golf club 510 are desired. In one embodiment, the fiducials 108 may be printed and measured prior to being applied or positioned along the golf club 510.
Referring to
Referring back to
The 3D Position Estimation module 470 may then be configured to import data produced in the previous modules of
Once the 3D points 472 are generated or otherwise determined, the ‘Define Shaft Axis+Face Plane Normal Vector’ module 474 may be implemented which is configured to apply a series of predetermined linear algebraic operations to the 3D points 472 in order to estimate the shaft axis, the face plane, and the normal vector (shown in 476). In one embodiment, the vector of the shaft axis (S in
S=(xi,yj,zk)−(x′,y′,z′),
where (x′,y′,z′) is defined as the origin of the local coordinate system. Three points, A, B, and C (shown in
A normal vector to that plane, F, can be computed as:
AB×AC=F,
where AB and AC are vectors pointing from A to point B and C, respectively.
Finally, the ‘Loft+Lie Calculation’ module 478 may be configured to calculate the lie of the club as:
and the loft as:
In this way, the application 102 is configured to calculate loft and lie (as vector projections) within a large range of club orientations and club positions relative to the camera 106. As an extra step, the application 102 may check the loft and lie measurements for validity against a 3D model of the target golf club (i.e. with prescribed loft and lie measurements), within the database 482 of virtual objects.
In other words, the application 102 is configured to implement the modules and functionality of
As shown in
Testing and Sample Results
As indicated in
Importantly, the methods described herein accommodate the efficient measurement of loft and lie of the golf club 510 and can be accomplished without tools or fixturing. When utilizing the fixation tool 114, aspects of the system 100 may be implemented as a mobile app or computer program, to measure the attributes of the golf club 510 without removing the golf club 510 from the adjustment tool 114. The camera 106 can continuously or at intervals feed the application 102 with image data during scene calibration and measurement, without undesired removal and re-engagement of the golf club 510 to the adjustment tool 114.
In other embodiments, intrinsic features of the golf club 510 may be used for measurement and self-calibration (i.e. spacing of the grooves and diameters of the shaft 514 at the tip and grip of the golf club 510, not shown). In other embodiments, multiple camera/detectors using imaging techniques for high resolution point clouds or meshes may be implemented. All of these techniques may be utilized for both desktop and mobile implementations of the system 100 described herein.
Exemplary Computing Components
Main memory 704 can be Random Access Memory (RAM) or any other dynamic storage device(s) commonly known in the art. Read-only memory 706 can be any static storage device(s) such as Programmable Read-Only Memory (PROM) chips for storing static information such as instructions for processor 702. Mass storage device 707 can be used to store information and instructions. For example, hard disks such as the Adaptec® family of Small Computer Serial Interface (SCSI) drives, an optical disc, an array of disks such as Redundant Array of Independent Disks (RAID), such as the Adaptec® family of RAID drives, or any other mass storage devices, may be used.
Bus 701 communicatively couples processor(s) 702 with the other memory, storage, and communications blocks. Bus 701 can be a PCI/PCI-X, SCSI, or Universal Serial Bus (USB) based system bus (or other) depending on the storage devices used. Removable storage media 705 can be any kind of external hard drives, thumb drives, Compact Disc-Read Only Memory (CD-ROM), Compact Disc-Re-Writable (CD-RW), Digital Video Disk-Read Only Memory (DVD-ROM), etc.
Embodiments herein may be provided as a computer program product, which may include a machine-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process. The machine-readable medium may include, but is not limited to optical discs, CD-ROMs, magneto-optical disks, ROMs, RAMs, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, flash memory, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, embodiments herein may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer to a requesting computer by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., modem or network connection).
As shown, main memory 704 may be encoded with the application 102 that supports functionality discussed above. In other words, aspects of the application 102 (and/or other resources as described herein) can be embodied as software code such as data and/or logic instructions (e.g., code stored in the memory or on another computer readable medium such as a disk) that supports processing functionality according to different embodiments described herein. During operation of one embodiment, processor(s) 702 accesses main memory 704 via the use of bus 701 in order to launch, run, execute, interpret, or otherwise perform processes, such as through logic instructions, executing on the processor 702 and based on the application 102 stored in main memory or otherwise tangibly stored.
The description above includes example systems, methods, techniques, instruction sequences, and/or computer program products that embody techniques of the present disclosure. However, it is understood that the described disclosure may be practiced without these specific details. In the present disclosure, the methods disclosed may be implemented as sets of instructions or software readable by a device. Further, it is understood that the specific order or hierarchy of steps in the methods disclosed are instances of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the disclosed subject matter. The accompanying method claims present elements of the various steps in a sample order, and are not necessarily meant to be limited to the specific order or hierarchy presented.
The described disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to optical storage medium (e.g., CD-ROM); magneto-optical storage medium, read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions.
Certain embodiments are described herein as including one or more modules. Such modules are hardware-implemented, and thus include at least one tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. For example, a hardware-implemented module may include dedicated circuitry that is permanently configured (e.g., as a special-purpose processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware-implemented module may also include programmable circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software or firmware to perform certain operations. In some example embodiments, one or more computer systems (e.g., a standalone system, a client and/or server computer system, or a peer-to-peer computer system) or one or more processors may be configured by software (e.g., an application or application portion) as a hardware-implemented module that operates to perform certain operations as described herein.
Accordingly, the term “hardware-implemented module” or “module” encompasses a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware-implemented modules are temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one instance in time. For example, where the hardware-implemented modules include a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware-implemented modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware-implemented module at one instance of time and to constitute a different hardware-implemented module at a different instance of time.
Hardware-implemented modules may provide information to, and/or receive information from, other hardware-implemented modules. Accordingly, the described hardware-implemented modules may be regarded as being communicatively coupled. Where multiple of such hardware-implemented modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware-implemented modules. In embodiments in which multiple hardware-implemented modules are configured or instantiated at different times, communications between such hardware-implemented modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware-implemented modules have access. For example, one hardware-implemented module may perform an operation, and may store the output of that operation in a memory device to which it is communicatively coupled. A further hardware-implemented module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware-implemented modules may also initiate communications with input or output devices.
It is believed that the present disclosure and many of its attendant advantages should be understood by the foregoing description, and it should be apparent that various changes may be made in the form, construction, and arrangement of the components without departing from the disclosed subject matter or without sacrificing all of its material advantages. The form described is merely explanatory, and it is the intention of the following claims to encompass and include such changes.
While the present disclosure has been described with reference to various embodiments, it should be understood that these embodiments are illustrative and that the scope of the disclosure is not limited to them. Many variations, modifications, additions, and improvements are possible. More generally, embodiments in accordance with the present disclosure have been described in the context of particular implementations. Functionality may be separated or combined in blocks differently in various embodiments of the disclosure or described with different terminology. These and other variations, modifications, additions, and improvements may fall within the scope of the disclosure as defined in the claims that follow.
Clause 1: A system for measuring attributes of a golf club, comprising: a camera configured to capture images of the golf club and a plurality of fiducials; and a computing device in operable communication with the camera, the computing device configured to: access a first set of pixels associated with each of the plurality of fiducials of a first image to calibrate a spatial resolution of the camera, access a second image from the camera, the second image including a golf club with the plurality of fiducials positioned along predetermined locations of the golf club, convert the second image to a second set of pixels associated with each of the plurality of fiducials, generate a set of points corresponding to the plurality of fiducials, the set of points defining estimated three-dimensional features of the plurality of fiducials in the second image based on comparisons between the first set of pixels and the second set of pixels, apply the set of points to a series of predetermined functions to generate club characteristics data defining a center axis of a shaft of the golf club, a plane parallel to a face of the golf club, and a normal vector to the plane, and output measurements including a loft angle and a lie angle associated with the golf club based upon the club characteristics data.
Clause 2: The system of clause 1, wherein the plurality of fiducials comprise discrete fiducials removable from the golf club.
Clause 3: The system of clause 2, wherein the discrete fiducials comprise a set of 2D quick response (QR) codes.
Clause 4: The system of clause 1, wherein the plurality or fiducials comprise natural preselected features of the golf club.
Clause 5: The system of clause 1, wherein calibration of the spatial resolution of the camera comprises: providing a sheet, the plurality of fiducials defined as an array along a side of the sheet, positioning the sheet in front of the camera such that the side of the sheet is oriented towards a lens of the camera, and changing a position and orientation of the sheet relative to the camera while capturing one or more images to generate calibration data, wherein the calibration data is utilized by the computing device to determine the set of points corresponding to the plurality of fiducials.
Clause 6: The system of clause 5, wherein the sheet is used as a reference to compute an initial pose of the camera.
Clause 7: The system of clause 1, wherein the second set of pixels are a portion of a pixel array defining an entirety of the second image, wherein the second set of pixels define positions and dimensions specific to the plurality of fiducials in the second image, and further define an array of integers.
Clause 8: The system of clause 1, wherein the computing device utilizes a recursive filter to generate the set of points based on a pose of the camera and the second set of pixels.
Clause 9: The system of clause 1, wherein a portion of the plurality of fiducials are assigned to the face of the golf club, and a second portion of the plurality of fiducials are assigned to the shaft of the golf club.
Clause 10: The system of clause 1, wherein the set of predetermined functions comprises: a series of one or predetermined linear algebraic operations comprising: a three dimensional (3D)I function, the 3D function including an input comprising a set of coordinates representing an origin of a local coordinate system and a second of coordinates representing a predetermined location along the golf club, the 3D function configured to generate an output comprising a third set of coordinates representing a vector of a shaft axis of the golf club; a first function which performs a cross product operation on a first function input, the first function input comprising a set of points defining a plane on a face of the golf club, the first function configured to generate a first function output defining a normal vector to the plane; a second function including a second function input that comprises a ratio of vectors, the second function configured to generate a second function output defining an angle representing a lie of the golf club; and a third function including a third function input that comprises a ratio of vectors, the third function configured to generate a third function output defining an angle representing a loft of the golf club.
Clause 11: A method, comprising: providing a processor in operable communication with a camera component, the processor configured for: accessing a first image from the camera component, the first image including a plurality of fiducials; converting the first image to a first plurality of picture elements associated with each of the plurality of fiducials; accessing a second image from the camera component, the second image including the plurality of fiducials positioned along predetermined locations of a golf club; converting the second image to a second plurality of picture elements associated with each of the plurality of fiducials; generating a set of points defining virtual three-dimensional aspects of the plurality of fiducials based on differences between the first and the second plurality of picture elements; applying the set of points as inputs to a series of predefined linear algebraic operations to generate golf club characteristics data; and generating output measurements defining a loft angle and a lie angle associated with the golf club based on the golf club characteristics data.
Clause 12: The method of clause 11, wherein the camera component comprises one or more cameras.
Clause 13: The method of clause 11, wherein the first plurality of picture elements and the second plurality of picture elements comprise pixels represented as a two-dimensional array of integers.
Clause 14: The method of clause 11, further comprising utilizing the camera component to continuously track the plurality of fiducials while the golf club is positioned within an image frame associated with the camera component.
Clause 15: The method of clause 11, further comprising: engaging the golf club to a pneumatic vice of an adjustment fixture to position the golf club within a clear line of sight of the camera component.
Clause 16: The method of clause 11, further comprising positioning the camera component in a predetermined location relative to the plurality of fiducials prior to a calibration step.
Clause 17: The method of clause 11, wherein the plurality of fiducials comprises features of the golf club including grooves, a logo, and a face of the golf club.
Clause 18: The method of clause 11, wherein a first fiducial and a second fiducial of the plurality of fiducials are defined along a bottom groove of the golf club and a third fiducial of the plurality of fiducials is defined along a face of the golf club.
Clause 19: An apparatus, comprising: a camera; and a computing device, the computing device configured to access a plurality of picture elements associated with a plurality of fiducials from a first image generated by the camera, identify a series of changes to the plurality of picture elements from a second image depicting the plurality of fiducials positioned along a golf club, generate a set of 3D points based on the series of changes to the plurality of picture elements associated with the plurality of fiducials, apply the 3D set of points as inputs to one or more predefined linear algebra operations to generate golf club characteristics data, and output measurements defining a loft angle and a lie angle associated with the golf club based on the golf club characteristics data.
Clause 20: The apparatus of clause 19, wherein the golf club characteristics data a center axis of a shaft of the golf club, a plane parallel to a face of the golf club, and a normal vector to the plane, and wherein the output measurements are checked against predetermined target specifications associated with the golf club.
Clause 21: The apparatus of clause 19, wherein the plurality of picture elements associated with the plurality of fiducials comprises pixels of a two-dimensional image, and the series of changes to the picture elements associated with the plurality of fiducials includes changes to the pixels reflected by the second image.
Clause 22: An apparatus, comprising: a camera; and a computing device, the computing device configured to access a plurality of two-dimensional image features associated with a plurality of fiducials from a first image generated by the camera, identify changes in position and rotation of the plurality of fiducials based on one or more changes to the plurality of two-dimensional picture features as observed via a second image depicting the plurality of fiducials positioned along a mechanical device, generate a set of 3D points based on the one or more changes to the plurality of two-dimensional picture features associated with the plurality of fiducials, apply the 3D set of points as inputs to one or more predefined linear algebraic operations to generate physical attributes data associated with the mechanical device, and output performance measurements associated with the mechanical device based on the physical attributes data.
Clause 23: The apparatus of clause 22, wherein the plurality of fiducials comprises discrete QR codes positioned along predetermined locations of the mechanical device.
Clause 24: The apparatus of clause 22, wherein the plurality of fiducials comprises natural or real features associated with predetermined locations of the mechanical device.
This is a continuation of U.S. patent application Ser. No. 16/439,550, filed on Jun. 12, 2019, now U.S. Pat. No. 11,475,599, issued on Oct. 18, 2022, which claims benefit to U.S. provisional patent application Ser. No. 62/684,119 filed on Jun. 12, 2018, which is incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5772522 | Nesbit | Jun 1998 | A |
6482101 | Posma | Nov 2002 | B1 |
6506124 | Manwaring | Jan 2003 | B1 |
6871414 | Burney et al. | Mar 2005 | B2 |
6993970 | Weiss et al. | Feb 2006 | B2 |
7263866 | Mondher Latiri | Sep 2007 | B2 |
7277599 | Eian | Oct 2007 | B2 |
7542130 | Saegusa | Jun 2009 | B2 |
7744480 | Gobush | Jun 2010 | B2 |
7955188 | Bennett et al. | Jun 2011 | B2 |
8142300 | Iwatsubo et al. | Mar 2012 | B2 |
8294958 | Paterson et al. | Oct 2012 | B2 |
8409024 | Marty | Apr 2013 | B2 |
8556267 | Gobush | Oct 2013 | B2 |
8708833 | Ueda | Apr 2014 | B2 |
8758151 | Kimizuka | Jun 2014 | B2 |
8872914 | Gobush | Oct 2014 | B2 |
8951138 | Kiraly | Feb 2015 | B2 |
9155943 | Seluga | Oct 2015 | B2 |
9182487 | Troy et al. | Nov 2015 | B2 |
9339707 | Jeffery | May 2016 | B2 |
9427633 | Oldknow et al. | Aug 2016 | B2 |
9452323 | Kronenberg et al. | Sep 2016 | B2 |
9682319 | Zalewski | Jun 2017 | B2 |
10343041 | Arch | Jul 2019 | B2 |
10423945 | Long | Sep 2019 | B2 |
10881937 | Iwamoto | Jan 2021 | B2 |
20030008731 | Anderson | Jan 2003 | A1 |
20040209698 | Ueda | Oct 2004 | A1 |
20050085309 | McGann | Apr 2005 | A1 |
20090069908 | Butler, Jr. | Mar 2009 | A1 |
20100093458 | Davenport et al. | Apr 2010 | A1 |
20130190098 | Kiraly | Jul 2013 | A1 |
20140185867 | Ishikawa | Jul 2014 | A1 |
20140315654 | Seluga | Oct 2014 | A1 |
20150038249 | Takao | Feb 2015 | A1 |
20150073646 | Rosenstein | Mar 2015 | A1 |
20160151696 | Chen | Jun 2016 | A1 |
20160310820 | Kline | Oct 2016 | A1 |
20170007902 | Cottam | Jan 2017 | A1 |
Number | Date | Country |
---|---|---|
H09101125 | Apr 1997 | JP |
H10337344 | Dec 1998 | JP |
2011240016 | Dec 2011 | JP |
2015009008 | Jan 2015 | JP |
2018050884 | Apr 2018 | JP |
2014061707 | Apr 2014 | WO |
Entry |
---|
Jun Park, Suya You, and Ulrich Neumann, “Extending augmented reality with natural feature tracking”, Proc. SPIE 3524, Telemanipulator and Telepresence Technologies V, (Dec. 18, 1998); https://doi.org/10.1117/12.333674. |
International Search Report/Written Opinion for Int'l Patent Application No. PCT/US2019/036839, filed on Aug. 22, 2019. |
Number | Date | Country | |
---|---|---|---|
20230066820 A1 | Mar 2023 | US |
Number | Date | Country | |
---|---|---|---|
62684119 | Jun 2018 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16439550 | Jun 2019 | US |
Child | 18047576 | US |