Method and device for automatically debugging a positioner
By receiving the dimension values and configuration table of the locator unit, and automatically configuring and updating the rotation angle of the locator unit, the problem of wrong configuration of the rotation angle of the locator unit is solved, and the accuracy of object position determination and the accuracy of the RTLS system are improved.
Patent Information
- Application Number
- CN202210617515.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-07-27
- Filing Date
- 2022-06-01
- Publication Date
- 2025-08-12
- Estimated Expiration
- 2042-06-01
AI Technical Summary
In the existing indoor positioning technology, the rotation angle configuration of the positioner unit is usually performed manually, which is prone to errors and difficult to update in real time, resulting in inaccurate determination of the object position.
By receiving the dimension values and configuration table of the locator unit, the rotation angle of the locator unit is automatically configured and updated, the inertial measurement unit and antenna array elements are used to detect the object signal, and the object position is determined in combination with mathematical operations.
Real-time and accurate configuration of the rotation angle of the positioning unit is realized, the accuracy and consistency of object position determination is improved, and the accuracy of the RTLS system is ensured.
Smart Images

Figure CN115469266B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to Indian Provisional Patent Application No. 202111026023 (filed on June 11, 2021), which is incorporated herein by reference in its entirety. Background Art
[0003] Indoor positioning technology solutions can be used for various applications, such as asset tracking, navigation, logical fencing, etc. Indoor positioning technology solutions (such as real-time location systems (RTLS)) can utilize locator units that can transmit and / or receive various signals, such as Bluetooth (BT), ultra-wideband (UWB), narrowband Internet of Things (NB-IoT), cellular, etc. to determine the location of one or more objects. Such locator units can be deployed throughout a location and used to detect the angle of arrival (AoA), angle of departure (AoD), or both (AoX) of signals from objects in the environment, which can ultimately be used to determine the location of the objects in the environment. RTLS systems can be used in a variety of environments, such as healthcare facilities, retail facilities, e-commerce facilities, etc. Summary of the Invention
[0004] Various embodiments described herein relate to methods, apparatus, and systems for automatically commissioning a locator in various environments.
[0005] According to various examples of the present disclosure, a method, apparatus, and computer program product for automatically configuring one or more rotation angles of one or more associated locator units is disclosed. In this regard, the method, apparatus, and computer program product are configured to determine one or more rotation angles of one or more associated locator units based at least in part on one or more received dimension values of the one or more locator units and a configuration table associated with the locator unit type. The one or more rotation angles of the one or more locator units can be used, at least in part, to determine the position of one or more objects in an environment.
[0006] In an example embodiment, a method is provided that includes receiving one or more dimensional values related to an orientation of the one or more locator units from one or more locator units. The method also includes determining one or more rotation angles for each of the one or more locator units based at least in part on the one or more received dimensional values for each of the one or more locator units and a configuration table related to the type of locator unit. The method also includes storing the one or more rotation angles for each of the one or more locator units in an associated memory. The method also includes determining a position of one or more objects in an environment based at least on the one or more rotation angles for each of the one or more locator units.
[0007] In some example embodiments, a method includes receiving one or more dimension values related to the orientation of the one or more locator units from the one or more locator units in response to a change in the orientation of the one or more locator units. The method may also include updating one or more rotation angles of each of the one or more locator units based at least in part on the one or more received dimension values of the one or more locator units and a configuration table associated with the locator unit type. The method may also include storing the one or more rotation angles of each of the one or more locator units in an associated memory.
[0008] In some embodiments, the one or more dimensional values associated with the orientation of the one or more localizer units correspond to roll values, pitch values, and yaw values. In some embodiments, a configuration table associated with a localizer unit type provides one or more corresponding rotation angles for a particular roll value, pitch value, and yaw value.
[0009] In some embodiments, determining one or more rotation angles of one or more locator units includes comparing one or more received dimension values for each of the one or more locator units with one or more dimension values corresponding to one or more rotation angles in a configuration table associated with the locator unit type.
[0010] In some embodiments, determining one or more rotation angles for one or more locator units includes applying one or more mathematical operations using one or more values based at least in part on one or more received dimension values for each locator unit and one or more rotation angles in a configuration table associated with the locator unit type.
[0011] In some embodiments, the method further includes receiving one or more signals from the one or more locator units indicating that the one or more locator units have detected one or more objects in the environment. The method may also include determining a location of the one or more objects within the environment based at least in part on one or more rotation angles of each of the one or more locator units that received the one or more signals from the objects.
[0012] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more locator units and each of the one or more objects.
[0013] In some embodiments, one or more dimension values related to the orientation of the one or more locator units are received if a change in the orientation of the one or more locator units satisfies one or more predefined dimension thresholds.
[0014] In some embodiments, the method further comprises stopping one or more locator procedures involving the one or more locator units for which one or more dimension values related to an orientation of the one or more locator units have been received. The method may further comprise resuming the one or more locator procedures involving the one or more locator units after the one or more rotation angles for each of the one or more locator units have been determined.
[0015] In an example embodiment, a device is provided that includes at least one processing component configured to receive one or more dimensional values related to the orientation of the one or more locator units from one or more locator units. The device is further configured to determine one or more rotation angles for each of the one or more locator units based at least in part on the one or more received dimensional values for each of the one or more locator units and a configuration table related to the type of locator unit. The device is further configured to store the one or more rotation angles for each of the one or more locator units in an associated memory. The device is further configured to determine the position of one or more objects in an environment based at least on the one or more rotation angles for each of the one or more locator units.
[0016] In some embodiments, the apparatus is configured to receive one or more dimension values related to the orientation of the one or more locator units from the one or more locator units in response to a change in the orientation of the one or more locator units. In some embodiments, the apparatus is further configured to update one or more rotation angles of each of the one or more locator units based at least in part on the one or more received dimension values of the one or more locator units and a configuration table associated with the locator unit type. In some embodiments, the apparatus is further configured to store the one or more rotation angles of each of the one or more locator units in an associated memory.
[0017] In some embodiments, the one or more dimensional values associated with the orientation of the one or more localizer units correspond to roll values, pitch values, and yaw values. In some embodiments, a configuration table associated with a localizer unit type provides one or more corresponding rotation angles for a particular roll value, pitch value, and yaw value.
[0018] In some embodiments, determining one or more rotation angles of one or more locator units includes comparing one or more received dimension values for each of the one or more locator units with one or more dimension values corresponding to one or more rotation angles in a configuration table associated with the locator unit type.
[0019] In some embodiments, determining one or more rotation angles for one or more locator units includes applying one or more mathematical operations using one or more values based at least in part on one or more received dimension values for each locator unit and one or more rotation angles in a configuration table associated with the locator unit type.
[0020] In some embodiments, the apparatus is configured to receive one or more signals from one or more locator units indicating that the one or more locator units have detected one or more objects in the environment. In some embodiments, the apparatus is further configured to determine a location of the one or more objects within the environment based at least in part on one or more rotation angles of each of the one or more locator units that received the one or more signals from the objects.
[0021] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more locator units and each of the one or more objects.
[0022] In some embodiments, one or more dimension values related to the orientation of the one or more locator units are received if a change in the orientation of the one or more locator units satisfies one or more predefined dimension thresholds.
[0023] In some embodiments, the apparatus is further configured to stop one or more locator procedures involving the one or more locator units whose one or more dimension values related to the orientation of the one or more locator units have been received. In some embodiments, the apparatus is further configured to resume the one or more locator procedures involving the one or more locator units after the one or more rotation angles of each of the one or more locator units have been determined.
[0024] In an example embodiment, a computer program product includes at least one non-transitory computer-readable storage medium having computer-executable program code instructions therein, the computer-executable program code instructions including program code instructions that, when executed, are configured to receive one or more dimension values related to the orientation of the one or more locator units from one or more locator units. The program code instructions may be configured to determine one or more rotation angles of each of the one or more locator units based at least in part on the one or more received dimension values of each of the one or more locator units and a configuration table related to the locator unit type. The program code instructions may be configured to store the one or more rotation angles of each of the one or more locator units in an associated memory. The program code instructions may be configured to determine the position of one or more objects in an environment based at least on the one or more rotation angles of each of the one or more locator units.
[0025] In some embodiments, the program code instructions may be configured to receive one or more dimension values related to the orientation of the one or more locator units from the one or more locator units in response to a change in the orientation of the one or more locator units. In some embodiments, the program code instructions may be configured to update one or more rotation angles of each of the one or more locator units based at least in part on the one or more received dimension values of the one or more locator units and a configuration table associated with the locator unit type. The program code instructions may be configured to store the one or more rotation angles of each of the one or more locator units in an associated memory.
[0026] In some embodiments, the one or more dimensional values associated with the orientation of the one or more localizer units correspond to roll values, pitch values, and yaw values. In some embodiments, a configuration table associated with a localizer unit type provides one or more corresponding rotation angles for a particular roll value, pitch value, and yaw value.
[0027] In some embodiments, determining one or more rotation angles of one or more locator units includes comparing one or more received dimension values for each of the one or more locator units with one or more dimension values corresponding to one or more rotation angles in a configuration table associated with the locator unit type.
[0028] In some embodiments, determining one or more rotation angles for one or more locator units includes applying one or more mathematical operations using one or more values based at least in part on one or more received dimension values for each locator unit and one or more rotation angles in a configuration table associated with the locator unit type.
[0029] In some embodiments, the program code instructions may be configured to receive one or more signals from one or more locator units indicating that the one or more locator units have detected one or more objects in the environment. In some embodiments, the program code instructions may be configured to determine a location of the one or more objects within the environment based at least in part on one or more rotation angles of each of the one or more locator units that received the one or more signals from the objects.
[0030] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more locator units and each of the one or more objects.
[0031] In some embodiments, one or more dimension values related to the orientation of the one or more locator units are received if a change in the orientation of the one or more locator units satisfies one or more predefined dimension thresholds.
[0032] In some embodiments, the program code instructions may be configured to stop one or more locator procedures involving one or more locator units whose one or more dimension values related to the orientation of the one or more locator units have been received. In some embodiments, the program code instructions may be configured to resume one or more locator procedures involving the one or more locator units after one or more rotation angles of each of the one or more locator units have been determined.
[0033] In an example embodiment, an apparatus is provided that includes means for receiving one or more dimensional values related to an orientation of the one or more locator units from one or more locator units. The apparatus further includes means for determining one or more rotation angles for each of the one or more locator units based at least in part on the one or more received dimensional values for each of the one or more locator units and a configuration table associated with a type of locator unit. The apparatus further includes means for storing the one or more rotation angles for each of the one or more locator units in an associated memory. The apparatus includes means for determining a position of one or more objects in an environment based at least on the one or more rotation angles for each of the one or more locator units.
[0034] In some embodiments, the apparatus includes means for receiving one or more dimension values related to the orientation of the one or more locator units from the one or more locator units in response to a change in the orientation of the one or more locator units. In some embodiments, the apparatus includes means for updating one or more rotation angles of each of the one or more locator units based at least in part on the one or more received dimension values of the one or more locator units and a configuration table associated with the locator unit type. In some embodiments, the apparatus includes means for storing the one or more rotation angles of each of the one or more locator units in an associated memory.
[0035] In some embodiments, the one or more dimensional values associated with the orientation of the one or more localizer units correspond to roll values, pitch values, and yaw values. In some embodiments, a configuration table associated with a localizer unit type provides one or more corresponding rotation angles for a particular roll value, pitch value, and yaw value.
[0036] In some embodiments, determining one or more rotation angles of one or more locator units includes comparing one or more received dimension values for each of the one or more locator units with one or more dimension values corresponding to one or more rotation angles in a configuration table associated with the locator unit type.
[0037] In some embodiments, the apparatus includes means for receiving one or more signals from one or more locator units indicating that the one or more locator units have detected one or more objects in the environment. In some embodiments, the apparatus includes means for determining a location of the one or more objects within the environment based at least in part on one or more rotation angles of each of the one or more locator units that received the one or more signals from the objects.
[0038] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more locator units and each of the one or more objects.
[0039] In some embodiments, one or more dimension values related to the orientation of the one or more locator units are received if a change in the orientation of the one or more locator units satisfies one or more predefined dimension thresholds.
[0040] In some embodiments, the apparatus includes means for stopping one or more locator procedures involving one or more locator units whose one or more dimension values related to an orientation of the one or more locator units have been received. In some embodiments, the apparatus includes means for resuming one or more locator procedures involving the one or more locator units after one or more rotation angles of each of the one or more locator units have been determined.
[0041] In an example embodiment, a method is provided that includes determining one or more dimensional values related to an orientation of a device by utilizing an inertial measurement unit. The method also includes causing transmission of data including the one or more dimensional values to be provided to a computing entity. The method also includes causing transmission of data including one or more signals to be provided to the computing entity, the one or more signals indicating that one or more objects have been detected in an environment.
[0042] In some embodiments, the method further comprises detecting a change in one or more dimensional values related to the orientation of the device by utilizing an inertial measurement unit. In some embodiments, the method further comprises determining whether the change in the one or more dimensional values satisfies one or more dimensional thresholds. In some embodiments, the method further comprises causing transmission of data comprising the one or more dimensional values to be provided to the computing entity if the one or more dimensional values satisfies the one or more dimensional thresholds.
[0043] In some embodiments, the method further comprises detecting one or more signals from one or more objects in the environment by utilizing one or more antenna array elements, wherein the one or more objects are configured to transmit the one or more signals and the one or more antenna array elements are configured to receive the one or more signals. In some embodiments, the method further comprises causing transmission of data comprising the one or more signals received by the one or more antenna array elements from the one or more objects to be provided to the computing device.
[0044] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more antenna array elements and each of the one or more objects. In some embodiments, the one or more dimensional values correspond to a roll value, a pitch value, and a yaw value. In some embodiments, the computing device operates in a cloud computing environment. In some embodiments, the inertial measurement unit includes a gyroscope, an accelerometer, and a magnetometer.
[0045] In an example embodiment, a device is provided, comprising: an inertial measurement unit; an antenna array comprising one or more antenna array elements; and at least one processing component. The processing component is configured to determine one or more dimensional values related to the orientation of the device by utilizing the inertial measurement unit. The processing component is configured to cause transmission of data comprising the one or more dimensional values to be provided to a computing entity. The processing component is configured to cause transmission of data comprising one or more signals to be provided to the computing entity, the one or more signals indicating that one or more objects have been detected in an environment.
[0046] In some embodiments, the processing component is further configured to detect a change in one or more dimension values related to the orientation of the device by utilizing an inertial measurement unit. In some embodiments, the processing component is configured to determine whether the change in the one or more dimension values satisfies one or more dimension thresholds. In some embodiments, the processing component is configured to cause transmission of data including the one or more dimension values to be provided to the computing entity if the one or more dimension values satisfies the one or more dimension thresholds.
[0047] In some embodiments, the processing component is configured to detect one or more signals from one or more objects in an environment by utilizing one or more antenna array elements, wherein the one or more objects are configured to transmit the one or more signals and the one or more antenna array elements are configured to receive the one or more signals. In some embodiments, the processing component is configured to cause transmission of data comprising the one or more signals received by the one or more antenna array elements from the one or more objects to be provided to the computing device.
[0048] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more antenna array elements and each of the one or more objects. In some embodiments, the one or more dimensional values correspond to a roll value, a pitch value, and a yaw value. In some embodiments, the computing device operates in a cloud computing environment. In some embodiments, the inertial measurement unit includes a gyroscope, an accelerometer, and a magnetometer.
[0049] In an example embodiment, a computer program product includes at least one non-transitory computer-readable storage medium having computer-executable program code instructions therein, the computer-executable program code instructions including program code instructions that, when executed, are configured to determine one or more dimensional values related to an orientation of a device by utilizing an inertial measurement unit. The program code instructions may be configured to cause transmission of data including the one or more dimensional values to be provided to a computing entity. The program code instructions may be configured to cause transmission of data including one or more signals to be provided to the computing entity, the one or more signals indicating that one or more objects have been detected in an environment.
[0050] In some embodiments, the program code instructions may be configured to detect a change in one or more dimensional values related to the orientation of the device by utilizing an inertial measurement unit. In some embodiments, the program code instructions may be configured to determine whether the change in one or more dimensional values meets one or more dimensional thresholds. In some embodiments, the program code instructions may be configured to cause the transmission of data including the one or more dimensional values to be provided to the computing entity if the one or more dimensional values meet the one or more dimensional thresholds.
[0051] In some embodiments, the program code instructions may be configured to detect one or more signals from one or more objects in an environment by utilizing one or more antenna array elements, wherein the one or more objects are configured to transmit the one or more signals and the one or more antenna array elements are configured to receive the one or more signals. In some embodiments, the program code instructions may be configured to cause transmission of data comprising the one or more signals received by the one or more antenna array elements from the one or more objects to be provided to a computing device.
[0052] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more antenna array elements and each of the one or more objects. In some embodiments, the one or more dimensional values correspond to a roll value, a pitch value, and a yaw value. In some embodiments, the computing device operates in a cloud computing environment. In some embodiments, the inertial measurement unit includes a gyroscope, an accelerometer, and a magnetometer.
[0053] In an example embodiment, a device is provided that includes means for determining one or more dimensional values related to an orientation of the device by utilizing an inertial measurement unit. The device also includes means for causing transmission of data including the one or more dimensional values to be provided to a computing entity. The device also includes means for causing transmission of data including one or more signals to be provided to the computing entity, the one or more signals indicating that one or more objects have been detected in an environment.
[0054] In some embodiments, the device further comprises means for detecting a change in one or more dimensional values related to the orientation of the device by utilizing an inertial measurement unit. In some embodiments, the device further comprises means for determining whether the change in one or more dimensional values satisfies one or more dimensional thresholds. In some embodiments, the device further comprises means for causing transmission of data comprising the one or more dimensional values to be provided to the computing entity if the one or more dimensional values satisfies the one or more dimensional thresholds.
[0055] In some embodiments, the apparatus further comprises means for detecting one or more signals from one or more objects in the environment by utilizing one or more antenna array elements, wherein the one or more objects are configured to transmit the one or more signals and the one or more antenna array elements are configured to receive the one or more signals. In some embodiments, the apparatus further comprises means for causing transmission of data comprising the one or more signals received by the one or more antenna array elements from the one or more objects to be provided to a computing device.
[0056] In some embodiments, the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more antenna array elements and each of the one or more objects. In some embodiments, the one or more dimensional values correspond to a roll value, a pitch value, and a yaw value. In some embodiments, the computing device operates in a cloud computing environment. In some embodiments, the inertial measurement unit includes a gyroscope, an accelerometer, and a magnetometer. BRIEF DESCRIPTION OF THE DRAWINGS
[0057] The description of the exemplary embodiments may be read in conjunction with the accompanying drawings. It will be understood that, for simplicity and clarity of illustration, the elements shown in the figures are not necessarily drawn to scale unless otherwise described. For example, the dimensions of some of the elements may be exaggerated relative to other elements unless otherwise described. Embodiments incorporating the teachings of the present disclosure are shown and described with respect to the drawings presented herein, in which:
[0058] Figures 1A to 1E A real-time location system according to various embodiments of the present disclosure is shown;
[0059] Figure 2 shows example devices according to various embodiments of the present disclosure;
[0060] Figure 3 shows example devices according to various embodiments of the present disclosure;
[0061] Figure 4is a flowchart representing an example procedure for determining the position of one or more objects in an environment according to various embodiments of the present disclosure;
[0062] Figure 5 Provides examples of the operation of configuration tables according to some embodiments of the present disclosure;
[0063] Figure 6 is a flow chart representing an example procedure for updating one or more rotation angles of one or more locator units according to various embodiments of the present disclosure;
[0064] Figure 7 is a flow diagram representing an example procedure for managing one or more locator programs according to various embodiments of the present disclosure.
[0065] Figure 8 is a flow chart representing an example procedure for determining the location of one or more objects in an environment based at least in part on one or more received signals according to various embodiments of the present disclosure;
[0066] Figure 9 is a flowchart representing an example procedure for providing one or more dimension values to a computing entity according to various embodiments of the present disclosure;
[0067] Figure 10 Logic illustrating example operations according to various embodiments of the present disclosure; and
[0068] Figure 11 is a flow chart illustrating an example procedure for providing one or more signals to a computing entity according to various embodiments of the present disclosure. DETAILED DESCRIPTION
[0069] Some embodiments of the present disclosure will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all, embodiments of the present disclosure are shown. Indeed, these disclosures may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Throughout, like reference numerals refer to like elements.
[0070] The components shown in the drawings represent components that may or may not be present in the various embodiments of the present disclosure described herein, such that an embodiment may include fewer or more components than those shown in the drawings without departing from the scope of the present disclosure. Some components may be omitted from one or more drawings or shown in phantom to make underlying components visible.
[0071] The phrases "in an example embodiment," "some embodiments," "various embodiments," etc. generally mean that the particular feature, structure, or characteristic following such phrase may be included in at least one embodiment of the present disclosure, and may be included in more than one embodiment of the present disclosure (importantly, such phrases are not necessarily referring to the same embodiment).
[0072] The word “example” or “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other implementations.
[0073] If the specification states that a component or feature "may," "can," "could," "should," "will," "preferably," "likely," "typically," "optionally," "for example," "usually," or "might" (or other such language) be included or have a property, that particular component or feature is not required to be included or have that property. Such components or features may optionally be included in some embodiments, or may be excluded.
[0074] The term "electrically coupled" or "in electronic communication with..." in this disclosure refers to two or more electrical components (such as but not limited to computing platforms, predictive data analysis systems, sensing units, warehouse management systems and control units) and / or circuits being connected by wired components (such as but not limited to conductive wires or traces) and / or wireless components (such as but not limited to wireless networks, electromagnetic fields) so that data and / or information (such as electronic indications, signals) can be transmitted to the electrically coupled electrical components and / or circuits and / or received from the electrically coupled electrical components and / or circuits.
[0075] Indoor positioning technology solutions such as RTLS can be applied to a variety of applications. As mentioned previously, RTLS systems can be used in a variety of environments, such as healthcare facilities, retail facilities, e-commerce facilities, etc. In addition, such RTLS systems can be used in a variety of applications, such as for monitoring when objects are received, placed, picked up, sorted, transported, and can also be used to track one or more objects throughout an environment. Objects within these environments (such as forklifts, workers, packages, assets, etc.) can be configured with tags so that their respective positions can be determined. These tags can be wireless tags capable of transmitting one or more signals, such as radio frequency (RF) signals, including BT, UWB, NB-IoT, cellular, etc. In addition or alternatively, optical and / or acoustic signaling can be used. Regardless of the signaling technology, the locator unit can be configured to receive these one or more transmitted signals from the object. When the object is within the proximity of the locator unit so that the locator unit can receive one or more transmitted signals from the object, the position of the object can be determined based on the known position of the locator unit. In some embodiments, the position of the object can be determined within sub-meter accuracy.
[0076] The locator unit may be configured with one or more elements that are capable of receiving signals from objects within their corresponding proximity using one or more antenna array elements. These one or more antenna array elements (such as one or more receivers) may be capable of receiving one or more signals from the object. The configuration of the antenna array elements on the locator unit may be known so that the AOA, AOD and / or AOX can be determined between the object and the locator unit. The AOA angle, AOD angle and / or AOX angle may be determined at least in part based on the phase of the received signal from the object and / or the phase difference between the one or more antenna array elements. In addition, the position of the object within the environment may be determined at least in part based on the AOA angle, AOD angle and / or AOX angle between the one or more antenna array elements and the object.
[0077] In some examples, in order to accurately determine the AOA angle, AOD angle, and / or AOX angle and ultimately accurately determine the position of an object within an environment, it is advantageous to orient the locator unit within a certain degree of accuracy. However, currently, installing the locator unit is performed manually and is prone to errors. For example, if the locator unit is rotated during installation so that the rotation angle of the locator unit is different from the rotation angle configured for the locator unit by the system, the position of the object may be inaccurate because the system will be configured with the incorrect rotation angle of the locator unit. In addition, even if the locator unit is correctly installed, the locator unit may be unintentionally moved, such as during maintenance due to a collision, so that one or more rotation angles configured for the locator unit are no longer accurate.
[0078] Thus, in some examples, it may be beneficial to automatically determine one or more rotation angles of a locator device in real time or near real time so that the one or more rotation angles configured for the rotation unit are up to date and accurate, and thus produce accurate object position determination. In some embodiments, the one or more rotation angles of a locator unit describe the orientation of the locator unit relative to the installation environment. To this end, in some examples, the present disclosure provides a system and method for automatically configuring one or more rotation angles of one or more locator units. Thus, the one or more rotation angles of one or more locator units can be accurately maintained so that the position of an object can be accurately determined. In addition, one or more locator units can be configured to determine whether the corresponding locator unit has a changed orientation, and if so, the computing entity can be informed of this change so that the computing entity can update the one or more rotation angles for the corresponding locator unit. In this way, the rotation angles of one or more locator units can be accurately maintained so that the computing entity can determine the accurate position of an object detected by the one or more locator units.
[0079] Figures 1A to 1E The RTLS 100 is schematically depicted including a locator unit 110 and a locator unit 120. Figure 1A As can be seen in the figure, the locator unit 110 and the locator unit 120 can be positioned in different orientations and, therefore, associated with different rotation angles. In some embodiments, one or more rotation angles of the locator unit describe the orientation of the locator unit relative to the installation environment. In some embodiments, the installation environment is the surface on which the locator unit is installed. For example, the installation environment can be a floor, a ceiling, a wall, a support column, etc. As an example of how to achieve these rotation angles, an initial locator unit orientation 101 can be selected so that each rotation angle corresponds to a value of 0. In this example, the initial locator unit orientation 101 can correspond to three rotation angles, including an x-axis rotation angle, a y-axis rotation angle, and a z-axis rotation angle, which can be represented by an (x, y, z) format. Thus, the rotation angles can be represented as (0, 0, 0). In some embodiments, the rotation angle (0, 0, 0) can correspond to the orientation of the locator unit when it is flat on the floor. However, as one skilled in the art will appreciate, any locator unit orientation can be selected for the rotation angle (0, 0, 0). Additionally, although Cartesian coordinates are depicted in this example embodiment, any coordinate system is contemplated, including but not limited to polar and / or cylindrical coordinate systems.
[0080] To achieve the orientation and rotation angle of the locator unit 110, the locator unit corresponding to the initial locator unit orientation 101 can be rotated 90 degrees counterclockwise about its z-axis (not shown). In this particular example, the x-axis and y-axis are considered parallel to the floor, and the z-axis is considered perpendicular to the floor, and the device axes are initially considered to be the same. The new locator unit orientation 102 is depicted as having the corresponding rotation angle (0, 0, 90). The locator unit corresponding to the locator unit orientation 102 can be rotated 90 degrees counterclockwise about its y-axis again. The new locator unit orientation 104 is depicted as having the corresponding rotation angle (0, 90, 90). The resulting locator unit orientation 104 corresponding to the locator unit 110 now has a new set of rotation angles and is depicted by both the front view and the top view. In this example, the locator unit 110 is now positioned upright (rather than lying flat on the floor as depicted in the locator unit orientation 101), with its antenna array 110a facing outward. As a result, the device axes are now rotated so that the x-axis and y-axis are now perpendicular to the floor, and the z-axis is parallel to the floor.
[0081] Similarly, to achieve the orientation and rotation angle of locator unit 120, the locator unit corresponding to the initial locator unit orientation 101 can be rotated 90 degrees clockwise about its z-axis (not shown). At this point, the new locator unit orientation 103 is depicted as having the corresponding rotation angle (0, 0, -90). The locator unit corresponding to locator unit orientation 103 can be rotated 90 degrees clockwise about its y-axis again. The new locator unit orientation 105 is depicted as having the corresponding rotation angle (0, -90, -90). The resulting locator unit orientation 105 corresponding to locator unit 120 now has a new set of rotation angles and is depicted by both a front view and a top view. In this example, locator unit 120 is now positioned upright similar to locator unit 110, but its antenna array 120a (not directly shown) faces inward (as opposed to the outward-oriented antenna array of locator unit 110). Similarly, here, the device axes are now rotated so that the x-axis and y-axis are now perpendicular to the floor, and the z-axis is parallel to the floor.
[0082] As will be appreciated by those skilled in the art, Figure 1A The procedure depicted in is a purely exemplary procedure for achieving two locator unit orientations. However, locator unit orientations may be achieved with any number and any variety of orientation changes.
[0083] Now refer to Figure 1B , locator units 110 and 120 are shown as being deployed in an RTLS environment 100. More specifically, Figure 1BThe locator units 110 and 120 are depicted from a front view. The locator units 110 and 120 can each have one or more coordinates indicating the location of the respective locator unit within the environment. Although depicted on a Cartesian coordinate plane showing only x- and y-axes, a z-axis can also be included. Additionally, although Cartesian coordinates are depicted in this example embodiment, any coordinate system is contemplated, including but not limited to polar and / or cylindrical coordinate systems.
[0084] As previously in Figure 1A As shown in FIG, the locator unit orientation of locator unit 110 may be represented as (0, 90, 90), indicating that locator unit 110 is positioned upright with its antenna array 110a facing outward; and the locator unit orientation of locator unit 120 may be represented as (0, -90, -90), indicating that locator unit 120 is positioned upright with its antenna array 120a facing inward. Additionally, locator units 110 and 120 may each be associated with proximity ranges 110c and 120c, respectively. Proximity ranges 110c and 120c indicate environments proximate to locator units 110 and 120, respectively, within which the locator units may detect one or more signals from one or more objects. For example, when object 150 is within proximity ranges 110c and 120c, both locator units 110 and 120 may detect object 150 configured to transmit one or more signals, such as Bluetooth signals. In some embodiments, object 150 may transmit a Bluetooth 5.1 signal capable of transmitting constant tone extension (CTE) so that the Bluetooth packet is transmitted as a constant tone with a continuous phase, constant amplitude, and constant frequency signal. However, as will be apparent to those skilled in the art, any RF signaling is contemplated, such as BT, UWB, NB-IoT, cellular, etc. Additionally or alternatively, optical signaling and / or acoustic signaling may be used. In some embodiments, object 150 may transmit a single signal to the locator unit. In some embodiments, object 150 may be configured to transmit multiple signals to the locator unit simultaneously.
[0085] Antenna arrays 110a and 120a may be configured to receive one or more transmitted signals. To achieve this, antenna arrays 110a and 120a may include one or more antenna array elements, such as 110b. Each antenna array element (such as 110b) may include a receiver capable of receiving a signal, a transmitter capable of transmitting a signal, and / or a receiver and a transmitter capable of both receiving and transmitting a signal. Figure 1B As can be seen in FIG, in this particular example, the antenna array 110a is configured such that the antenna array elements are arranged in a four by four pattern, for a total of 16 antenna array elements. However, any antenna array configuration is contemplated, including but not limited to three antenna arrays or a single antenna array element.
[0086] Although antenna array 120a is not directly visible because it faces inward, antenna array 120a is configured in a similar manner. Furthermore, the specific configuration of antenna array elements within antenna arrays 110a and 120a is known, such that the specific width and height of each antenna array element (such as antenna array element 110b), the distance between each antenna array element, and the overall length and height of antenna arrays 110a and 120a are known.
[0087] Figure 1C to Figure 1D An example procedure for a locator unit (such as locator unit 110) to receive one or more signals from an object is shown. The configuration of antenna arrays 110a and 120a (not shown), including one or more antenna array elements, can be used to determine the AOA, AOD, and / or AOX of the received signal from the object. For example, object 150 can transmit one or more signals, and locator unit 110 can receive the one or more signals using its one or more antenna array elements, including antenna array 110a. One or more antenna array elements configured as receivers including antenna array 110a can receive the signals. However, due to the difference in distance between object 150 and the antenna array elements including antenna array 110a, the received signals can be associated with different signal phases between each antenna array element including antenna array 110a. Figure 1C An AOA 160 is shown between a transmitted signal from an object 150 and an antenna array element 110b of one or more antenna array elements 110a. Additionally or alternatively, the antenna array element may be a single antenna array element that receives multiple transmitted signals from the object 150 and determines phase differences between the received multiple signals. Figure 1D AOD 170 is shown between multiple transmitted signals from object 150 and antenna array element 110b. In either case, the signal phase difference can be determined so that AOA, AOD, and / or AOX can be determined between object 150 and locator unit 110. AOA, AOD, and / or AOX can indicate the direction of object 150.
[0088] The AOA, AOD, and / or AOX can be determined in a similar manner by the locator unit 120 using one or more antenna array elements thereof, including the antenna array 120a. Thus, the locator unit 120 can also determine the direction of the object 150. Both the locator units 110 and 120 can transmit an indication of the AOA, AOD, and / or AOX between the respective locator units and the object 150 to a computing entity 200, such as the positioning computing entity 200. The positioning computing entity 200 can be configured with the relative positions of one or more locator units and the orientations (e.g., one or more rotation angles) of one or more locator units. Based at least in part on the received AOA, AOD, and / or AOX between the locator units 110 and 120 and the object 150 indicating the direction of the object 150 and the respective locator unit, the positioning computing entity can determine the location of the object 150 in the environment.
[0089] Figure 1E Shown as deployed in Figure 1B locator units 110 and 120 in an example operating environment similar to the example operating environment of locator units 110 and 120. When object 150 enters the proximity range of locator units 110 and 120, object 150 can be detected by locator units 110 and 120, as described above. In addition, the AOA, AOD, and / or AOX between locator units 110 and 120 and object 150 can be used to determine the elevation and azimuth angles between object 150 and each of locator units 110 and 120. The elevation angle can be an angular measurement between the locator unit and a horizontal plane (such as a floor) that passes through the object. The elevation angle can be based at least in part on the AOA, AOD, and / or AOX. The azimuth angle can be an angular measurement between a reference plane (such as a plane formed between the x-axis, y-axis, and / or z-axis) and a vector projected perpendicularly onto the reference plane. Figure 1E Detection of object 150 by locator unit 110 is shown, along with elevation angle 180 and corresponding azimuth angle 185. Similarly, locator unit 120 may detect object 150, and have associated elevation angle 190 and corresponding azimuth angle 195. In some embodiments, the position of the object may be determined based at least in part on one or more elevation angles and / or one or more azimuth angles, as determined at least in part based on AOA, AOD, and / or AOX. Figure 2 , shows a block diagram of a computer entity 200 operable to perform the functions and operations performed in the described example embodiments. For example, a computing device (e.g., a positioning computing entity in communication with one or more locator units) may contain a computer program such as Figure 2The components described in . The computing entity 200 can provide networking and communication capabilities between a wired or wireless communication network and a server and / or communication device. To provide additional context for various aspects thereof, the following description is intended to provide a brief general description of a suitable computing environment in which various aspects of the embodiments can be implemented to facilitate establishing transactions between an entity and a third party. Although the above description is in the general context of computer-executable instructions that can be run on one or more computing entities, those skilled in the art will recognize that various embodiments can also be implemented in combination with other program modules and / or as a combination of hardware and software.
[0090] Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the present invention can be practiced with other computer system configurations, including single-processor or multi-processor computer systems, minicomputers, mainframe computers, as well as personal computers, handheld computing devices, microprocessor-based or programmable consumer electronics, etc., each of which can be operatively coupled to one or more associated devices.
[0091] The illustrated aspects of the various embodiments can also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
[0092] Computing devices typically include a variety of media, which may include computer-readable storage media or communication media, the two terms being used differently from each other herein below.
[0093] Computer-readable storage media can be any available storage media that can be accessed by a computing entity, and includes volatile and non-volatile media, removable and non-removable media. By way of example and not limitation, computer-readable storage media can be implemented in conjunction with any method or technology for storing information (such as computer-readable instructions, program modules, structured data, or unstructured data). Computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD ROM, digital versatile disc (DVD) or other optical disc storage devices, cassettes, magnetic tape, magnetic disk storage devices or other magnetic storage devices, or other tangible and / or non-transient media that can be used to store the required information. Computer-readable storage media can be accessed by one or more local or remote computing devices, for example, via access requests, queries, or other data retrieval protocols, to perform various operations on the information stored in the medium.
[0094] Communication media may embody computer-readable instructions, data structures, program modules, or other structured or unstructured data in a data signal (such as a modulated data signal, e.g., a carrier wave or other transport mechanism), and includes any information delivery or transmission media. The term "modulated data signal" or signal refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal or signals. By way of example, and not limitation, communication media includes wired media (such as a wired network or direct-wired connection) and wireless media (such as acoustic, RF, infrared, and other wireless media).
[0095] refer to Figure 2 , implementing various aspects described herein with respect to an end-user device may include a computing entity 200, which includes a processing unit 204, a system memory 206, and a system bus 208. The system bus 208 couples system components, including but not limited to the system memory 206, to the processing unit 204. The processing unit 204 may be any of a variety of commercially available processors. Dual microprocessors and other multi-processor architectures may also be used as the processing unit 204.
[0096] The system bus 208 can be any of several types of bus structures that can also interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. The system memory 206 includes read-only memory (ROM) 227 and random access memory (RAM) 212. A basic input / output system (BIOS) containing basic routines that help transfer information between elements within the computing entity 200 (such as during startup) is stored in non-volatile memory 227, such as ROM, EPROM, or EEPROM. RAM 212 can also include high-speed RAM, such as static RAM for caching data.
[0097] The computer 200 also includes an internal hard disk drive (HDD) 214 (e.g., EIDE, SATA), which may also be configured for external use in a suitable enclosure (not shown), a magnetic floppy disk drive (FDD) 216 (e.g., for reading from or writing to a removable disk 218), and an optical drive 220 (e.g., for reading from or writing to a CD-ROM disk 222, or from or writing to other large-capacity optical media such as a DVD). The hard disk drive 214, magnetic disk drive 216, and optical drive 220 may be connected to the system bus 208 via a hard disk drive interface 224, a magnetic disk drive interface 226, and an optical drive interface 228, respectively. The interface 224 for external drive implementations includes at least one or both of a universal serial bus (USB) and IEEE 1394 interface technologies. Other external drive connection technologies are contemplated within the present embodiment.
[0098] The drives and their associated computer-readable media provide non-volatile storage of data, data structures, computer-executable instructions, and the like. The drives and media are adapted to store any data in a suitable digital format for computing entity 200. Although the above description of computer-readable media refers to HDDs, removable magnetic disks, and removable optical media (such as CDs or DVDs), those skilled in the art will appreciate that other types of media readable by computing entity 200 (such as zip drives, magnetic tape cartridges, flash memory cards, magnetic tapes, and the like) may also be used in the example operating environment, and further, any such media may contain computer-executable instructions for performing the methods of the disclosed embodiments.
[0099] Various program modules may be stored in the drives and RAM 212, including an operating system 230, one or more application programs 232, other program modules 234, and program data 236. All or portions of the operating system, application programs, modules, and / or data may also be cached in RAM 212. It should be appreciated that various embodiments may be implemented using various commercially available operating systems or combinations of operating systems.
[0100] A user may enter commands and information into the computing entity 200 through one or more wired / wireless input devices, such as a keyboard 238 and a pointing device, such as a mouse 240. Other input devices (not shown) may include a microphone, an IR remote control, a joystick, a game controller, a stylus, a touch screen, etc. These and other input devices are typically connected to the processing unit 204 through an input device interface 242 coupled to the system bus 208, but may be connected through other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR port, or the like.
[0101] A monitor 244 or other type of display device is also connected to the system bus 208 via an interface, such as a video adapter 246. In addition to the monitor 244, the computing entity 200 typically includes other peripheral output devices (not shown), such as speakers, printers, and the like.
[0102] Computing entity 200 can operate in a networked environment using logical connections to one or more remote computing entities, such as remote computing entity 248, via wired and / or wireless communications. Remote computing entity 248 can be a workstation, server computer, router, personal computer, portable computer, microprocessor-based entertainment device, peer device, or other public network node, and typically includes many or all of the elements described with respect to a computer, but for the sake of simplicity, only memory / storage device 250 is shown. The depicted logical connections include wired / wireless connections to a local area network (LAN) 252 and / or a larger network, such as a wide area network (WAN) 254. Such LAN and WAN networking environments are common in offices and companies and facilitate enterprise-wide computer networks, such as corporate intranets, all of which can be connected to a global communication network, such as the Internet.
[0103] When used in a LAN networking environment, the computing entity 200 is connected to a local network 252 through a wired and / or wireless communication network interface or adapter 256. The adapter 256 may facilitate wired or wireless communication with the LAN 252, which may also include a wireless access point disposed thereon for communicating with the wireless adapter 256.
[0104] When used in a WAN networking environment, the computing entity 200 may include a modem 258, or be connected to a communication server on the WAN 254, or have other means for establishing communications over the WAN 254 (such as via the Internet). The modem 258 is connected to the system bus 208 via the input device interface 242 and may be an internal or external device and a wired or wireless device. In a networked environment, program modules depicted relative to the computers or portions thereof may be stored in the remote memory / storage device 250. It will be appreciated that the network connections shown are exemplary and that other means for establishing a communications link between the computers may be used.
[0105] The computing entity is operable to communicate wirelessly with any wireless device or entity operatively located therein, such as a printer, scanner, desktop and / or portable computer, portable data assistant, communication satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, news stand, restroom), and telephone. This includes at least Wi-Fi and Bluetooth. TMWireless technology. Therefore, the communication can be a predefined structure like a conventional network, or just an ad hoc communication between at least two devices.
[0106] Wi-Fi, or Wireless Fidelity, allows you to connect to the internet from your couch at home, your bed in a hotel room, or your conference room at work, without wires. Wi-Fi is a wireless technology similar to that used in mobile phones that enables such devices (such as computers) to send and receive data indoors and outdoors, and anywhere within range of a base station. Wi-Fi networks use radio technology known as IEEE 802.11 (a, b, g, n, etc.) to provide secure, reliable, and fast wireless connections. Wi-Fi networks can be used to connect computers to each other, to the internet, and to wired networks (which use IEEE 802.3 or Ethernet). Wi-Fi networks operate in the unlicensed 2.4 and 5 GHz radio bands at data rates of, for example, 11 Mbps (802.11b) or 54 Mbps (802.11a), or using products that include both bands (dual-band), so such networks can provide real-world performance similar to the basic "10BaseT" wired Ethernet used in many offices.
[0107] As used in this subject specification, the term "processor" may refer to substantially any computational processing unit or device, including but not limited to: a single-core processor; a single-core processor with software multi-threaded execution capability; a multi-core processor; a multi-core processor with software multi-threaded execution capability; a multi-core processor with hardware multi-threading technology; a parallel platform; and a parallel platform with distributed shared memory. In addition, a processor may refer to an integrated circuit, an application-specific integrated circuit (ASIC), a digital signal processor (DSP), a field programmable gate array (FPGA), a programmable logic controller (PLC), a complex programmable logic device (CPLD), discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. The processor may utilize nanoscale architectures, such as, but not limited to, molecular and quantum dot-based transistors, switches, and gates, in order to optimize space usage or enhance the performance of user equipment. The processor may also be implemented as a combination of computational processing units.
[0108] In this specification, terms such as "repository," "data repository," "data storage device," "database," "repository," "queue," and substantially any other information storage component related to the operation and functionality of a component refer to a "memory component" or an entity embodied in a "memory" or component that includes memory. It will be understood that the memory components described herein can be volatile memory or non-volatile memory, or can include both volatile and non-volatile memory. In addition, the memory components or memory elements can be removable or fixed. Furthermore, the memory can be internal or external to the device or component, or can be removable or fixed. The memory can include various types of media that can be read by a computer, such as a hard drive, a zip drive, a magnetic cassette, a flash memory card or other type of memory card, a magnetic cassette, and the like.
[0109] By way of illustration and not limitation, non-volatile memory may include read-only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory may include random access memory (RAM) acting as external cache memory. By way of illustration and not limitation, RAM is available in a variety of forms, such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct Rambus RAM (DRRAM). In addition, the disclosed memory components of the systems or methods herein are intended to include, but are not limited to, these and any other suitable types of memory.
[0110] Specifically and with respect to the various functions performed by the above-described components, devices, circuits, systems, etc., unless otherwise indicated, the terms used to describe such components (including references to "members") are intended to correspond to any component that, while not structurally equivalent to the disclosed structure (which performs the functions in the example aspects of the embodiments shown herein), still performs the specified functions of the described components (e.g., functional equivalents). In this regard, it will also be recognized that the embodiments include systems and computer-readable media having computer-executable instructions for performing the acts and / or events of the various methods.
[0111] Computing devices typically include a variety of media, which may include computer-readable storage media and / or communication media, the two terms being used differently herein as follows. Computer-readable storage media can be any available storage media that can be accessed by a computer, and includes both volatile and non-volatile media, removable and non-removable media. By way of example and not limitation, computer-readable storage media can be implemented in conjunction with any method or technology for storing information, such as computer-readable instructions, program modules, structured data, or unstructured data.
[0112] Computer-readable storage media may include, but is not limited to, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, solid-state drives (SSD) or other solid-state storage technology, compact disc read-only memory (CD ROM), digital versatile discs (DVD), Blu-ray discs or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible and / or non-transitory media that may be used to store the desired information.
[0113] In this regard, the terms "tangible" or "non-transitory" as applied to storage, memory, or computer-readable media herein should be understood as excluding only the propagation of transient signals themselves as a modifier, and do not disclaim all standard storage, memory, or computer-readable media that do not merely propagate transient signals themselves. Computer-readable storage media can be accessed by one or more local or remote computing devices, e.g., via access requests, queries, or other data retrieval protocols, to perform various operations on the information stored by the media.
[0114] On the other hand, communication media typically embodies computer-readable instructions, data structures, program modules, or other structured or unstructured data in a data signal (such as a modulated data signal, such as a carrier wave or other transport mechanism), and includes any information delivery or transmission media. The term "modulated data signal" or signal refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal or signals. By way of example, and not limitation, communication media include wired media (such as a wired network or direct-wired connection) and wireless media (such as acoustic, RF, infrared, and other wireless media).
[0115] Furthermore, terms such as "user equipment," "user device," "mobile device," "mobile device," "station," "access terminal," "terminal," "handset," and similar terms generally refer to wireless devices used by subscribers or users of wireless communication networks or services to receive or communicate data, control, voice, video, sound, gaming, or substantially any data stream or signaling stream. The foregoing terms are used interchangeably in this specification and the associated figures. Similarly, the terms "access point," "Node B," "base station," "eNode B," "cell," "cell site," and the like are used interchangeably in this application and refer to wireless network components or devices that serve a group of subscriber stations and receive data, control, voice, video, sound, gaming, or substantially any data stream or signaling stream from them. Data and signaling streams can be packetized or frame-based streams. It should be noted that in this specification and the figures, context or explicit distinctions are provided with respect to access points or base stations serving mobile devices in outdoor environments and receiving data therefrom, and access points or base stations operating in confined (primarily indoor) environments covered by outdoor coverage areas. Data and signaling streams can be packetized or frame-based streams.
[0116] In addition, embodiments of the present invention can be implemented in various ways, including being implemented as a computer program product comprising a product. Such a computer program product may include one or more software components, including, for example, software objects, methods, data structures, etc. The software components can be encoded in any of a variety of programming languages. An exemplary programming language can be a low-level programming language, such as an assembly language associated with a specific hardware framework and / or an operating system platform. A software component comprising assembly language instructions may need to be converted into executable machine code by an assembler before being executed by a hardware framework and / or a platform. Another example programming language can be a more advanced programming language that is portable across multiple frameworks. A software component comprising more advanced programming language instructions may need to be converted into an intermediate representation by an interpreter or a compiler before execution.
[0117] Other examples of programming languages include, but are not limited to, macro languages, shell or command languages, job control languages, scripting languages, database query or search languages, and / or report writing languages. In one or more example embodiments, a software component comprising instructions in one of the aforementioned examples of a programming language can be directly executed by an operating system or other software component without first being converted into another form. The software component can be stored as a file or other data storage structure. Software components of similar type or function can be stored together, such as in a specific directory, folder, or library. The software component can be static (e.g., pre-established or fixed) or dynamic (e.g., created or modified during execution).
[0118] A computer program product may include a non-transitory computer-readable storage medium that stores an application, program, program module, script, source code, program code, object code, byte code, compiled code, interpreted code, machine code, executable instructions, etc. (also referred to herein as executable instructions, instructions for execution, computer program product, program code, and / or similar terms used interchangeably herein). Such non-transitory computer-readable storage media include all computer-readable media (including volatile and non-volatile media).
[0119] In one embodiment, the non-volatile computer-readable storage medium may include a floppy disk, a flexible disk, a hard disk, a solid-state memory (SSS) (e.g., a solid-state drive (SSD), a solid-state card (SSC), a solid-state module (SSM), an enterprise flash drive, a magnetic tape, or any other non-transitory magnetic medium, etc.). The non-volatile computer-readable storage medium may also include a punched card, a paper tape, an optical marker sheet (or any other physical medium having a hole pattern or other optically recognizable marking), a compact disc read-only memory (CD-ROM), a compact disc rewritable (CD-RW), a digital versatile disc (DVD), a Blu-ray disc (BD), any other non-transitory optical medium, etc. Such non-volatile computer-readable storage media may also include a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a flash memory (e.g., serial, NAND, NOR, etc.), a multimedia memory card (MMC), a secure digital (SD) memory card, a smart media card, a compact flash (CF) card, a memory stick, etc. In addition, non-volatile computer-readable storage media may also include conductive bridging random access memory (CBRAM), phase change random access memory (PRAM), ferroelectric random access memory (FeRAM), non-volatile random access memory (NVRAM), magnetoresistive random access memory (MRAM), resistive random access memory (RRAM), silicon-oxide-nitride-oxide-silicon memory (SONOS), floating junction gate random access memory (FJG RAM), millipede memory, racetrack memory, etc.
[0120] In one embodiment, the volatile computer-readable storage medium may include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), fast page mode dynamic random access memory (FPM DRAM), extended data-out dynamic random access memory (EDO DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), double data rate type two synchronous dynamic random access memory (DDR2 SDRAM), double data rate type three synchronous dynamic random access memory (DDR3 SDRAM), Rambus dynamic random access memory (RDRAM), two-transistor RAM (TTRAM), two-resistor RAM (T-RAM), zero capacitor (Z-RAM), Rambus embedded memory module (RIMM), dual in-line memory module (DIMM), single in-line memory module (SIMM), video random access memory (VRAM), cache memory (including various levels), flash memory, register memory, etc. It will be appreciated that where embodiments are described as using computer-readable storage media, other types of computer-readable storage media may be used in place of or in addition to the computer-readable storage media described above.
[0121] It should be understood that various embodiments of the present invention may also be implemented as methods, apparatuses, systems, computing devices, computing entities, etc. Thus, embodiments of the present invention may take the form of apparatuses, systems, computing devices, computing entities, etc. that execute instructions stored on a computer-readable storage medium to perform certain steps or operations. Thus, embodiments of the present invention may also take the form of an entirely hardware embodiment, an entirely computer program product embodiment, and / or an embodiment that includes a combination of a computer program product and hardware that performs certain steps or operations.
[0122] The embodiments of the present invention are described below with reference to block diagrams and flow charts. Therefore, it should be understood that each box of the block diagrams and flow charts can be implemented in the following forms: a computer program product, a complete hardware implementation, a combination of hardware and computer program products and / or a device, system, computing equipment, computing entity, etc. that implements instructions, operations, steps, and interchangeable similar words (such as executable instructions, instructions for execution, program codes, etc.) on a computer-readable storage medium. For example, the retrieval, loading, and execution of the code can be performed sequentially so that one instruction is retrieved, loaded, and executed at a time. In some exemplary embodiments, retrieval, loading, and / or execution can be performed in parallel so that multiple instructions are retrieved, loaded, and / or executed together. Therefore, such embodiments can produce a machine that performs a specific configuration of the steps or operations specified in the block diagrams and flow charts. Therefore, the block diagrams and flow charts illustrate various combinations of embodiments that support the execution of specified instructions, operations, or steps.
[0123] Furthermore, the terms "user," "subscriber," "client," "consumer," and the like are used interchangeably throughout this specification, unless the context warrants a specific distinction between the terms. It should be understood that such terms may refer to human entities that can provide simulated vision, voice recognition, and the like, associated devices, or automated components supported by artificial intelligence (e.g., the ability to reason based on complex mathematical formalisms). Additionally, the terms "wireless network" and "network" are used interchangeably throughout this application, with the distinction becoming explicit when the context in which the terms are utilized warrants such a distinction for clarity.
[0124] In addition, the word "exemplary" as used herein is intended to serve as an example, instance or illustration. Any aspect or design described herein as "exemplary" is not necessarily to be construed as being preferred or advantageous over other aspects or designs. On the contrary, the use of exemplary words is intended to present concepts in a concrete way. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". That is, unless otherwise specified or clear from the context, "X employs A or B" is intended to mean any natural inclusive arrangement. That is, if X employs A; X employs B; or X employs both A and B, then "X employs A or B" is satisfied in any of the foregoing cases. In addition, unless otherwise specified or clear from the context that it is a singular form, the articles "a" and "an" used in this application and the appended claims should generally be interpreted to mean "one or more".
[0125] Additionally, while particular features may have been described with respect to only one of several implementations, such features may be combined with one or more other features of the other implementations as may be required or advantageous for any given or particular application. Furthermore, to the extent that the terms "includes" and "including" and variations thereof are used in the detailed description or claims, these terms are intended to be inclusive in a manner similar to the term "comprising."
[0126] Figure 3 An illustrative schematic representation of a computing entity 300 that may be used in conjunction with embodiments of the present invention is provided. In some embodiments, the computing entity 300 is a locator unit. In some embodiments, the computing entity 300 may be a remote computing entity 248. In general, the terms device, system, computing entity, entity, and / or similar words used interchangeably herein may refer to, for example, one or more computers, computing entities, desktop computers, mobile phones, tablet computers, phablets, notebook computers, laptop computers, distributed systems, kiosks, input terminals, servers or server networks, blade servers, gateways, switches, processing devices, processing entities, set-top boxes, relays, routers, network access points, base stations, etc., and / or any combination of devices or entities suitable for performing the functions, steps / operations and / or procedures described herein. The computing entity 300 may be operated by various parties. As Figure 3 As shown in FIG, the computing entity 300 may include one or more transmitters 304 (e.g., radios) that provide signals to and receive signals from the one or more transmitters 304 and one or more receivers 306, one or more receivers 306 (e.g., radios), and a processor 308 (e.g., a CPLD, a microprocessor, a multi-core processor, a co-processing entity, an ASIP, a microcontroller, and / or a controller).
[0127] Correspondingly, the signals provided to and received from one or more transmitters 304 and one or more receivers 306 may include signaling information / data in accordance with the air interface standard of the applicable wireless system. In this regard, computing entity 300 may be capable of operating using one or more air interface standards, communication protocols, modulation types, and access types. More specifically, computing entity 300 may operate in accordance with any of a variety of wireless communication standards and protocols, such as those described above with respect to computing entity 200. In particular embodiments, computing entity 300 may operate in accordance with a variety of wireless communication standards and protocols, such as UMTS, CDMA2000, 1xRTT, WCDMA, GSM, EDGE, TD-SCDMA, LTE, E-UTRAN, EVDO, HSPA, HSDPA, Wi-Fi, Wi-Fi Direct, WiMAX, UWB, IR, NFC, Bluetooth, USB, and the like. Similarly, computing entity 300 may operate in accordance with a variety of wired communication standards and protocols, such as those described above with respect to computing entity 200, via network interface 320.
[0128] Through these communication standards and protocols, computing entity 300 can communicate with various other entities using concepts such as Unstructured Supplementary Service Data (USSD), Short Message Service (SMS), Multimedia Message Service (MMS), Dual Tone Multi-Frequency Signaling (DTMF), and / or Subscriber Identity Module Dial Pad (SIM Dial Pad). Computing entity 300 can also download changes, add-ons, and updates to its firmware, software (e.g., including executable instructions, applications, program modules), and operating system.
[0129] According to one embodiment, the computing entity 300 may include location determination aspects, devices, modules, functions, and / or similar terms used interchangeably herein. For example, the computing entity 300 may include outdoor positioning aspects, such as a positioning module suitable for obtaining, for example, latitude, longitude, altitude, geocode, route, direction, heading, speed, universal time (UTC), date, and / or various other information / data. In one embodiment, the positioning module may obtain data, sometimes referred to as ephemeris data, by identifying the number of satellites in view and the relative positions of those satellites (e.g., using the Global Positioning System (GPS)). The satellites may be a variety of different satellites, including low earth orbit (LEO) satellite systems, Department of Defense (DOD) satellite systems, the European Union's Galileo positioning system, China's BeiDou satellite navigation system, India's regional navigation satellite system, and the like. This data may be collected using a variety of coordinate systems, such as decimal degrees (DD); degrees, minutes, seconds (DMS); Universal Transverse Mercator (UTM); Universal Polar Stereographic (UPS) coordinate systems; and the like. Alternatively, location information / data may be determined by triangulating the location of the computing entity 300 in conjunction with various other systems, including cellular towers, Wi-Fi access points, and the like. Similarly, the computing entity 300 may include indoor positioning aspects, such as a positioning module adapted to obtain, for example, latitude, longitude, altitude, geocode, route, direction, heading, speed, time, date, and / or various other information / data. Some indoor systems may use various positioning or location technologies, including RFID tags, indoor beacons or transmitters, Wi-Fi access points, cellular towers, nearby computing devices (e.g., smartphones, laptops), and the like. For example, such technologies may include iBeacons, Gimbal proximity beacons, Bluetooth Low Energy (BLE) transmitters, NFC transmitters, and the like. These indoor positioning aspects may be used in a variety of settings to determine the location of a person or thing to within inches or centimeters.
[0130] Computing entity 300 may also include an inertial measurement unit 350 configured to measure at least the orientation of computing entity 300. In some embodiments, inertial measurement unit 350 includes one or more gyroscopes 352, one or more accelerometers 354, and / or one or more magnetometers 356. One or more gyroscopes 352 may include an electromechanical device for measuring angular velocity relative to the x-axis, y-axis, and / or z-axis. One or more accelerometers 354 may include an electromechanical device for measuring acceleration forces in the x-axis, y-axis, and / or z-axis relative to a computing entity (such as computing entity 300). One or more magnetometers may include an electromechanical device for measuring magnetic forces relative to the x-axis, y-axis, and / or z-axis.
[0131] The computing entity 300 may also include embedded and / or removable volatile storage or memory 322 and / or non-volatile storage or memory 324. For example, the non-volatile memory may be ROM, PROM, EPROM, EEPROM, flash memory, MMC, SD memory card, memory stick, CBRAM, PRAM, FeRAM, NVRAM, MRAM, RRAM, SONOS, FJG RAM, millipede memory, racetrack memory, etc. The volatile memory may be RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, T-RAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, cache memory, register memory, etc. Volatile and non-volatile storage or memory may store databases, database instances, database management systems, data, applications, programs, program modules, scripts, source code, object code, byte code, compiled code, interpreted code, machine code, executable instructions, and the like to implement the functionality of computing entity 300. As indicated, this may include user applications resident on the entity or accessible through a browser or other user interface for communicating with computing entity 200 and / or various other computing entities.
[0132] In another embodiment, computing entity 300 may include one or more components or functions that are the same or similar to those of computing entity 200, as described in more detail above. As will be appreciated, these frameworks and descriptions are provided for exemplary purposes only and are not limiting of the various embodiments.
[0133] Figure 4 is a flow chart of an example procedure 400 for automatically configuring one or more rotation angles of one or more associated locator units using a computing entity, such as computing entity 200. In some embodiments, computing entity 200 may be a positioning computing entity configured to determine the location of one or more objects detected by one or more locator units. In some embodiments, computing entity 200 may be a cloud-based positioning computing entity operable in a cloud computing environment. Via the various steps / operations of procedure 400, one or more locator units, such as locator units 110 and 120, may be configured with accurate and up-to-date rotation angles indicating the locator unit orientation, which may be stored in an associated memory of computing entity 200 and, in some embodiments, used in part to determine the location of one or more objects in an environment.
[0134] The process 400 begins at step / operation 401, where the computing entity 200 may include components for receiving one or more dimension values related to the orientation of one or more locator units, such as the processing unit 204, the network adapter 265, the input device interface 242, etc. In some embodiments, the computing entity 200 may receive the one or more dimension values from the one or more locator units in response to the corresponding locator unit in the one or more locator units being initialized and / or first installed. In some embodiments, the computing entity 200 may receive the one or more dimension values from the one or more locator units in response to the corresponding locator unit being moved or otherwise reoriented, such as with respect to Figure 6 Further discussion.
[0135] In some embodiments, the one or more dimensional values associated with the orientation of the one or more localizer units correspond to the roll, pitch, and / or yaw of each of the one or more localizer units. In some embodiments, the roll, pitch, and / or yaw of the localizer units can be determined based at least in part on an inertial measurement unit (IMU) corresponding to the localizer unit, such as the IMU 350.
[0136] In some embodiments, roll indicates rotation about the x-axis, pitch indicates rotation about the y-axis, and yaw indicates rotation about the z-axis. For example, dimension values of 15°, 25°, and -25° may correspond to roll, pitch, and yaw values, respectively. These values may indicate a 15-degree rotation about the x-axis, a 25-degree rotation about the y-axis, and a -25-degree rotation about the z-axis. Additionally, the roll, pitch, and yaw values may be associated with signs so that the direction of rotation about the corresponding axis is known.
[0137] In some embodiments, the computing entity 200 may also receive an indication of a locator unit corresponding to each dimension value of the one or more dimension values. In some embodiments, the locator unit may be assigned a unique identifier, for example by the computing entity 200, so that the computing entity 200 can uniquely identify each locator unit with which it communicates. In some embodiments, each locator unit may be configured with a unique identifier so that a unique identifier is included for received transmissions, and thus the computing entity 200 can uniquely identify the locator unit. In some embodiments, the locator unit may be identified by its corresponding Bluetooth address, media access control (MAC) address, etc. Additionally or alternatively, the locator unit may be identified using a static and / or dynamic IPv4 address and / or IPv6 address.
[0138] At step / operation 402, the computing entity 200 may include components such as the processing unit 204, the system memory 206, etc., for determining one or more rotation angles for each of the one or more locator units based at least in part on one or more received dimension values for each of the one or more locator units and a configuration table associated with the locator unit type. As mentioned above, in some embodiments, the computing entity 200 may also receive an indication of each of the one or more dimension values corresponding to the locator unit. For example, the computing entity 200 may receive dimension values of 15°, 25°, and -25° corresponding to the locator unit identifier XYZ123. The computing entity 200 may compare the received one or more dimension values for each locator unit with one or more dimension values in the configuration table. The one or more dimension values in the configuration table correspond to the one or more rotation angles. Thus, the computing entity 200 may determine the one or more rotation angles for each of the one or more locator units by comparing the received one or more dimension values from each locator unit with the dimension values in the configuration table.
[0139] In some embodiments, the computing entity 200 may determine the locator unit type by accessing the system memory 206. The system memory 206 may be configured to store the locator unit identifier along with the indication of the locator unit type. The computing entity 200 may then determine the locator unit type based at least in part on the indication of the locator unit type and may select a configuration table associated with the locator unit type.
[0140] In some embodiments, a configuration table can be generated for each locator unit type using a computing entity 200, which can be configured to generate a configuration table for the locator unit type. In some embodiments, a remote computing entity 248 can be configured to generate the configuration table and provide the generated configuration table to the computing entity 200. In some embodiments, the configuration table can be generated by positioning the locator unit at one or more rotation angles and measuring one or more dimension values of the locator unit for the specific one or more rotation angles using the locator unit's corresponding IMU 350. In some embodiments, the locator unit can be positioned manually or automatically using a robotic system, such as a robotic system configured to grasp, pick up, move, release, place, flip, and / or otherwise manipulate the locator unit.
[0141] In some embodiments, the granularity of the configuration table can be configured. For example, the computing entity 200 can be configured to generate a configuration table using 45-degree rotation angle increments for each of one or more rotation angle values. In some embodiments, each of the one or more rotation angles can be configured individually. For example, the computing entity 200 can be configured to generate a configuration table using 45-degree rotation angle increments for the x-axis and y-axis rotation angles, but using 90-degree increments for the z-axis rotation angle.
[0142] In some embodiments, the computing entity 200 may be configured with one or more algorithms that allow the computing entity 200 to infer between one or more received dimension values and one or more dimension values configured in a configuration table. In some embodiments, the one or more algorithms may perform one or more mathematical operations. The one or more mathematical operations may use one or more values that are based, at least in part, on one or more received dimension values for each locator unit and one or more rotation angles in a configuration table associated with the type of locator unit. For example, the computing entity 200 may receive dimension values of 87.3°, 1.5°, and -73.0°. However, a configuration table such as Figure 5 The configuration table depicted in ) may not include one or more dimension values that exactly match one or more received dimension values. The computing entity 200 may select one or more dimension values in the configuration table that most closely match dimension values such as dimension values 1.9°, 1.5°, and -73.0°, and extrapolate between different dimension values such as dimension values 176.4°, 1.5°, and -73.0. The dimension values 1.9°, 1.5°, and -73.0° correspond to rotation angles of 0, 0, 0 on the x-axis, y-axis, and z-axis, respectively, and the dimension values 176.4°, 1.5°, and -73.0° may correspond to rotation angles of 180, 0, 0 on the x-axis, y-axis, and z-axis, respectively. Thus, the computing entity 200 may determine that the rotation angles are 90, 0, 0. It should be noted that Figure 5 The configuration table depicted in is merely exemplary and should not be considered limiting in any way. Furthermore, it should be understood that Figure 5 The values described in are subject to change depending on the positioner unit.
[0143] Figure 5 Depicts an example of the operation of a configuration table 500 associated with a positioner unit type. In some embodiments, the configuration table 500 can provide one or more corresponding rotation angles 501 for one or more specific dimension values 502. In some embodiments, the configuration table 500 provides one or more rotation angles 501 for a specific roll value, pitch value, and / or yaw value 502. In some embodiments, the configuration table 500 provides one or more rotation angles 501 along the x-axis, y-axis, and z-axis for a specific roll value, pitch value, and / or yaw value 502.
[0144] At step / operation 403, the computing entity 200 may include a component for storing one or more rotation angles of each of the one or more locator units, such as the processing unit 204, the system memory 206, or the like. The one or more rotation angles determined in step / operation 402 may be stored in an associated memory, such as the system memory 206 of each of the one or more locator units. Thus, the one or more rotation angles of the one or more locator units indicate one or more rotation angles of the one or more locator units in real time or near real time. This allows for accurate determination of the position of one or more objects detected by the one or more locator units.
[0145] In some embodiments, an audit log may be generated and / or updated to indicate changes in one or more rotation angles of one or more locator units. In some embodiments, an audit log may be available for each locator unit. In some embodiments, an audit log may be available for one or more locator units. The audit log may include information indicating the type of locator unit, a locator unit identifier, one or more dimension values, one or more rotation angles, a timestamp of the change in one or more dimension values and / or one or more rotation angles, one or more dimension values after the update, one or more rotation angles after the update, and the like. Thus, the audit log may be used to track any changes in the orientation of one or more locator units.
[0146] At step / operation 404, the computing entity 200 may include components, such as the processing unit 204, the network adapter 265, the input device interface 242, the system memory 206, etc., for determining the location of one or more objects in the environment based at least in part on one or more rotation angles of each of the one or more locator units. The one or more rotation angles of each of the one or more locator units may indicate an orientation of each of the one or more locator units. As will be described in Figure 8 As discussed in greater detail in , computing entity 200 may determine the location of one or more objects in an environment. In some embodiments, the one or more objects may be detected by one or more locator units, and computing entity 200 may determine the location of the one or more objects based at least in part on one or more rotation angles of each of the one or more locator units that detected the one or more objects.
[0147] In some embodiments, step / operation 401 may be performed according to Figure 6 The various steps / operations of the depicted procedure 600 are performed, Figure 6 is a flow chart of an example program for managing one or more locator programs.
[0148] At step / operation 601, the computing entity 200 may include components, such as the processing unit 204, the network adapter 265, the input device interface 242, the system memory 206, etc., for stopping one or more locator programs related to one or more locator units, wherein one or more dimension values of the one or more locator units are related to the received orientation of the one or more locator units. For example, the computing entity 200 may receive one or more dimension values of the locator units 110 and 120. Thus, the computing entity 200 may stop all locator programs related to the locator units 110 and 120. This may prevent incorrect object position determinations because receiving one or more dimension values of one or more locator units may indicate that the one or more locator units have shifted in orientation and therefore require updating the associated one or more rotation angles.
[0149] At step / operation 602, the computing entity 200 may include components, such as the processing unit 204, the network adapter 265, the input device interface 242, the system memory 206, etc., for resuming one or more locator programs related to the one or more locator units after determining one or more rotation angles for each of the one or more locator units. For example, as described in steps / operations 402 and 403 for the locator units 110 and 120, respectively, the computing entity 200 may determine the one or more rotation angles and store the one or more rotation angles in associated memory. Thus, the computing entity 200 may resume the one or more locator programs related to the locator units 110 and 120. The computing entity 200 may now be configured with the latest one or more rotation angles and may therefore use the one or more rotation angles for the locator programs, such as to determine the position of an object in an environment.
[0150] In some embodiments, step / operation 402 may be performed according to Figure 7 The various steps / operations of the depicted procedure 700 are performed, Figure 7 is a flow chart of an example procedure for updating one or more rotation angles of one or more locator units.
[0151] At step / operation 701, the computing entity 200 may include means, such as the processing unit 204, the network adapter 265, the input device interface 242, the system memory 206, etc., for receiving one or more dimension values related to the orientation of the one or more locator units in response to a change in the orientation of the one or more locator units. For example, if one or more rotation angles of the locator unit 110 were previously determined as described above with respect to step / operation 402, and the locator unit 110 was bumped such that the orientation of the locator unit 110 has shifted, the computing entity 200 may receive the one or more dimension values from the locator unit 110.
[0152] In some embodiments, the computing entity 200 may receive one or more dimension values from one or more locator units if a change in the orientation (e.g., one or more dimension values) of one or more locator units satisfies one or more predefined dimension thresholds. The predefined dimension thresholds may be configured to control the sensitivity of the locator unit's orientation change. In some embodiments, the predefined dimension thresholds may be dimension values or percentages. For example, if the locator unit 110 rotates by 2° or more, the computing entity 200 may receive one or more dimension values indicating the new orientation of the locator unit 110. In some embodiments, the predefined dimension thresholds may require two or more changes in dimension values. For example, if the locator unit 110 has associated changes in dimension values for the x-axis and y-axis, the computing entity 200 may receive one or more dimension values indicating the new orientation of the locator unit 110. In some embodiments, each of the one or more locator units may be configured with one or more of the same predefined dimension thresholds and / or may be configured with one or more different predefined dimension thresholds. In this way, the predefined dimension thresholds may control the sensitivity of the orientation of the one or more locator units and, thereby, reduce network traffic and bandwidth usage, as well as computing resources and storage.
[0153] At step / operation 702, the computing entity 200 may include means, such as the processing unit 204, the system memory 206, etc., for updating one or more rotation angles for each of the one or more locator units based at least in part on one or more received dimension values for the one or more locator units and a configuration table associated with the locator unit type. In some embodiments, step / operation 702 may be substantially similar to step / operation 402. In some embodiments, the computing entity 200 may also receive an indication of the locator unit corresponding to each of the one or more dimension values. For example, the computing entity 200 may receive dimension values of 15°, 25°, and -25° corresponding to the locator unit identifier XYZ123. In some embodiments, the computing entity 200 may determine the locator unit type by accessing the system memory 206. The system memory 206 may be configured to store the locator unit identifier along with the indication of the locator unit type. The computing entity 200 may then determine the locator unit type based at least in part on the indication of the locator unit type and may select a configuration table associated with the locator unit type. Thus, one or more rotation angles of one or more locator units may be updated to the current rotation angle as indicated by the one or more received dimension values.
[0154] At step / operation 703, the computing entity 200 may include means for storing one or more rotation angles of each of the one or more locator units in an associated memory, such as the processing unit 204, the system memory 206, or the like. The one or more rotation angles determined in step / operation 602 may be stored in an associated memory, such as the system memory 206 of each of the one or more locator units. Thus, the rotation angles of the one or more locator units indicate one or more rotation angles of the one or more locator units in real time or near real time. This allows for accurate determination of the position of one or more objects detected by the one or more locator units. In some embodiments, step / operation 703 may be substantially similar to step / operation 403.
[0155] In some embodiments, step / operation 404 may be performed according to Figure 8 The various steps / operations depicted in the process 800 are performed, Figure 8 is a flowchart of an example program for determining the position of one or more objects in an environment.
[0156] At step / operation 801, the computing entity 200 may include means for receiving one or more signals from one or more locator units indicating that the one or more locator units have detected one or more objects in the environment, such as the processing unit 204, the network adapter 265, the input device interface 242, the system memory 206, etc. In some embodiments, the one or more received signals may indicate that the one or more locator units are connected to a network similar to Figure 1B In some embodiments, the one or more signals received from the one or more locator units may indicate a signal phase as received by each antenna array element of the antenna array of each of the one or more locator units. In some embodiments, the one or more signals received from the one or more locator units may indicate a signal phase difference between two or more antenna array elements of the antenna array of each of the one or more locator units. In some embodiments, the one or more signals received from the one or more locator units may indicate one or more AOA, AOD and / or AOX of each locator unit as determined by the corresponding locator unit.
[0157] At step / operation 802, computing entity 200 may include components, such as processing unit 204, system memory 206, etc., for determining the location of one or more objects within an environment based, at least in part, on one or more rotation angles of each of one or more locator units that received one or more signals from the one or more objects. In some embodiments, computing entity 200 may determine the AOA, AOD, and / or AOX between one or more locator units and one or more objects based, at least in part, on the one or more received signals from the one or more locator units and utilizing the one or more rotation angles of each locator unit as stored in associated memory, such as system memory 206. Computing entity 200 may determine the elevation and / or azimuth angles based, at least in part, on the AOA, AOD, and / or AOX. Thus, computing entity 200 may use the elevation and / or azimuth angles to determine the location of one or more objects detected by the one or more locator units. In some embodiments, the object location may be determined in two-dimensional space. In some embodiments, the object location may be determined in three-dimensional space. In some embodiments, computing entity 200 may store the coordinates of the locator units in associated memory, such as system memory 206. In some embodiments, the location of one or more objects in an environment can be determined with sub-meter accuracy.
[0158] In some embodiments, the position of one or more objects is a relative position of the objects. For example, if an object is detected by only one locator unit, the object position may be a direction relative to the locator unit and within the proximity range associated with the locator unit. In some embodiments, computing entity 200 may limit the position of the object to the proximity range of the locator unit. For example, if computing entity 200 receives an indication that locator unit 110 has detected an object, but does not receive an indication that an object has been detected by a neighboring locator unit 120, computing entity 200 may limit the object position to a proximity range 110c that does not overlap with proximity range 120c.
[0159] In some embodiments, an object may be detected by two or more locator units. Thus, computing entity 200 may utilize techniques such as triangulation to determine the location of the object with greater accuracy. For example, if an object is detected by locator units 110 and 120, computing entity 200 may determine the coordinates of the object based at least in part on the intersection of the extended liens using the AOA, AOD, AOX, azimuth, and / or elevation of each locator unit that detected the object.
[0160] Now refer to Figure 9, a flow chart of an example process 900 for causing data to be transmitted to a computing entity using a computing entity, such as computing entity 300. In some embodiments, computing entity 300 may include a locator unit configured to receive one or more signals from one or more objects within an associated proximity range. Through the various steps / operations of process 900, the locator unit may cause data indicating one or more dimension values to be transmitted and / or cause data including one or more signals indicating that one or more objects have been detected in an environment to be transmitted.
[0161] At step / operation 901, the computing entity 300 (such as a locator unit) may include means for determining one or more dimensional values related to the orientation of the computing entity 300, such as a processor 308, an IMU 350, one or more gyroscopes 352, one or more accelerometers 354, one or more magnetometers 356, and the like. In some embodiments, the one or more dimensional values may be determined using the IMU 350. In some embodiments, the one or more dimensional values may be determined using one or more accelerometers 354. In some embodiments, the one or more accelerometers 354 may determine dimensional values along the x-axis, the y-axis, and the z-axis. In some embodiments, the x-axis, the y-axis, and the z-axis may be configured at least in part based on the one or more magnetometers 356. For example, the one or more magnetometers 356 may initialize the x-axis, the y-axis, and the z-axis based at least in part on the Earth's magnetic field and / or gravity.
[0162] At step / operation 902, the computing entity 300 (such as a locator unit) may include means, such as the processor 308, the network interface 320, etc., for causing data including one or more dimension values of the locator unit to be transmitted to a computing entity (such as the computing entity 200). After the locator unit determines its one or more corresponding dimension values, it may transmit this information to a computing entity, such as the computing entity 200. Thus, the computing entity (such as the computing entity 200) may be configured to accurately determine one or more corresponding rotation angles of the locator unit.
[0163] At step / operation 903, computing entity 300 (such as a locator unit) may include means, such as processor 308, network interface 320, etc., for causing data including one or more signals indicating that one or more objects have been detected in the environment to be transmitted to a computing entity (such as computing entity 200). The locator unit may be configured to detect one or more objects within its proximity by receiving one or more signals from the objects. The locator unit may transmit data including one or more signals indicating that the objects have been detected to computing entity 200. This will be Figure 11 Discussed in more detail in .
[0164] In some embodiments, step / operation 901 may be performed according to Figure 10 The various steps / operations depicted in the process 1000 are performed, Figure 10 is a flow chart of an example procedure for detecting changes in one or more dimension values of a computing entity 300 , such as a locator unit.
[0165] At step / operation 1001, a computing entity 300 (such as a locator unit) may include means for detecting a change in one or more dimension values, such as a processor 308, an IMU 350, one or more gyroscopes 352, one or more accelerometers 354, one or more magnetometers 356, and the like. The change in one or more dimension values may be caused by a change in orientation, such as when the locator unit is moved, bumped, or otherwise changed in orientation. In some embodiments, the change in one or more dimension values may be determined by the IMU 150. In some embodiments, the change in one or more dimension values may be determined by one or more accelerometers 354. For example, one or more dimension values may be determined using one or more accelerometers 354, which may be configured to measure acceleration forces in the x-axis, y-axis, and / or z-axis. In the presence of acceleration forces in the x-axis, y-axis, and / or z-axis, the processor 308 may determine that a change in one or more dimension values has occurred.
[0166] At step / operation 1002, the computing entity 300 (such as a locator unit) may include components for determining whether a change in one or more dimension values satisfies one or more predefined dimension thresholds, such as a processor 308, volatile memory 322, non-volatile memory 324, an IMU 350, one or more gyroscopes 352, one or more accelerometers 354, one or more magnetometers 356, and the like. The predefined dimension thresholds may be configured to control the sensitivity of the locator unit's orientation. In some embodiments, the predefined dimension thresholds may be dimension values or percentages. For example, the dimension threshold may be 2°, such that any acceleration force exceeding 2° of rotation in the x-axis, y-axis, and / or z-axis satisfies the predefined dimension threshold. In some embodiments, the predefined dimension threshold may require two or more changes in dimension values. For example, for two or more acceleration forces, the dimension threshold may be 2°, such that two of the three acceleration forces exceeding 2° of rotation in the x-axis, y-axis, and / or z-axis satisfy the predefined dimension thresholds. One or more predefined dimension thresholds may be uniquely configurable for the locator unit. Thus, the predefined dimensionality threshold may control the sensitivity of detecting orientation changes of one or more locator units and, therefore, may reduce network traffic and bandwidth usage as well as computing resources and storage.
[0167] In some embodiments, the processor 308 of the locator unit may store one or more dimension values in an associated memory, such as the volatile memory 322 and / or the non-volatile memory 324. In the event that a change in one or more dimension values is detected as described in step / operation 1001, the locator unit may utilize the processor 308 to determine the magnitude of the change in each of the one or more dimension values. In some embodiments, the processor 308 may access the volatile memory 322 and / or the non-volatile memory 324 to determine the one or more dimension values that were previously detected and stored.
[0168] In the event that one or more dimension values do not satisfy one or more predefined dimension thresholds, no action is taken and the locator unit returns to step / operation 1001 to monitor and / or detect changes in one or more dimension values.
[0169] In the event that the one or more dimension values satisfy one or more predefined dimension thresholds, the locator unit proceeds to step / operation 1003. At step / operation 1003, the computing entity 300 (such as the locator unit) may include means, such as the processor 308, the network interface 320, etc., for causing the transmission of the one or more dimension values to be provided to the computing entity (such as the computing entity 200). This may be substantially similar to step / operation 902. Here, the locator unit has determined a sufficient change in its orientation (e.g., one or more dimension values satisfy one or more predefined dimension thresholds) and notifies the computing entity, such as the computing entity 200, of the change. Thus, the computing entity 200 is informed of the real-time or near real-time orientation of the locator unit.
[0170] In some embodiments, step / operation 903 may be performed according to Figure 11 The various steps / operations depicted in the procedure 1100 are performed, Figure 11 is a flow diagram of an example procedure for a computing entity 300 , such as a locator unit, to detect one or more objects in an environment.
[0171] At step / operation 1101, a computing entity 300 (such as a locator unit) may include components for detecting one or more signals from one or more objects in an environment, such as a processor 308, one or more receivers 306, one or more transmitters 304, and the like. In some embodiments, the locator unit may detect one or more signals, such as one or more BT signals, from an object (such as a tag). This may be caused by the tag being located within proximity of the locator unit, causing the one or more receivers 306 of the locator unit to receive the one or more signals transmitted from the object. Thus, the locator unit may detect objects within its proximity. In some embodiments, the one or more signals received by the locator unit, such as by utilizing one or more receivers 306, may indicate a signal phase. In some embodiments, the one or more signals received from one or more locator units, such as by utilizing one or more receivers 306, may indicate a signal phase difference between two or more receivers 306. In some embodiments, the one or more signals received by the locator unit may be used to determine one or more AOAs, AODs, and / or AOXs between the object and the locator unit, such as by utilizing the processor 308.
[0172] At step / operation 1102, a computing entity 300 (such as a locator unit) may include means, such as a processor 308, a network interface 320, etc., for causing the transmission of data comprising one or more signals to be provided to a computing device (such as computing device 200). In some embodiments, the locator unit may transmit data comprising the signal phase of each antenna array element (e.g., one or more receivers 306). In some embodiments, the locator unit may transmit data comprising the signal phase difference between two or more antenna array elements. In some embodiments, the locator unit may transmit data comprising the AOA, AOD, and / or AOX between one or more objects and the locator unit. Thus, a computing entity (such as computing entity 200) may be provided with means for determining the location of an object in an environment.
[0173] The above description of the various embodiments disclosed herein and the corresponding drawings and the contents described in the abstract are described herein for illustrative purposes and are not intended to be exhaustive of the disclosed embodiments or to limit the disclosed embodiments to the precise forms disclosed. It should be understood that one of ordinary skill in the art will recognize that other embodiments with modifications, permutations, combinations, and additions may be implemented to perform the same, similar, alternative, or substituted functions of the disclosed subject matter and are therefore considered to be within the scope of the present disclosure. Therefore, the disclosed subject matter should not be limited to any single embodiment described herein, but should be interpreted according to the breadth and scope of the following claims.
Claims
1. A method for automatically configuring one or more rotation angles of one or more associated locator units, the method comprising: receiving, from the one or more locator units, one or more dimensional values related to an orientation of the one or more locator units; determining one or more rotation angles for each of the one or more locator units based at least in part on the one or more received dimension values for each of the one or more locator units and a configuration table associated with a locator unit type, wherein determining the one or more rotation angles for the one or more locator units comprises: comparing the one or more received dimension values for each of the one or more locator units with one or more dimension values associated with the locator unit type in the configuration table that correspond to one or more rotation angles, wherein the determined one or more rotation angles correspond to one or more dimension values in the configuration table that match the one or more received dimension values; storing the one or more rotation angles of the each of the one or more locator units in a memory; and A position of one or more objects in an environment is determined based at least on the one or more rotation angles of each of the one or more locator units.
2. The method according to claim 1, wherein The one or more dimensional values associated with the orientation of the one or more localizer units correspond to a roll value, a pitch value, and a yaw value, and wherein the configuration table associated with the localizer unit type provides one or more corresponding rotation angles for specific roll values, pitch values, and yaw values.
3. The method of claim 1 , wherein determining the one or more rotation angles of the one or more locator units comprises applying one or more mathematical operations, wherein the one or more mathematical operations use one or more values based at least in part on one or more received dimension values for each locator unit and one or more rotation angles in the configuration table associated with the locator unit type.
4. The method according to claim 1, further comprising receiving one or more signals from the one or more locator units indicating that the one or more locator units detected one or more objects in the environment; and The location of the one or more objects within the environment is determined based at least in part on the one or more rotation angles of each of the one or more locator units that received the one or more signals from the objects. 5 . The method of claim 4 , wherein the one or more signals indicate an angle of arrival or an angle of departure between each of the one or more locator units and each of the one or more objects.
6. The method of claim 1, wherein the one or more dimensional values related to the orientation of the one or more locator units are received if the change in the orientation of the one or more locator units satisfies one or more predefined dimensional thresholds.
7. The method according to claim 1, further comprising: stopping one or more locator procedures involving the one or more locator units whose one or more dimension values related to the orientation of the one or more locator units have been received; as well as After the one or more rotation angles of each of the one or more locator units have been determined, the one or more locator procedures involving the one or more locator units are resumed.
8. A device comprising: an antenna array comprising one or more antenna array elements; Inertial measurement unit; At least one processing component, the at least one processing component being configured to: determining one or more dimensional values related to the orientation of the device by utilizing the inertial measurement unit; comparing the one or more dimension values to one or more predefined dimension thresholds to determine a change in orientation of the apparatus; causing transmission of data comprising the one or more dimension values to be provided to a computing entity based on a change in orientation of the apparatus; and The transmission of data comprising one or more signals to be provided to the computing entity is caused, the one or more signals indicating that one or more objects have been detected in the environment.
9. The apparatus of claim 8, wherein the at least one processing component is further configured to: detecting, by utilizing the inertial measurement unit, a change in one or more dimensional values related to an orientation of the apparatus; determining whether the change in the one or more dimension values satisfies one or more dimension thresholds; and A data transmission including the one or more dimension values is caused to be provided to the computing entity if the one or more dimension values satisfy the one or more dimension thresholds.
10. The apparatus according to claim 8, wherein the at least one processing component is further configured to: One or more signals from one or more objects in an environment are detected by utilizing one or more antenna array elements, wherein The one or more objects are configured to transmit one or more signals, and the one or more antenna array elements are configured to receive one or more signals; as well as The transmission of data comprising one or more signals received by the one or more antenna array elements from the one or more objects is caused to be provided to the computing device.
11. The device according to claim 10, wherein The one or more signals indicate an angle of arrival or an angle of departure between each of the one or more antenna array elements and each of the one or more objects.
12. The apparatus according to claim 8, wherein The one or more dimension values correspond to roll, pitch, and yaw values.
13. The apparatus according to claim 8, wherein The computing device operates in a cloud computing environment.
14. The apparatus according to claim 8, wherein The inertial measurement unit includes a gyroscope, an accelerometer, and a magnetometer.
15. An apparatus for automatically configuring one or more rotation angles for one or more associated locator units, the apparatus comprising at least one processing component configured to: receiving, from the one or more locator units, one or more dimensional values related to an orientation of the one or more locator units; determining one or more rotation angles for each of the one or more locator units based at least in part on the one or more received dimension values for each of the one or more locator units and a configuration table associated with a locator unit type, wherein Determining one or more rotation angles of the one or more locator units comprises: comparing one or more received dimension values for each of the one or more locator units with one or more dimension values associated with the locator unit type in the configuration table that correspond to one or more rotation angles, wherein the determined one or more rotation angles correspond to one or more dimension values in the configuration table that match the one or more received dimension values; storing the one or more rotation angles of the each of the one or more locator units in a memory; and A position of one or more objects in an environment is determined based at least on the one or more rotation angles of each of the one or more locator units.
16. The apparatus according to claim 15, wherein The one or more dimensional values associated with the orientation of the one or more localizer units correspond to a roll value, a pitch value, and a yaw value, and wherein the configuration table associated with the localizer unit type provides one or more corresponding rotation angles for specific roll values, pitch values, and yaw values.
17. The apparatus according to claim 15, wherein the at least one processing component is further configured to: receiving one or more signals from the one or more locator units indicating that the one or more locator units detected one or more objects in the environment; and The location of the one or more objects within the environment is determined based at least in part on the one or more rotation angles of each of the one or more locator units that received the one or more signals from the objects.
Citation Information
Patent Citations
Vehicle position tracking technique
US5592181A