The present disclosure generally relates to estimating the offset of a clock on a remote system, and more specifically, to a system and method for remote clock estimation for reliable communications.
Increasingly, tasks are being completed by workers who are located at a site that is remote to the work location. This saves people time and money commuting, increases productivity, and reduces stress therefore offering a host of intangible benefits to society.
In one application, medical professionals may wish to distribute the tracked coordinates of tools and other objects within some field of operation to two or more different systems that will be in use during surgeries. It is important that the distributed tracking information not be too old when it is used to make critical decisions, where coordinates that are too old could lead to making incorrect decisions or displaying invalid information. Examples include how to position a robotic arm relative to some position of a tool during a surgical procedure and where to display the position of the tool relative to critical structures (such as arteries or tumors) in medical images.
Because the different systems consuming tracked object coordinates are typically connected via an Ethernet network, there are at least two sources of error when determining whether a coordinate is safe to use, including differences in the values of the clocks between the two systems and latency due to network communications.
Conventional approaches for determining network latency and clock offset between two or more systems have considerable shortcomings and are not necessarily suitable for use when computing devices are separated by an Ethernet network, wireless communication protocols and/or the Internet. It would be desirable to have a system and method for determining network latency and clock offset that provides an upper bound on these values and makes it feasible to use Ethernet connections or even Internet connections for mission critical communications where timing is critical.
One aspect of the present description provides an electronic device including a processor, a communications interface coupled to the processor, a memory coupled to the processor, and a module saved in the memory. The module configures the processor to receive a first communications packet from a remote device via the communications interface including information useful for estimating a clock offset of the remote device, and determine an upper bound of the clock offset of the remote device with respect to the electronic device based on the information.
Another aspect of the present description provides a method of determining an upper bound of a clock offset of a remote device relative to an electronic device, the electronic device including a processor, a communications interface coupled to the processor, a memory coupled to the processor, and a module saved in the memory. The module configures the processor to perform the method comprising receiving a first communications packet from the remote device via the communications interface including information useful for estimating a clock offset of the remote device, and determining the upper bound of the clock offset of the remote device with respect to the electronic device based on the information.
A further understanding of various aspects of the subject matter can be realized by reference to the following detailed description and drawings.
In order that the subject matter may be readily understood, embodiments are illustrated by way of examples in the accompanying drawings, in which:
Various embodiments and aspects of the disclosure will be described with reference to details discussed below. The following description and drawings are illustrative of the disclosure and are not to be construed as limiting the disclosure. Numerous specific details are described to provide a thorough understanding of various embodiments of the present disclosure. However, in certain instances, well-known or conventional details are not described in order to provide a concise discussion of embodiments of the present disclosure.
The systems and methods described herein may be useful in the field of neurosurgery, including oncological care, neurodegenerative disease, stroke, brain trauma and orthopedic surgery; however persons of skill will appreciate the ability to extend these concepts to other conditions or fields of medicine. It should be noted that the surgical process is applicable to surgical procedures for brain, spine, knee and any other suitable region of the body that will benefit from the use of an access port or small orifice to access the interior of the human body. While the medical field and, specifically, medical procedures and/or surgery are used as examples of applications of the subject matter of the present description, it should be appreciated that the system and method of the present application can be applied to any application where it is important to have an accurate estimate or upper bound on the offset of a clock of a remote system connected to a local system through a network. Additional possible applications include aerospace communications, aviation, telecommunications, data backup and archival systems, geolocation, etc.
Various apparatuses or processes will be described below to provide examples of embodiments of the method and system disclosed herein. No embodiment described below limits any claimed embodiment and any claimed embodiments may cover processes or apparatuses that differ from those described below. The claimed embodiments are not limited to apparatuses or processes having all of the features of any one apparatus or process described below or to features common to multiple or all of the apparatuses or processes described below. It is possible that an apparatus or process described below is not an embodiment of any claimed subject matter.
Furthermore, numerous specific details are set forth in order to provide a thorough understanding of the embodiments described herein. However, it will be understood by those skilled in the relevant arts that the embodiments described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the embodiments described herein.
Referring to
A new approach to resection of brain tumors and ICHs is the use of a small port to access the tumor or ICH. The port is typically a hollow tube inserted into the brain for the purpose of minimally-invasive neurosurgery. The port is inserted via a very small burr hole craniotomy into a sulcus of the brain. Because the port follows a sulcus, the port compromises less white matter. Resection of the tumor is conducted via instruments inserted into the port. In such highly delicate surgeries requiring highly specialized medical professionals, some of the professionals that should be assigned to work on certain patients are often located at remote locations. In some cases, the medical professional may only be able to participate in the medical procedure remotely using computer equipment remotely connected. Such remote participation benefits from very reliable network communications where timing differences caused by network latency and clock offset between different systems is well understood and known.
Referring to
A patient's anatomy may be held in place by a holder. For example, in a port-based neurosurgical procedure the patient's head may be held in place by a head holder 217, and an access port 206 and an introducer 210 may be inserted into the patient's head. The introducer 210 may be tracked using a tracking camera 213, which provides position information for the navigation system 200. The tracking camera 213 may also be used to track tools and/or materials used in the surgery, as described in more detail below. In one example, the tracking camera 213 may be a 3D optical tracking stereo camera, similar to one made by Northern Digital Imaging (NDI), configured to locate reflective sphere tracking markers 212 in 3D space. In another example, the tracking camera 213 may be a magnetic camera, such as a field transmitter, where receiver coils are used to locate objects in 3D space, as is also known in the art. In some examples, cameras such as the tracking camera 213 may be used to provide an image to a medical professional located at a remote location. In some examples, any number of cameras needed to accommodate a remotely located medical professional may be suitably used and placed in the medical navgiation system 200.
Location data of the mechanical arm 202 and access port 206 may be determined by the tracking camera 213 by detection of tracking markers 212 placed on these tools, for example the introducer 210 and associated pointing tools. Tracking markers may also be placed on surgical tools or materials to be tracked. The secondary display 205 may provide output of the tracking camera 213. In one example, the output may be shown in axial, sagittal and coronal views as part of a multi-view display.
As noted above with reference to
In some examples, the exemplary medical navigation system 200 may even have one or more robotic arms (not shown) that are controlled, at least in part, by a medical professional located at a remote location, thus allowing a medical procedure or surgery to be conducted, at least in part, by a medical professional located at a remote location.
Referring to
In a further embodiment, various 3D volumes, at different resolutions, may each be captured with a unique time-stamp and/or quality metric. This data structure provides an ability to move through contrast, scale and time during the procedure and may also be stored in data storage device 342.
Medical instruments 360 are identifiable by control and processing unit 300. Medical instruments 360 may be connected to and controlled by control and processing unit 300, or medical instruments 360 may be operated or otherwise employed independent of control and processing unit 300. Tracking system 321 may be employed to track one or more of medical instruments and spatially register the one or more tracked medical instruments to an intraoperative reference frame. Tracking system 321 may include the tracking camera 213 shown in
Control and processing unit 300 may also interface with a number of configurable devices and may intraoperatively reconfigure one or more of such devices based on configuration parameters obtained from configuration data 352. Examples of devices 320, as shown in
Exemplary aspects of the disclosure can be implemented via processor(s) 302 and/or memory 304. For example, the functionalities described herein can be partially implemented via hardware logic in processor 302 and partially using the instructions stored in memory 304, as one or more processing modules or engines 370. Example processing modules include, but are not limited to, user interface engine 372, tracking and/or communications module 374, motor controller 376, image processing engine 378, image registration engine 380, procedure planning engine 382, navigation engine 384, and context analysis module 386. While the example processing modules are shown separately in
It is to be understood that the system is not intended to be limited to the components shown in
Some embodiments may be implemented using processor 302 without additional instructions stored in memory 304. Some embodiments may be implemented using the instructions stored in memory 304 for execution by one or more general purpose microprocessors. Thus, the disclosure is not limited to a specific configuration of hardware and/or software.
While some embodiments can be implemented in fully functioning computers and computer systems, various embodiments are capable of being distributed as a computing product in a variety of forms and are capable of being applied regardless of the particular type of machine or computer readable media used to actually effect the distribution. For examples, there may be at least two control and processing units 300 located at different locations. For example, a first control and processing unit 300 may be located at a location of a medical procedure and a second similar control and processing unit 300 may be located at a remote location where a medical professional will participate in the medical procedure remotely. The first and second control and processing units 300 may communicate through the communications interface 310, where each may be connected to an Ethernet cable or wireless networking technology with various networks and/or the Internet ultimately connecting the first and second control and processing units 300.
At least some aspects disclosed can be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.
A computer readable storage medium can be used to store software and data which, when executed by a data processing system, causes the system to perform various methods. The executable software and data may be stored in various places including for example ROM, volatile RAM, nonvolatile memory and/or cache. Portions of this software and/or data may be stored in any one of these storage devices.
Examples of computer-readable storage media include, but are not limited to, recordable and non-recordable type media such as volatile and non-volatile memory devices, read only memory (ROM), random access memory (RAM), flash memory devices, floppy and other removable disks, magnetic disk storage media, optical storage media (e.g., compact discs (CDs), digital versatile disks (DVDs), etc.), among others. The instructions may be embodied in digital and analog communication links for electrical, optical, acoustical or other forms of propagated signals, such as carrier waves, infrared signals, digital signals, and the like. The storage medium may be the internet cloud, or a computer readable storage medium such as a disc.
At least some of the methods described herein are capable of being distributed in a computer program product comprising a computer readable medium that bears computer usable instructions for execution by one or more processors, to perform aspects of the methods described. The medium may be provided in various forms such as, but not limited to, one or more diskettes, compact disks, tapes, chips, USB keys, external hard drives, wire-line transmissions, satellite transmissions, internet transmissions or downloads, magnetic and electronic storage media, digital and analog signals, and the like. The computer useable instructions may also be in various forms, including compiled and non-compiled code.
Conventional solutions for determining clock offsets (e.g., of a remote system relative to a local system) use a request/response method of network communications to request a new coordinate update. The timestamp of the coordinate data can then be bounded by the time of the request made from the local system and the time the response was received on the local system.
Another conventional solution is to use NTP (Network Time Protocol) to try to synchronize the clocks between two systems. When successful, this method will keep the difference in clocks between different systems small enough that a local system can treat a remote system's timestamps as if they were generated locally.
A problem with the conventional request/response method is that it introduces latency due to network round trips. The proposed method of determining the clock offset of a remote system relative to a local system allows coordinate data to be asynchronously pushed to destination systems from the source system, reducing latency by over half, on average, from the request/response method.
A problem with the conventional NTP approach is that it is often complex and error prone to set up, configure, troubleshoot. Some systems may not support NTP due to this complexity. For example, some robotic arm controllers do not have an NTP implementation. The proposed method of determining the clock offset of a remote system relative to a local system is simpler to implement and configure than an NTP client.
An additional problem with NTP is that it tracks an average offset in the clock from one system to another. For safety purposes, a system such as the medical navigation system 200 that may include remotely located participants in a medical procedure may need to know a worst case upper bound on the possible offset of the system clock of a remote system so that estimates of the age of some coordinate data will present a worst case scenario (i.e., the coordinate may appear older than it actually is but no newer than it actually is). The NTP doesn't expose any of its internal statistics to the rest of the system so there is no way for the rest of the system to derive a worst case bound on the clock offset value. The proposed method of determining the clock offset of a remote system relative to a local system may specifically calculate the worst case upper bound on the remote clock offset and may also transparently provide the statistics used to derive the upper bound.
Further, NTP does not factor in the Δ2−Δ0 term (described below) into the calculation of clock offset. The NTP is based on User Datagram Protocol (UDP), which has minimal queuing effects, and assumes that the latency between systems is symmetric, such that the term Δ2−Δ0 value in the NTP calculation of offset is always zero. However, in some scenarios it is more desirable to use the Transmission Control Protocol (TCP) and/or WebSocket, which do introduce queuing effects, and therefore it cannot be assumed the term Δ2−Δ0 is zero. Therefore, one aspect of the present description introduces A to obtain an upper bound on the value Δ2−Δ0 (described below).
The present application aims to provide a means to accurately estimate the offset of a clock of a remote system relative to the clock on the local system such that coordinate data (e.g., data that may be related to a remote participant using a remote system communicating with the medical navigation system 200) marked with the timestamp of the remote system can be accurately transformed into a timestamp of the local system (e.g., the medical navigation system 200 including the control and processing unit 300) such that the local system can accurately determine the maximum possible age of the coordinate data before deciding to use the coordinate data.
In order to implement the method of the present application, two pairs of timestamps are used, which may occur temporally in order according to some independent observer, defined as follows:
Part One:
Part Two:
For the purpose of the example provided herein, the remote system (referred to below as the remote device) may be a remote system communicating with the medical navigation system and the local system may be the medical navigation system 200 including the control and processing unit 300 (referred to below as an electronic device 300).
It may be easy to see how such timestamps T1, T2, T3, and T4 may be ordered in a conventional explicit request/response system to form a measurement. However, the current method does not require an explicit request/response system to form a measurement. Instead, the current system and method may simply add the timestamps T1, T2, and T3 into communications packets including independent messages (e.g., payload data) already being transmitted between the local and remote systems.
Referring to
At a first block 402, an electronic device 300 (e.g., the local system such as the medical navigation system 200 including an electronic device such as the control and processing unit 300) may prepare and send (e.g., via the communications interface 310) a second communications packet including T1, the timestamp of the electronic device 300 at the start of transmission of the second communications packet.
Next, blocks 404 and 406 may be performed at the remote device, as indicated by reference 401. At block 404, the second communications packet including T1 may be received by the remote device, T1 may be saved, and T2, the timestamp at the remote device (e.g., based on the remote device clock which may include an offset relative to the electronic device 300) upon receipt of the second communications packet may be determined and saved as well.
At block 406, the remote device may prepare and send a first communications packet to the electronic device 300 including T1 and T2. The remote device may also determine T3, the timestamp of the remote device at the start of transmission of first communications packet, which may also be included in the first communications packet, such that the first communications packet includes T1, T2, and T3. T3 may also be based on the remote device clock which may include the offset relative to the electronic device 300.
Next, at a block 408, the electronic device 300 may receive the first communications packet (e.g., via the communications interface 310) including T1, T2, and T3. The electronic device 300 may also determine T4, the timestamp at the electronic device 300 at receipt of the first communications packet. The electronic device may save T1, T2, T3, and T4 for use at the block 410.
While, for the purpose of simplicity in illustration, block 402 is shown to only include T1 in the second communications packet, in one example every message sent in a communications packet may include three of the four needed timestamps (T1, T2, T3) for determining an upper bound on the clock offset of the remote device, as shown at the block 406. Once the electronic device 300 and the remote device have exchanged an initial set of communications packets, the information needed to include T1, T2, and T3 in every communications packet thereafter may be available.
When a message is received at the electronic device 300 (e.g., at the block 408), the following may occur: (1) The current time on the electronic device 300 is saved in a variable called lastMessageArrivalTime; (2) The value T3 from the first communications packet is saved in variable called lastMessageRemoteTime, which may be the timestamp the remote device placed on the first communications packet as the first communications packet was submitted for transmission (e.g., at the block 406); (3) a measurement may be formed, where (a) measurement T1=message T1; (b) measurement T2=message T2; (c) measurement T3=message T3; (d) measurement T4=lastMessageArrivalTime.
When a message is sent from the electronic device 300 (e.g., at the block 402), the following steps may occur in the example where T1, T2, and T3 are all sent: (1) The communications packet is annotated with three timestamp values, where: (a) message T1=lastMessageRemoteTime; (b) message T2=lastMessageArrivalTime; (c) message T3=current time on the electronic device 300.
The method 400 may be symmetric with respect to both the electronic device 300 (e.g., the local system) and remote device (e.g., the remote system), such that whenever the second or subsequent message is received by either the local or remote system, an offset determination can be made on a system relative to the other, and there is no explicit request/response cycle that needs to occur. The first message may not be used to derive a measurement because the values lastMessageArrivalTime and lastMessageRemoteTime may not have been initialized to a valid state, as shown in the simplified example illustrated in
Next, at a block 410, the electronic device 300 may determine an upper bound on the clock offset of the remote device relative to the electronic device 300 clock. The following equations show an example of how measurements (e.g., T1, T2, T3, and T4) obtained by the method 400 at the blocks 402-408 may be used at the block 410 to calculate an upper bound on the offset of a remote device clock from the electronic device 300 clock. The following values may be defined:
Given the values defined above, the following is true:
T2=T1+Δ0+θ
T3=T2+Δ1
T4=T3+Δ2−θ
Δ=Δ0+Δ1+Δ2
Δ=T4−T1
Δ1=T3−T2
Δ0+Δ2=(T4−T1)−(T3−T2)
and, solving for θ:
Because the terms Δ2 and Δ0 cannot be calculated directly, a term that provides an upper bound on the value Δ2−Δ0 is sought, such that an upper bound on θ may be determined. λ is introduced, which can be calculated from the values T1, T2, T3, and T4:
Hence by triangle inequality and positivity of the delta values:
Where we introduce θu as an upper bound on |θ|.
The above inequality can be expressed entirely in terms of T1, T2, T3, T4. Let α=(T2−T1)+(T3−T4):
Thus θu represents the upper bound on the magnitude of the offset of the remote device clock from the electronic device 300 clock.
In another example, the calculation shown above may be refined by adding an additional term to some of the values shown above to represent the maximum likely drift of the two clocks (e.g., of the electronic device 300 and of the remote device) relative to each other. This additional term is called dispersion. The calculations of the dispersion terms are not shown in the present discussion.
Given a timestamp R obtained from the remote device, the corresponding timestamp L on the electronic device 300 may be calculated by:
L=R−θu
Now that the timestamp L corresponding to the timestamp R of coordinate data received from a remote device, its age may be calculated as follows:
Age=Lnow−L
Where Lnow is the current time on the electronic device 300.
Some or all of the calculations shown above may be calculated by the electronic device 300 in performing the block 410 of the method 400. Once the upper bound of the clock offset of the remote device is determined, a metric exists for determining the maximum possible age (variable Age, shown above), which provides the electronic device 300 with the upper bound on the possible age of data received from the remote device. In the example of a remote participant using a remote system communicating with the medical navigation system 200, a decision can then be made (either automatically by the remote device or the electronic device 300 or by a user of either system who is presented with the Age value) whether it is still safe to use any commands issued by the remote participant, or whether the remote participant should, for example, be first sent updated information and be given a chance to reconsider any commands that were issued.
Referring now to
At the block 402 (
The electronic device 300 running application A 502 may prepare the communications packet and send the communications packet, using for example a TCP/IP protocol, indicated by reference 508, over a network 510. The network 510 may include, for example, an Ethernet connected local area network (LAN) and/or a Wide Area Network (WAN) such as the Internet.
At the block 404 (
At the block 406 (
T1 (second communications packet)=not used in first communications packet;
T2 (second communications packet)=not used in first communications packet;
T3 (second communications packet)=T1 (first communications packet);
T4 (at receipt of second communications packet)=T2 (first communications packet); and
T3 (first communications packet)=new value determined by remote device when sending first communications packet.
The remote device determines T3, the timestamp of the remote device indicating the start of transmission of first communications packet, which may also be included in the first communications packet, such that the first communications packet includes T1, T2, and T3, as indicated by reference 516. The first communications packet also includes Message (B) (e.g., the data or payload being sent in the first communications packet).
The remote device running application B 504 may prepare the communications packet and send the communications packet, using for example a TCP/IP protocol, indicated by reference 512, over the network 510.
At the block 408 (
As indicated with reference to
While the applicant's teachings described herein are in conjunction with various embodiments for illustrative purposes, it is not intended that the applicant's teachings be limited to such embodiments. On the contrary, the applicant's teachings described and illustrated herein encompass various alternatives, modifications, and equivalents, without departing from the embodiments, the general scope of which is defined in the appended claims. Except to the extent necessary or inherent in the processes themselves, no particular order to steps or stages of methods or processes described in this disclosure is intended or implied. In many cases the order of process steps may be varied without changing the purpose, effect, or import of the methods described.
The present application is a continuation of and claims priority to U.S. patent application Ser. No. 15/655,223, filed Jul. 20, 2017; which itself is a continuation of and claims priority to U.S. patent application Ser. No. 14/972,332, filed Dec. 17, 2015 (now U.S. Pat. No. 9,735,951, issued Aug. 15, 2017); which itself is a continuation of and claims priority to U.S. patent application Ser. No. 14/315,595, filed Jun. 26, 2014 (now U.S. Pat. No. 9,294,265, issued Mar. 22, 2016); the entireties of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
6259677 | Jain | Jul 2001 | B1 |
9294265 | Thomas | Mar 2016 | B2 |
9735951 | Thomas | Aug 2017 | B2 |
10469244 | Thomas | Nov 2019 | B2 |
20030050733 | Wang | Mar 2003 | A1 |
20070055144 | Neustadter | Mar 2007 | A1 |
20070086489 | Carlson | Apr 2007 | A1 |
20070086490 | Carlson | Apr 2007 | A1 |
20070270690 | Woerlein | Nov 2007 | A1 |
20080004603 | Larkin | Jan 2008 | A1 |
20080151771 | Dowse | Jun 2008 | A1 |
20090276542 | Aweya et al. | Nov 2009 | A1 |
20100034103 | Froehlich et al. | Feb 2010 | A1 |
20100220692 | Diab et al. | Sep 2010 | A1 |
20120117180 | Ranasinghe | May 2012 | A1 |
20120159001 | Liu et al. | Jun 2012 | A1 |
20130170507 | Hsueh et al. | Jul 2013 | A1 |
20140010515 | Lee | Jan 2014 | A1 |
20140064303 | Aweya et al. | Mar 2014 | A1 |
20140078517 | Ben-Yishai | Mar 2014 | A1 |
20140213193 | Zhang | Jul 2014 | A1 |
20140247839 | Kingsley | Sep 2014 | A1 |
20150092797 | Aweya | Apr 2015 | A1 |
Number | Date | Country | |
---|---|---|---|
20200028665 A1 | Jan 2020 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15655223 | Jul 2017 | US |
Child | 16588122 | US | |
Parent | 14972332 | Dec 2015 | US |
Child | 15655223 | US | |
Parent | 14315595 | Jun 2014 | US |
Child | 14972332 | US |