Embodiments of the present invention relate to the field of networked electronic devices. Specifically, embodiments of the present invention relate to establishing a common coordinate system and coordinates for nodes in a network of electronic devices.
It is becoming increasingly useful to establish a network of electronic devices that know their respective coordinates in a common coordinate system. For example, the network of electronic devices can be used to assist navigation through a building. Assume a person desires to locate a printer in a building. The user can locate the printer by navigating through the building with a hand-held device that displays a map of the building with the user's current position highlighted.
To assist in the navigation, a network of electronic devices can be placed throughout the building with each device's coordinates being known by the device and/or a back-end system. A map of the building with coordinates is developed, such that portions of the map can be displayed on a hand-held electronic device if the coordinates of the hand-held device are known. As a person holding the electronic device navigates through the building, the hand-held electronic device communicates with the other electronic devices to obtain its coordinates, such that the user's position in the building is displayed on the electronic device.
For the above and other purposes, it is useful for each electronic device to know its coordinates in the building. The well-known global positioning system (GPS) is not well suited for use inside of a building because GPS relies on receiving a satellite signal, which tends to be weak inside of buildings. Therefore, another means must be used to establish the coordinates of the various electronic devices in the building. One technique of establishing these coordinates is for a person to physically take measurements to determine a device's coordinates, which is then programmed into the electronic device and/or a back-end server. This technique is not only tedious but is error prone. Moreover, if the position of the electronic device is altered, its coordinates must be updated. For example, one of the electronic devices could be a computer system, printer, etc., which is free to be moved.
Other techniques for establishing coordinates for electronic devices in a building are not suitable for devices with limited computing power because the techniques are computationally intensive. For example, devices such as cell-phones have limited computational power, but it is very desirable to use such devices as navigation tools because they are so ubiquitous.
Thus, some techniques for establishing a coordinate system for a network of electronic devices require tedious and error prone manual steps to establish coordinates for each electronic device. Another problem with various techniques for establishing a coordinate system for a network of electronic devices is that the intense computing power required is not suitable for electronic devices with limited computing power.
Embodiments of the present invention pertain to establishing a coordinate system and coordinates for nodes in a network. One embodiment of the present invention is a method of establishing a coordinate system for a network of nodes. This embodiment includes establishing an origin of the coordinate system by receiving an indication that a first node is selected, and in response to the indication that the first node is selected, automatically determining that the first node is the origin of the coordinate system. A first axis is established for the coordinate system by receiving an indication that a second node is selected, and in response to the indication that the second node is selected, automatically determining the first axis based on a line between the first node and the second node. In other embodiments, the coordinate system is extended to a second and a third axis, respectively.
Another embodiment of the present invention is a method of propagating an established coordinate system to additional nodes. The method comprises a new node that does not yet have coordinates determining a first pair of possible coordinates for that new node, based on first distance measurements between the new node and first nodes having first respective node coordinates. One set of coordinates of the pair is a valid set of coordinates and the other are invalid. The new node determines a second pair of possible coordinates for the new node, based on second distance measurements between the new node and second nodes having second respective node coordinates. The second distance measurements comprise at least one measurement to a node not in the first nodes. For example, in an embodiment using a two-dimensional coordinate system, the new node may access distance measurements to two nodes, wherein at least one node was not used to determine the first pair of possible coordinates. The new node determines defined coordinates for the new node by determining one set of coordinates from each of the first and second pair of possible coordinates as valid coordinates and basing the defined coordinates on the determined valid coordinates.
Yet another embodiment of the present invention is a method of determining coordinates for nodes in a network. In accordance with this method, in response to a node being selected, the node broadcasts a request to other nodes for respective coordinate information of the other nodes. Based on the response to the request, the node takes one of the following steps. The node establishes itself as an origin of the coordinate system if no nodes respond to the request with coordinates. The node establishes a first axis of the coordinate system if one node responds to the request with coordinates. The node establishes a second axis of the coordinate system if two nodes respond to the request with respective coordinates. And, the node determines coordinates for the node based on distance measurements to selected nodes having established coordinates if three nodes respond to the request with respective coordinates.
Embodiments of the present invention are suited for one-, two-, and three-dimensional coordinate systems.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
In the following detailed description of embodiments of the present invention, establishing a coordinate system and coordinates for nodes in a network, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, embodiments of the present invention may be practiced without these specific details or by using alternative elements or methods. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present invention.
Some portions of the detailed descriptions which follow are presented in terms of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits that can be performed on computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, computer executed step, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “establishing” or “processing” or “computing” or “basing” or “calculating” or “determining” or “selecting” or “rejecting” or “recognizing” or “generating” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
An embodiment of the present invention establishes the coordinate system shown in
The nodes 125a-j may be classified as infrastructure nodes and mobile nodes. An infrastructure node tends to remain in the same location for substantial periods of time, although an infrastructure node can be moved. As their name suggests, a mobile node tends to be mobile. Exemplary mobile nodes are personal digital assistants (PDAs), cell-phones, etc. In
In the example in
Embodiments of the present invention are well suited to indoor networks, where the global positioning system (GPS) is not well suited because the satellite signal that GPS uses tends to be weak in indoor environments. However, the present invention is not limited to indoor networks. Embodiments of the present invention are well suited to determining coordinates for the various nodes, while requiring very little user intervention. Moreover, embodiments of the present invention do not require tedious and error prone user measurements. Furthermore, embodiments of the present invention do not require substantial computing power or complexity. For example, some embodiments use only a mathematical square root (and square) function, in addition to basic mathematical operations of addition, subtraction, multiplication, and division. Thus, embodiments of the present invention may be implemented on devices that allow for only simple mathematical functions. Further, even if devices allow for more complex mathematical functions, embodiments of the present invention save computational time when determining a node's coordinates, in comparison to more complex techniques.
The exemplary node 125 also has a processing unit 210 comprising a processor 102 and computer readable memory 104 coupled to a bus 99. Embodiments of the present invention store network information, such as coordinates of this node and other nodes in the network. Moreover, software instructions are stored on the computer readable medium 104, which when executed on the processor 102 implement embodiments in accordance with the present invention. The node 125 has an optional display, which may be used to depict a map of a building with a marker of the node's current coordinates. The node 125 may also have an optional input device 108, such as, for example, a keypad. The node 125 may also optionally have a communication interface 110, such as, for example, a serial data interface or a parallel data interface
The exemplary node 125 also has a select button 115, which may be used to notify the node 125 that it has been selected to join the network, as will be described more fully herein. It will be understood that a node may be selected in any convenient fashion. The various electronic components depicted in the exemplary node 125 may be attached to or placed near various devices, such as the devices 121 depicted in
In accordance with one embodiment of the present invention, a coordinate system is established with minimal user-intervention. In this embodiment, a node responds to being selected by establishing itself as the origin of the coordinate system. Then, the x-axis is established by a second node responding to being selected, wherein the x-axis is established as a line between the first and second node. Next, the y-axis is established by a third node responding to being selected, as described below. In this embodiment, the coordinate system is two-dimensional; however, embodiments of the present invention are well suited to one- or three-dimensional coordinate systems.
Referring to step 420 of
Referring now to
The distance between the first node 125k and second node 125l is automatically determined by either or both the first node 125k or second node 125l. The technique for measuring the distance is not critical. In one embodiment, one of the nodes (e.g., 125k) sends out an RF and an ultrasound signal, which the other node (e.g., 125l) receives and calculates the distance based on the difference in time in receiving the signals. Each node (e.g., 125k and 125l) records the distance to the other node. Furthermore, each node 125k and 125l stores an accuracy parameter, which describes an expected accuracy of a node's coordinates. Determination of the accuracy parameter will be discussed in more detail herein below.
Referring now to
To determine its coordinates and the y-axis, the third node 125m may use triangulation to calculate the values XC and YC depicted in
Referring to
In another embodiment, the coordinate system has only one-dimension. In this case, only the steps depicted in
In accordance with another embodiment of the present invention, a pre-established coordinate system is propagated to additional nodes. The coordinate system may be established in the manner of the embodiment described in
The selection of suitable nodes may be based on factors such as an accuracy parameter that defines how accurately the coordinates for a given node are believed to be and the geometric configuration of the three nodes. For example, if three nodes come too close too forming a straight line, then one of them is discarded in favor of a node that is not aligned with the other two.
Once the new node has found three suitable nodes, it determines its coordinates based on the distance between it and the three selected nodes and knowledge of the coordinates of the three selected nodes. For example, based on the distance between the new node and two other nodes, the new node determines a pair of possible coordinates. One member of the pair is valid, although it will not be exact because of imprecision in measurements. The other member of the pair is an invalid position because it is an extraneous mathematical solution. The new node then determines at least one more pair of possible coordinates, based on measurements to two nodes, wherein at least one of these nodes is not from the nodes for the first measurement.
Referring now to
N1x=Qx+(kx*(Rx−Qx)−ky*(Ry−Qy))/dQR; Eq. 1:
N1y=Qy+(kx*(Ry−Qy)+ky*(Rx−Ry))/dQR; Eq. 2:
N2x=Qx+(kx*(Rx−Qx)+ky*(Ry−Qy))/dQR; Eq. 3.
N2y=Qy+(kx*(Ry−Qy)−ky*(Rx−Ry))/dQR; Eq. 4:
The node then determines at least one more pair of possible coordinates based on measurements to another set of nodes, which it compares to the first pair of possible coordinates. A first pair of coordinates is labeled N1QR and N1QR, which were determined by measurements to nodes 125q and 125r as discussed above. A second pair of coordinates is labeled N1RS and N2RS, which were determined by measurements to nodes 125r and 125s in a manner similar to the method shown by Equations 1-4. A third pair are labeled N1QS and N2QS, which were determined by measurements to nodes 125q and 125s in a manner similar to the method shown by Equations 1-4. It will be understood that it is not required that the sets of nodes to which measurements are taken have a node in common.
In
If the distance data between nodes were exact, finding the exact coordinates of a node would be relatively simple. For example, the exact coordinates could be determined by the intersection between three circles centered on three neighbor nodes with a radius equal to the distance between the new node and the respective neighbor nodes. Unfortunately, the distance values are not perfect. Thus, embodiments of the present invention employ a technique that allows for errors in measurement of the distance between nodes, while still accurately determining the actual coordinates of a node.
Moreover, many electronic devices do not have substantial computing power. Therefore, to save computation power, embodiments of the present invention do not to use any trigonometric function. The square root function is the only mathematic function used by some embodiments. For example, Equations 1-4 above use a square root (and square) function, along with mathematical operations of addition, subtraction, multiplication, and divide.
In order to implement various processes described herein, nodes store various information about other nodes in the system. In particular, a node may store the distance between itself and each neighbor node. For each neighbor node, an accuracy parameter is stored that defines how accurate the coordinates of the neighbor node is considered to be.
In accordance with one embodiment, the accuracy parameter is an integer number between 0 and 7. An accuracy parameter of “0” means the location of the neighbor node should not be used to help another node to initialize. This is the case for a mobile node or for an infrastructure node that does not know its location. An accuracy parameter of “1” means the node is one of the three initial nodes defining the coordinate system. They are the ones with the best accuracy. Other nodes compute their accuracy by adding “1,” to the worst accuracy of any node that was used to determine that node's coordinates. Thus, a node that uses nodes with accuracies of “1”, “1”, and “3” in order to determine its coordinates will have an accuracy of “4”. The upper limit is “7”. Thus, if a node initializes from a neighbor with an accuracy of “7,” its accuracy will be 7. The present invention is not limited to using this method of defining an accuracy parameter.
In accordance with an embodiment of the present invention, the nodes that are chosen to determine the coordinates of a new node is as follows. Steps of process 600 in
The second selected node with the next best accuracy is provisionally selected, provided that the node is at least a given distance away from the node selected in step 610. Thus, in step 615 the node having the best accuracy of all remaining nodes is provisionally selected.
In step 620, the distance between the first selected node and the provisionally selected node is tested to determine if it is at least a given distance. If not, step 615 is repeated to find the node with the next best accuracy. In one embodiment, the tested distance is a pre-determined value. In another embodiment, the tested distance is learned by the system, based on an analysis of how well the system is performing. In one embodiment, the tested distance is a pre-determined value of about two meters.
After a suitable second node is found, it is kept as the second node, in step 625.
The third chosen neighbor is the node with the next best accuracy, provided that the node is at least a given distance away from both the node selected in step 610 and the node kept in 625. Moreover, if the three selected nodes are deemed to be too aligned, then one of the nodes is discarded. Thus, in step 630, the node with the next best accuracy is provisionally selected.
In step 635, the distance between the provisionally selected node and both the first and second selected nodes are tested to determine if it is at least a given distance. If not, step 630 is repeated to find the node with the next best accuracy.
After the distance test in step 635 passes, an alignment test is made in step 640. In one embodiment, the alignment test is achieved by verifying that all three angles formed by the triangle defined by the first, second, and third selected nodes are greater than a given number of degrees. In one embodiment, this angle is a pre-determined value. In another embodiment, the angle is learned by the system, based on an analysis of how well the system is performing. In one embodiment, the angle is a pre-determined value of about 25 degrees.
If a node must be discarded in step 640, then step 630 is repeated until a suitable node is found, if possible. If a suitable third node is found, it is kept in step 645. The process 600 then ends. While not depicted in
In step 720, in response to the node being activated, the node broadcasts a request to other nodes for respective coordinate information of the other nodes. Based on the response to the request, the node takes one or more of steps 740-785.
The node establishes itself as an origin of the coordinate system if no nodes respond to the request with its coordinates, in step 740.
The node establishes a first axis of the coordinate system if one node responds to the request with its coordinates, in step 750. Step 750 may comprise accessing distance measurements between the node and the other node that responded.
The node establishes a second axis of the coordinate system if two nodes respond to the request with coordinates, in step 760. Step 760 may comprise accessing distance measurements between the node and the other nodes that responded.
The node determines coordinated for the node based on distance measurements to selected nodes having established coordinates if three nodes respond to the request with respective coordinates, in step 770.
If step 770 is taken, then the node takes several additional steps. Otherwise process 700 ends. Those additional steps are to determine pairs of potential coordinates based on distances between the node and nodes having established coordinates, in step 775.
The node selects one set of coordinates from each of the pairs of potential coordinates to form valid coordinates, in step 780.
The node bases coordinates of the node on the valid coordinates, in step 785. Step 785 may comprise determining the center of gravity of the valid sets of coordinates, although other techniques may be used. This ends process 700.
While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the below claims.