EVENT MONITORING
BACKGROUND OF THE INVENTION
This invention is related to monitoring an environment and, in particular, to recording, for later evaluation, the state of the environment at times proximate to the occurrence of an event. The invention can be used to record, for example, digital video or audio data representing the state of an environment immediately before, during and/or immediately after a triggering event.
There are a variety of situations in which it is desirable to monitor an environment. An "environment" to be monitored can include, for example, an activity or a location (either physical or virtual) . Frequently when monitoring an environment, activity of particular interest occurs just before, during, or just after (i.e., "proximate to") the occurrence of a particular event or type of event. Some monitoring systems have obtained and recorded analog data, such as an analog videotape recording, so that the state of the environment during the period of monitoring can be subsequently evaluated. However, such monitoring systems are inadequate in enabling quick review of a particular period of time proximate to a particular event of interest, since it may be necessary to search through the entire set of data (e.g., videotape) to locate the time period of interest and, even if the location of the time period of interest is known, it is often necessary to progress through a relatively large portion of the data before accessing that time period.
Other monitoring systems have obtained and recorded digital data, such as digital video data, to enable later evaluation of the state of the environment. The digital data has been recorded directly on a persistent storage
medium, such as a hard disk. However, because accessing such storage media is relatively time consuming, the rate at which data can be obtained and recorded by such monitoring systems is limited. For example, when digital video data is recorded on a hard disk, the data for a typical video monitoring system can only be obtained at a rate of approximately one frame per second. This rate is far too slow to enable an acceptable moving picture display to be generated (for comparison, television pictures are updated at a rate of 30 frames per second) , and may be slow enough to cause critical data to be missed (e.g., a moving object may only appear during a time between frames) or misinterpreted (e.g., the direction of movement of a moving object that is seen in one of the frames may not be susceptible of determination) . Hard disks having somewhat greater speed are technologically possible; however, their cost is prohibitive. Additionally, hard disks operating at high speeds have decreased reliability. Further, the large amount of storage capacity available on typical persistent storage media is often not necessary for recording activity that is proximate in time to the occurrence of a particular event. In such situations, if the persistent storage media is used to record all of the digital video data, a large amount of data that is not of interest is recorded. This may make it difficult or time consuming to find the data of interest.
Consequently, it is desirable to be able to obtain and record data representing the state of an environment in a manner that enables data of interest, e.g., data proximate to a particular event, to be retrieved easily and quickly. If the obtained data is digital, it is desirable to be able to obtain the data at a fast rate that enables generation of an acceptable moving picture and that ensures, with a high degree of certainty, that all important information is captured and capable of
accurate evaluation. It is also desirable to store the obtained data in a way that minimizes the storage capacity (and, thus, the expense) required. Finally, it is desirable to be able to obtain and store data of more than one type, e.g., audio, video.
SUMMARY OF THE INVENTION
The invention monitors an environment and records, for later evaluation, data representing the state of the environment at times proximate to the occurrence of an event. Any type of data or combination of types of data, such as video and/or audio data, can be used to monitor the environment. The invention enables a high degree of flexibility in defining the particular data to be obtained: variable amounts of data can be obtained before the event, after the event, or both before and after the event. The invention is implemented so that data can be obtained quickly, reducing the possibility that important data will be missed and enhancing the quality of the display of the data. Only the data of interest, i.e., the data proximate to the event, is stored, thereby minimizing the required storage capacity and enabling the data to be accessed quickly and easily.
In one embodiment, the invention remotely monitors the environment by: 1) recording data representing the state of one or more characteristics of the environment; 2) detecting the occurrence of a triggering event in the environment; 3) transferring, to a remote location, event data that is proximate in time to the triggering event; and 4) presenting the event data for evaluation at the remote location. The data is recorded in a memory that is partitioned into a multiplicity of blocks. The data is successively stored in the memory blocks. Once data storage in a memory block is begun, data is stored in that memory block until the memory block is filled with data. Once data has been stored in each of
the memory blocks, data storage begins again in the first memory block in which data was stored. The data is once again successively stored in the memory blocks. Each time data storage in a memory block begins, any existing data in that block is eliminated. Data is iteratively stored in the memory blocks as described above, until the predefined event occurs. This manner of storing the obtained data greatly reduces the required memory storage capacity (and associated expense) . Further, only event data is permanently stored, enabling the event data to be retrieved easily and quickly.
Once a triggering event occurs, data storage can occur in any one of a number of ways in accordance with a pre-specified instruction or instructions. In a first approach, data (post-trigger data) obtained after occurrence of the triggering event is first stored in the memory block (event block) into which data is being stored at the time the triggering event occurs until the memory block is filled with data, then subsequently stored in each of the remaining memory blocks until the remaining memory blocks are filled with data. In a second approach, no post-trigger data is stored. In a third approach, upon occurrence of the triggering event, data storage in the event block is stopped and post-trigger data is stored then stored in each of the memory blocks until each of the memory blocks is filled with data. In a fourth approach, post-trigger data is stored in the event block, and only the event block, until the event block is filed with data. In a fifth approach, post-trigger data is stored for a predefined duration of time after occurrence of the triggering event.
According to the invention, the data is stored in a rapidly accessible memory such as a random access memory. Thus, the data can be obtained at a rate that is sufficiently fast to ensure that, for example, a moving picture display of the data is refreshed at a rate
adequate to produce an acceptable display. Further, the data can be obtained at a rate that is sufficiently fast to greatly increase the likelihood that no important information regarding the state of the environment during any given period of time is missed.
The event data can be presented for evaluation by a human by, for example, generating a video display of the event data. Alternatively, the event data can be evaluated automatically, by, for example, a computer, without intervention by a human.
The invention can be used with a variety of monitoring systems. For example, the invention can be used to monitor physical locations, such as stores, banks, prisons, restricted access areas, hazardous areas, and locations of suspected criminal activity. The invention is useful to monitor activity at those locations during times that are proximate to an event of interest, such as a commission of a crime at the store or bank, an escape from the prison, an unauthorized intrusion into the restricted area, an accident in the hazardous area, or arrival or departure of persons from the suspected criminal location. The invention can also be used to monitor a virtual "location," such as may exist on a computer network, to observe access to the location and, in particular, activity at the location during times proximate to the time of any suspicious or unauthorized access. Additionally, the invention can be used to monitor an activity (independent of the association of the activity with a physical location) , such as use of an automated bank teller machine or the performance of an automated manufacturing process, to observe the activity during time proximate to, for example, a malfunction in the automated manufacturing process or a theft from the automated bank teller machine.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. IA is a block diagram of a system for remotely monitoring an environment.
FIG. IB is a block diagram of one implementation of the on-site data management system of the system of FIG. IA.
FIG. IC is a block diagram of one implementation of the remote data evaluation system of the system of FIG. IA. FIG. 2 is a flow chart of a method according to the invention for obtaining data describing the state of an environment at times proximate to the occurrence of a triggering event.
FIG. 3 is a simplified representation of a memory partitioned into two blocks.
FIGS. 4A and 4B illustrate a combination of event data that can result from one definition of pre-trigger and post-trigger time according to the invention.
FIGS. 5A and 5B illustrate a combination of event data that can result from another definition of pre- trigger and post-trigger time according to the invention.
FIGS. 6A and 6B illustrate a combination of event data that can result from yet another definition of pre- trigger and post-trigger time according to the invention. FIGS. 7A and 7B illustrate a combination of event data that can result from still another definition of pre- trigger and post-trigger time according to the invention.
FIGS. 8A through 8F illustrate several combinations of event data that can result from another definition of pre-trigger and post-trigger time according to the invention.
DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
The invention monitors an environment for the occurrence of a predefined type of event ("triggering event") and records the state of the environment at times
proximate to the occurrence of the triggering event, so that the state of the environment at those times can be evaluated at a later time. Herein, "environment" is used broadly and can be used generally to refer to anything that can be monitored, such as an activity or location. Illustratively, environments that can be monitored by the invention include stores, banks, prisons, restricted access areas, hazardous areas, areas of suspected criminal activity, locations on a computer network, automated bank teller machines and automated manufacturing processes.
The state of the environment is recorded by storing any appropriate data, such as, for example, video data, audio data or transaction data (e.g., equipment status) . The type of data stored depends on the environment and the aspects of the environment that are of interest. For example, in monitoring a store, video data and, perhaps, audio data can be stored. For an environment such as an automated bank teller machine, data regarding activations of the machine can be stored. The invention stores data ("event data") that is proximate in time to the triggering event. The invention enables a high degree of flexibility in defining the particular time period (or set of transactions) during which event data is obtained. The invention can be used to store event data that occurs before the triggering event, after the triggering event, or both before and after the triggering event. Further, the invention allows variation of the amount of data obtained before and/or after the triggering event. The invention can be embodied in a variety of systems including remote surveillance systems such as can be used for security monitoring (e.g., monitoring of stores or restricted areas) , monitoring of areas dangerous to humans (e.g., radioactive areas in nuclear power plants, hazardous waste areas, underwater locations) or monitoring of suspected criminal activities by law enforcement
agencies. The invention can also be embodied in, for example, teleconferencing systems that are increasingly used by geographically dispersed businesses.
FIG. IA is a block diagram of a system 100 for remotely monitoring an environment. The system 100 includes a microphone 101, a video camera 102, an on-site data management system 103 and a remote data evaluation system 104. The microphone 101 acquires audio data and transmits it to the on-site data management system 103. Likewise, the video camera 102 acquires video data and transmits it to the on-site data management system 103. Generally, any appropriate data acquisition apparatus can be used to acquire data regarding the system being monitored; the microphone 101 and video camera 102 are shown for purposes of illustration and do not represent a limitation upon the invention. The on-site data management system 103 accepts the data from the microphone 101 and video camera 102. As the data is received, the on-site data management system 103 stores a continually updated set of current data in a first memory device. Upon the occurrence of a triggering event, a set of current data (event data) obtained proximate in time to the triggering event is selected according to a set of pre-determined specifications and stored permanently in a second memory device. Either automatically or upon request from the remote data evaluation system 104, the on-site data management system 103 sends the event data to the remote data evaluation system 104 via a communication line 105. Any appropriate communication line can be used. The remote data evaluation system 104 can then be used to evaluate the event data.
FIG. IB is a block diagram of one implementation of the on-site data management system 103 of the system 100 of FIG. IA. The on-site data management system 104 includes a processor 111, a data capture device 112, a first memory device 113, a second memory device 114 and a
communications device 115. The processor 111, data capture device 112, and communications device 115 are interconnected by a communications bus (not shown) , which can be, for example, a conventional ISA bus. Acquired data is input to the on-site data management system 104 through the data capture device 112. The data capture device 112 can be implemented, for example, by a multiplicity of discrete interconnected electronic components or a single integrated circuit chip. The data capture device 112 is configured to accept data, in a manner known to those skilled in the art, from whatever data acquisition apparatus is being used with the system 100. In addition to accepting data from the data acquisition apparatus, the data capture device 112 can perform other functions. For example, the data capture device 112 can be configured to perform data compression, condition the data in a desired manner (e.g., for video data, the data capture device 112 may be configured to perform line averaging and/or frame averaging) , or zoom into a portion of the data. Again, each of these functions can be implemented on the data capture device 112 in a manner known to those skilled in the art. Illustratively, the data capture device 112 can be one of the capture cards made by Prism Video, Inc. located in Irvine, California.
The obtained data is transmitted from the' data capture device 112 along the communications bus to the processor 111. The processor 111 can be any appropriate commercially available computer processor. The processor 111 mediates the operation of the on-site data management device 104. For example, as data is obtained by the data capture device 112, the processor 111 transmits the data to a first memory device 113 that is used to store a set of the most current obtained data. Additionally, when updates to the data in the first memory device 113 necessitate that older data be eliminated from
the first memory device 113, the processor 111 causes the older data to be removed from the first memory device 113 and replaced with the updated data. (The manner in which the data stored in the first memory device 113 is updated is explained in more detail below with respect to FIG. 2.) Further, when a triggering event occurs and event data is obtained, the processor 111 causes the event data to be transferred from the first memory device 113 to the second memory device 114 after the event data has been completely obtained. The processor 111 also causes data to be transferred from the second memory device 114 to the communications device 115 for transmission to the remote data evaluation system 104.
The first memory device 113 can be embodied by any appropriate conventional commercially available memory that can be accessed easily and rapidly. In one embodiment (illustrated in FIG. IB) , the first memory device is a random access memory (RAM) . In a particular embodiment, the RAM is implemented as a RAM disk, so that moving data out of the RAM is easier than would be the case in a standard RAM. The storage capacity of the first memory device 113 determines the amount of current data that can be stored at any one time and, therefore, affects the amount of event data used to represent the state of the environment at times proximate to the triggering event. For a typical television picture, use of an 8 MB RAM enables approximately 1 minute of event data to be obtained at a frame rate of 7.5 frames per second.
Use of a RAM rather than, for instance, a hard disk to store the current data is advantageous for several reasons. First, since many applications in which the invention can be used involve continual and rapid acquisition and storage of data, frequent and rapid access must be made to the first memory. Such frequent access takes a greater toll on the operation of a hard disk than on a RAM. Further, access to a RAM can be made more
rapidly than access to a hard drive, making the RAM preferable for these applications which require rapid access.
The second memory device 114 is used to permanently store the event data. The second memory device 114 can be embodied by any persistent memory device such as, for example, a conventional hard disk (illustrated in FIG. IB) ; any appropriate commercially available such device having adequate storage capacity can be used. Since, according to the invention, only the event data is permanently stored, the second memory device 114 can have much less storage capacity than has been the case with memories of other, similar monitoring systems. Further, permanently storing only the event data enables the event data to be located quickly and easily when it is desired to evaluate the event data.
The communications device 115 enables transmission of data from the on-site data management system 104 through a communications line to the remote data evaluation system 104. Any appropriate type of communications line can be used. For example, the communications line can be a conventional telephone line and the communications device 115 can be any conventional commercially available modem. Preferably, the modem has as fast a baud rate as practical or economically feasible. Other possible communications alternatives include a high-speed phone line such as ISDN, a very high-speed phone line such as Tl, satellite systems, connection over the Internet, or communication over a serial cable. FIG. IC is a block diagram of one implementation of the remote data evaluation system 104 of the system 100. The remote data evaluation system 104 includes a digital computer 121, a user input device 122, a display device 123 and a communications device 124. The digital computer 121, user input device 122, display device 123 and communications device 124 are interconnected by a
communications bus (not shown) , which can be, for example, a conventional ISA bus.
The communications device 124 enables communication to and from the remote data evaluation system 104. The communications device 124 can be any conventional commercially available modem. Preferably, the modem has as fast a baud rate as practical or economically feasible. The digital computer 121 is used to control operation of the remote data evaluation system 104 and includes a processor and memory. Any appropriate commercially available digital computer can be used. The digital computer 121 includes a conventional processor, non- persistent memory device, and persistent memory device. The digital computer also includes a data display device that is similar to the data capture device 112 (FIG. IB) and performs similar functions, such as decompression of compressed data.
The user input device 122 is used by a user to control operation of the remote data evaluation system 104. The user input device 122 can be, for example, a keyboard or a mouse.
The display device 123 can be used to display the obtained data. The display device 123 can be any conventional display device that is appropriate for the type of data that is obtained. For example, a television might be used to display video data and an audio speaker might be used to display audio data. The display device 123 can used for continuous real-time display of the data as it is obtained. Importantly, the display device 123 can also be used to display the event data. The display device 123 might also be used to communicate to the user when a triggering event has occurred.
According to the invention, an appropriate computer program can be implemented on the digital computer 121 and processor 111 to give a user various options regarding how to display the event data. One option allows the user to
implement the data compression technique implemented on the data capture device 112; another option allows the user to bypass compression of the event data. Compression of the event data enables the event data to be sent to the remote data evaluation system 104 more quickly, so that the user can evaluate the event data as soon as possible; however, the display of the event data by the display device 123 will lose some resolution. Conversely, if the event data is not compressed, the event data is sent to the remote data evaluation system 104 more slowly; however, the display of the event data by the display device 123 will have the best possible resolution.
The user can also choose to use the zoom feature implemented on the data capture device 112 to cause a desired portion of the data to be displayed in greater detail. Without zoom, the entire set of event data is displayed.
FIG. 2 is a flow chart of a method 200 according to the invention for obtaining event data describing the state of an environment at times proximate to the occurrence of a triggering event. The method 200 can be implemented, for example, in the system 100 of FIG. 1.
As will be apparent from the description below, for many applications, the method 200 causes event data to be obtained for a period of time that is defined by one or more pre-specified instructions. The event data can be obtained before the triggering event, after the triggering event, or both before and after the triggering event. Further, the periods of time before and/or after the triggering event for which data is obtained can be varied according to the pre-specified instructions. The invention enables a high degree of flexibility in defining the particular time period during which event data is obtained. First, in step 201, the size of the memory in which the data to be obtained will be stored is determined.
This size is determined as whatever portion of the memory is not being used by other applications. This size of the memory is used, together with the number of blocks into which the memory is partitioned (see step 202) , to determine the amount of data that can be stored in each of those blocks.
In step 202, the memory is partitioned into blocks. Generally, the memory can be partitioned into any number of blocks. As will be apparent from the description below, the number of blocks into which the memory is partitioned can affect the amount of event data that the method 200 stores for each triggering event. Generally, as the number of blocks increases, a larger amount of event data will tend to be stored, since the increased granularity of the memory partitioning decreases the likelihood that the obtaining of post-trigger data will leave large portions of one or more blocks vacant (see, e.g., some of FIGS. 4A through 8F below) . However, since, as the number of blocks increases, the size of each block decreases, the possibility that relatively large portions of memory blocks will be left vacant increases. Additionally, partitioning the memory into more blocks enables increasingly specific portions of the event data to be evaluated more quickly, a desirable characteristic. The choice of the number of blocks into which to partition the memory involves a trade-off among these considerations. In one embodiment of the invention, shown in FIG. 3, a memory 300 is partitioned into two blocks 301 and 302. In step 203, a block of memory is determined into which data will first be stored. As will be more readily apparent from the description below, the method 200 stores the obtained data in successive memory blocks, filling each memory block before beginning to store data in another memory block. Thus, as part of the partitioning of the memory into blocks, the blocks of memory are
assigned a particular order. When the method 200 first begins, the current block of memory, as determined by step 203, is an arbitrarily designated first block of memory. In step 204, a check is made as to whether a triggering event has occurred. In the system 100
(FIG. IA) , for example, the processor 111 can check the value of a trigger flag (e.g., a bit of a register in the RAM in which the data is stored) , which can take on one of two values, one value indicating that no triggering event has occurred and the other indicating that a triggering event has occurred. A triggering event may be indicated, for example, by the manual or automatic tripping of an alarm at the site being monitored, the alarm being configured to change the value of the trigger flag when tripped. Or, in the system 100, the processor ill may use an appropriate computer program to evaluate the incoming data to determine if a triggering event has occurred. Generally, the particular manner in which a triggering event is detected will vary depending upon the type of data being obtained. For example, in monitoring an automated bank teller machine, the data may be evaluated for the presence of anomalous patterns. Depending upon whether a triggering event has been detected or not, the method 200 will perform one of two series of steps. While a triggering event is not detected, the method 200 continually updates the data stored in the memory. Data is stored in successive blocks of memory. Once data storage in a memory block begins, that block is filled with data before data storage in a new block begins. Thus, in step 205, before storing data, a check is made to determine whether the memory block into which data is currently being stored is full. This can be done by determining whether the amount of data to be stored (e.g., for video data stored frame by frame, approximately 64 kilobytes of data) is greater than the size of the memory block minus the amount of data already stored.
If the memory block is not full, then, in step 207, the data is stored in the next available memory location of that memory block. Preferably, for simplicity of implementation, the invention causes data to be progressively stored in a memory block such that all of the stored data in the memory block is contiguous. However, this need not necessarily be the case and, generally, data can be stored at any available location in the memory block. If the memory block is full, then, in step 206, the next sequential block of memory is determined. As described above with respect to step 203, an order of memory blocks is established at the beginning of the method 200. The next sequential memory block is just the next memory block in the order. After data has been stored in the last memory block, the next sequential memory block is the first memory block in which data was stored. As will be apparent from the description below, once the order of memory blocks is established, it is important that data be stored in memory blocks in that order, in order to ensure that the maximum amount of event data is obtained and in order to facilitate the establishment of the chronological order of the event data for use in display or analysis of the event data. After the next sequential memory block is determined, the data is stored in that block, as shown by step 207.'
According to one embodiment of the invention, once storage of data in a block begins, all previous data stored in that block becomes inaccessible. This occurs because the header information in that block is overwritten, thereby precluding data within the block from being located. This is illustrated by FIG. 3.
In FIG. 3, as mentioned above, the memory 300 is partitioned into two blocks 301 and 302. (Note that the blocks 301 and 302 could store different types of data, e.g., video data in block 301 and audio data in
block 302.) The memory 300 also includes a header 303, apart from the blocks 301 and 302, that includes information describing the arrangement of the memory 300. For example, the header 303 can include, among other information, the beginning memory address of each block 301 and 302. Together with the size of the memory and the number of blocks (here, two) , these beginning memory addresses define the location of the blocks 301 and 302 in the memory 300. Each block 301 and 302 includes a block header 304 and 305, respectively, and data 306 and 307, respectively. For video data, the block headers 304 and 305 each include a specification of the frame size, frame rate and time at which data began to be saved for the data stored in the corresponding blocks 301 and 302. Storing of data as shown by steps 205 through 207 can continue indefinitely. Storing of data in this manner will continue until either the method is terminated or a triggering event is detected.
After a triggering event is detected, first, the duration of the time ("post-trigger time") after the triggering event for which data ("post-trigger data") is to be obtained is determined, as shown by step 208. The duration of the post-trigger time can be determined in a variety of ways, some of which are described and illustrated below with respect to FIGS. 4A through 8F. In general, the post-trigger time can be defined so that all of the event data occurs after the triggering event (and none before the triggering event) , none of the event data occurs after the triggering event (and all before the triggering event) , or any intermediate amount of event data occurs after the triggering event (and the remainder before the triggering event) . The post-trigger time can either be defined directly or indirectly by defining the pre-trigger time. Once the duration of the post-trigger time is determined, then, in step 209, event data ("post-trigger
data") is obtained for the duration of the post-trigger time.
FIGS. 4A and 4B illustrate a combination of event data that can result from one definition of pre-trigger and post-trigger time. In FIGS. 4A and 4B (and FIGS. 5A through 8F below) , increasing time moves from left to right. However, since data storage occurs by ping-ponging back and forth between blocks of data, the manner of representation in FIGS. 4A and 4B can result in data in the rightmost block having been obtained before data in the leftmost block.
FIG. 4A illustrates two blocks of data, blocks 401 and 402, at the time that a triggering event, designated by 403, occurs. The areas in blocks 401 and 402 that are filled with upwardly slanting lines represent data ("pre- trigger data") stored before occurrence of the triggering event. (Upwardly slanting lines also represent pre- trigger data in each of FIGS. 4B through 8F below.) As can be seen, the triggering event occurred during the time that data was being stored in block 401 (the "event block") . Block 402 is completely full of data obtained prior to the triggering event. Block 401 is only partially full of data. When data began to be stored in block 401 after filling block 402 with data, the previously stored data in block 401 was eliminated. When the triggering event occurred, block 401 had not yet been completely filled with data.
FIG. 4B illustrates the data content of the two blocks 401 and 402 after the post-trigger data has been obtained according to this definition of pre-trigger and post-trigger time. A predefined set of instructions specifies that, upon occurrence of a triggering event, post-trigger data is obtained until the event block ' lock 401) and all other blocks (here, only block 402) are completely full of data. The post-trigger data is F,- ,-"r. by the downwardly slanting lines in FIG. 4B.
(Downwardly slanting lines also represent post-trigger data in each of FIGS. 4A through 8F below.) The post- trigger data stored in block 402 replaces all of the previously stored pre-trigger data. However, block 401 includes both pre-trigger data and post-trigger data, since, when the triggering event occurred, data storage in block 401 did not begin at the beginning of block 401, but rather continued at the location in block 401 at which data was being stored at the time the triggering event occurred.
FIGS. 5A and 5B illustrate a combination of event data that can result from another definition of pre- trigger and post-trigger time. FIG. 5A again illustrates blocks 401 and 402 at the time that the triggering event designated by 403 occurs. In this definition, a predefined set of instructions specifies that no post- trigger data is to be obtained. Consequently, FIG. 5B, which illustrates the data content of the blocks 401 and 402 after the post-trigger data has been obtained, looks exactly like FIG. 5A, i.e., only pre-trigger data is obtained.
FIGS. 6A and 6B illustrate a combination of event data that can result from yet another definition of pre- trigger and post-trigger time. FIG. 6A again illustrates blocks 401 and 402 at the time that the triggering event designated by 403 occurs. FIG. 6B illustrates the data content of the two blocks 401 and 402 after the post- trigger data has been obtained according to this definition of pre-trigger and post-trigger time. A predefined set of instructions specifies that the storage of post-trigger data begins at the beginning of the next sequential memory block after the event block and that post-trigger data is stored until all memory blocks including the event block (here, blocks 401 and 402) are completely filled with data. Again, as in FIG. 4B, the post-trigger data stored in block 402 replaces all of the
previously stored pre-trigger data. However, in FIG. 6B, post-trigger data obtained subsequent to that stored in block 402 replaces all of the pre-trigger data previously stored in block 401. FIGS. 7A and 7B illustrate a combination of event data that can result from still another definition of pre- trigger and post-trigger time. FIG. 7A again illustrates blocks 401 and 402 at the time that the triggering event designated by 403 occurs. FIG. 7B illustrates the data content of the two blocks 401 and 402 after the post- trigger data has been obtained according to this definition of pre-trigger and post-trigger time. A predefined set of instructions specifies that storage of post-trigger data continues in the event block (block 401) at the location at which data was being stored when the triggering event occurred and continues until the event block is filled with data. Thus, the pre-trigger data in both blocks 401 and 402 is retained, while post-trigger data fills the portion of block 401 not used by pre- trigger data.
FIGS. 8A through 8F illustrate several combinations of event data that can result from another definition of pre-trigger and post-trigger time. Each of FIGS. 8A, 8C and 8E again illustrates blocks 401 and 402 at the time that the triggering event designated by 403 occurs. A predefined set of instructions specifies that the storage of post-trigger data continues in the event block (block 401) at the location at which data was being stored when the triggering event occurred and continues until a specified time (or, equivalently, for a specified duration of time) . Each of FIGS. 8B, 8D and 8F illustrates the data content of the two blocks 401 and 402 after the post- trigger data has been obtained according to this definition of pre-trigger and post-trigger time. In FIG. 8B, the specified time, designated by 801, occurs while data is still being stored in block 401. Thus, the
pre-trigger data in both blocks 401 and 402 is retained, while post-trigger data fills some, but not all, of the portion of block 401 not used by pre-trigger data. In FIG. 8D, the specified time, designated by 802, occurs after data has begun to be stored in block 402, but before block 402 is completely filled with data. Thus, while the pre-trigger data in block 401 is retained, the pre-trigger data in block 402 is lost, since post-trigger data has begun to be written in block 402. Post-trigger data fills the entire portion of block 401 not used by pre-trigger data, as well as the portion of block 402 up until the occurrence of the designated time 802. In FIG. 8F, the specified time, designated by 803, occurs after post- trigger data has completely filled block 402 and data has begun to be stored in block 401. The post-trigger data in block 402 completely replaces the pre-trigger data previously stored in block 402. Post-trigger data also partially fills block 401, causing the pre-trigger data in block 401 to be lost. FIGS. 4A through 8F above illustrate combinations of event data that result from various definitions of pre- trigger and post-trigger time, when the memory in which the event data is stored is divided into two blocks. Each of the above-described definitions could also be applied when the memory has been divided into more than two blocks.
Once all of the post-trigger data has been obtained, no further data is stored in the memory. The data that is stored in the memory represents the event data. Typically, this data is then permanently stored in a non¬ volatile memory. For example, in the on-site data management system 103 described above with respect to FIG. IB, the event data is transferred from the first memory device 113 (e.g., RAM) to the second memory device 114 (e.g., hard disk) .
In step 210 (FIG. 2) , the event data is made
available for use. Typically, the event data is evaluated to ascertain information of interest regarding the state of the environment at times proximate to the time of occurrence of the triggering event. Usually (though not necessarily) , the event data is evaluated at a location that is remote from the environment being monitored, necessitating that the event data be communicated to the remote location. For example, in the system 100 of FIG. IA, the event data is communicated from the on-site data management system 103 to the remote data evaluation system 104. An indication that a triggering event has occurred ("alarm") must also be communicated to the location where the evaluation will be performed. Either or both of the alarm and the event data can be communicated automatically, or manually at the request of a user. Further, where the alarm is communicated automatically, the monitoring system can be configured so that the user may or may not receive a conspicuous notification of the alarm. For example, a monitoring system according to the invention that sends the event data to be evaluated only when so instructed by a user might be used in monitoring a cash register at a store for possible stealing by employees. A monitoring system according to the invention that sends the event data automatically (and immediately upon acquisition) might be used in monitoring the security of a location such as a store or prison.
Once event data is obtained for a triggering event, a monitoring system according to the invention can proceed to obtain additional information regarding the environment being monitored. Continuing to obtain additional information in this manner can occur either automatically, or manually at the instruction of a user. Further, it is possible for the invention to cause additional event data regarding a subsequent triggering event to be obtained and stored. A monitoring system according to the invention
can be constructed so that each of the sets of event data are presented separately for evaluation by the user. The system can further be constructed to appropriately identify each set of event data (e.g., with icons or as choices in a list) and enable the user to select which set of event data is to be evaluated.
The event data can be displayed for evaluation by a human. This may be done for video data using, for example, a video display such as the video display device 123 of the system 100 (FIG. 1) . If the data is audio data, the data may be displayed, for example, with an appropriate sound system.
Alternatively, the event data can be evaluated automatically, without human intervention. This can be done for example, for example, using a digital computer such as can be used in the system 100 to implement the processor 121 and memory 122. The automatic evaluation can be done using predetermined evaluation criteria that may be implemented in, for example, an appropriate computer program that runs on the digital computer. Various embodiments of the invention have been described. The descriptions are intended to be illustrative, not limitative. Thus, it will be apparent to one skilled in the art that certain modifications may be made to the invention as described without departing from the scope of the claims set out below.