Not applicable.
The present invention relates to ubiquitous computing, and more specifically, to a system and method for archiving of continuous capture buffers.
The term ubiquitous computing refers to the integration of computing devices or platforms into the environment, rather than having computers which are distinct objects. One example of ubiquitous computing is the use of capture devices such as cameras and microphones that are embedded throughout a relatively large physical environment, such as a home, school or office
Traditionally, software developed to collect information from these capture devices treats the devices as being in one of two states of operation: on or off, where the software records all data captured when the device is on. With conventional continuous recording, either too much information is recorded, or not enough. A small record buffer is unlikely to record infrequent events, although the buffer can be quickly reviewed to find interesting events. On the other hand, a large record buffer increases probability that interesting events will be captured, but also requires an observer to spend a large amount of time reviewing the entire record buffer to find interesting events.
An improvement is a large buffer system in which an observer notes, immediately after the event occurs, the approximate time that the event occurs. This does reduce the time involved in reviewing the large buffer, but because the continuous buffer is finite and so eventually discards old information, a large buffer is still required to insure that infrequent events are captured. Therefore, improvements to continuous capture buffers are desirable.
Systems and methods for archiving a stream of sensor data, are disclosed. One method comprises: receiving a stream of sensor data from at least one corresponding sensor device; storing the sensor data to a corresponding capture buffer; receiving, from a trigger device, a request to archive a portion of the capture buffer; and responsive to the archive request, copying the requested portion of the capture buffer to an archive buffer. The sensor device has a coverage area, and the trigger device is located proximate to the sensor coverage area. A user explicitly originates the archive request through the trigger device.
Many aspects of the invention can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present invention.
FIGS. 7A-D show an example of a user interface implemented on the client of
The systems and/or methods of the system and method for archiving of continuous capture buffers can be implemented in software, hardware, or a combination thereof. In some embodiments, the system and/or method is implemented in software that is stored in a memory and that is executed by a suitable microprocessor (uP) situated in a network device. However, system and/or method, which comprises an ordered listing of executable instructions for implementing logical functions, can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions.
In the context of this document, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (magnetic), a read-only memory (ROM) (magnetic), an erasable programmable read-only memory (EPROM or Flash memory) (magnetic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.
The experience buffer 100 is configured with a duration 140, and continuously discards those recorded samples that are older than the duration 140. In the example of
Although data older than the duration 140 is continuously discarded, the experience buffer 100 allows a portion of the temporary buffer 120 to be archived, or saved to another location, before discard. Importantly, the requested portion is identified as an interval 160, and the interval 160 is interpreted as relative to the current time 170. In response to an archive request for a given interval 160, the requested portion is identified and copied to an archive 180. The archive storage 180 is distinct from the continuously recording temporary buffer 120. In
The experience buffer 100 also stores information 1100 which identifies each archive 180. Identifying information 1100 may include the archive time span (preferably in absolute rather than relative form, e.g., 11/15/05 18:04:15-18:12:45) and the source of the data stream 110. Additional information associated with the archive 180 may also be stored by the experience buffer 100. Multiple archive requests during the continuous recording (each for a different portion) result in multiple archives 180, so the experience buffer 100 maintains a list 1110 of archives 180.
As depicted in
The experience buffer 100 of
Sensor 310 provides a data stream 110 to the experience buffer 100. Examples of sensor 310 include: video camera; microphone; position sensor; light sensor; temperature sensor; and barometric pressure sensor. If the CaptureState 210 is enabled, the data stream 110 is continuously recorded into temporary buffer 120 as described earlier in connection with
The client 320 invokes the service RequestArchive 240, specifying the archive interval 160. In response to the request, the experience buffer 100 determines which portion of the temporary buffer 120 is identified by the interval 160, then copies that portion to an archive 180. In some embodiments, RequestArchive 240 may return a handle which the client 320 can use to reference the newly created archive 180.
Using the various access services provided by the experience buffer 100, the client 320 in
In this usage scenario, the client 320 invokes the service GetExpBufList 420, in the experience buffer manager 410, and the experience buffer manager 410 returns a list of identifiers for the experience buffers which it manages. The client 320 invokes the service RequestArchive 240, specifying the identifier of the experience buffer to be archived, as well as the archive interval 160. In this example, the client 320 specifies the “Left” experience buffer 100A, that is, the one associated with the Left sensor 310L. The experience buffer manager 410 forwards the request to the appropriate experience buffer, in this case, experience buffer 100A.
In this example, the experience buffers are identified by the associated sensor (Left, Right). These identifiers have meaning to a user interacting with the client 320. However, other identifiers can be used, including handles or references which have no intrinsic meaning to the client 320 or user. In another variation, once one or more experience buffers 100 have been identified, the client 320 uses the identifier to invoke the services of a particular experience buffer 100 directly, rather than going through the experience buffer manager 410.
The remainder of the data flow for this usage scenario is similar to the flow in
This embodiment differs from that described in connection with
In system 500, at least one of the sensors 310 is a combination video camera and microphone 510, having a coverage area. Each camera-with-microphone (510L, 510R) transmits a video stream 520V and an audio stream 520A to one of the experience buffers (100L, 100R). The experience buffer (100L or 100R) continuously records the streams (520V and 520A) to the temporary buffer 120.
Although this example includes one device transmitting separate streams, other embodiments may include one stream per device, or a single device that produces a combined audio-video stream. In a preferred embodiment, an experience buffer 100 is associated with a single stream, but in other embodiments, an experience buffer 100 may aggregate multiple streams.
Once system 500 is started, activity within the coverage area is continuously captured by one or more experience buffers 100. When a person 530 observing the activity notices that an interesting event has taken place (e.g. the observed child made a loud noise), the observer 530 uses an experience buffer client 320 to request archiving of the activity—which has already been recorded by the experience buffer 100—into an archive 180.
In a classroom setting, it is advantageous for the mechanism used to request an archive be relatively simple, quick, and unobtrusive, so a teacher can perform the observer function without compromising the teacher's other duties. In a preferred embodiment, the experience buffer client 320 is implemented in a handheld trigger device 540 rather than a more general-purpose client device.
The trigger device 540 is a relatively small device with a trigger 550 (e.g., button, key, etc.) that, when pressed, transmits a signal to the experience buffer manager 410. Before archiving, the experience buffer manager 410 is configured (560) to associate the trigger 550 with one or more experience buffers 100. In a preferred embodiment, the default configuration associates the trigger 550 with all experience buffers in the coverage area. The experience buffer manager 410 is further configured (560) to associate the trigger 550 with an archive request interval 160 (see
To request archiving of a recently recorded behavioral event, the observer 530 simply presses the trigger 550 shortly after noticing the behavior. In response, the trigger device 540 invokes the service RequestArchive 240 in the experience buffer manager 410. The experience buffer manager 410 determines which experience buffer(s) (100L, 100R) are associated with the trigger 550, and also determines the associated archive request interval 160. The experience buffer manager 410 forwards the request 240 to the appropriate experience buffer 100. The experience buffer 100 identifies the requested portion of the temporary buffer 120 and copies the identified portion to an archive 180. (The archiving process was described earlier in connection with
In one embodiment, the experience buffer 100 creates a link (such as a Uniform Resource Locator or URL) to the archive 180, and provides this link to the experience buffer client 320 after archiving. In a preferred embodiment, the experience buffer 100 and the experience buffer client 320 also use the short-range wireless technology (such as Bluetooth) described above. Transferring a URL over the wireless network is much faster than transferring the relatively large amount of data in the archive 180 itself. The experience buffer client 320 then connects to a higher-speed wire network at a later time, and transfers the archive 180 then.
In the embodiment of
Yet another variation of the trigger device 540 includes multiple buttons. The observer 530 uses one button to archive instances of one behavior (e.g. child shouting) and another button to archive instances of a second behavior (e.g. child hitting). In this embodiment, the experience buffer 100 is configured to associate each button with a particular behavioral event, and the event identifier is stored with the archive 180. In another embodiment, each button corresponds to a particular child under observation, which allows multiple children to be observed in the same session.
In the classroom context, archiving of continuously recorded content offers several advantages over the conventional approaches to recording human behavioral events. The continuous recording approach is generally better than relying on a human observer to initiate recording because humans are better at noticing interesting events soon after they occur than at predicting when the event will occur. Archiving of continuously recorded content takes advantage of this human strength. In addition, archiving of continuously recorded content has advantages over non-archived continuous recording that were discussed earlier.
In the embodiment of
Furthermore, in the embodiment of
In the embodiment of
Another embodiment particularly suited for capturing the behavior of children with autism is shown in the system diagram of
In one embodiment, the FBA component 620 is implemented as a standalone application, and executes on the same computing platform as the experience buffer manager object 410 and the experience buffer objects 100. However, a person of ordinary skill in the art will understand that the functionality described here can be distributed among different computing platforms in various ways. As just one example, in another embodiment the FBA component 620 and the client 630 are implemented on the same computing platform.
In
The actions of trigger device 540 are similar to those described in connection with
In addition to these basic archiving and playback capabilities, the client 630 in
The FA object 640 also identifies the experience buffers 100 that will be used to record and archive instances of the target behavior. In a preferred embodiment, the FA object 640 is associated with one or more rooms (sensor coverage areas), and all experience buffers 100 within those rooms are available for recording and archiving. In another embodiment, the FA object 640 is directly associated with individual experience buffers 100.
The FA object 640 also contains the archive interval and the interval type (e.g. one-click or two-click before/after as described in connection with
The association between FA object and experience buffer is two-way. An FA object 640 is associated with one or more experience buffers 100 as described above. In addition, the object representing each of these experience buffers 100 is associated with the FA object 640. In this manner, a reference to an FA object 640 can be used to determine the associated experience buffer objects 100, and a reference to an experience buffer object 100 can be used to determine the associated FA object 640. These associations can be explicit in the object (e.g., the two objects contain references to each other), or can be implicit (e.g., the FA object 640 contains the experience buffer objects 100).
After an FA object 640 is created, an observer 530 watches for instances of the target behavior defined in the FA object 640, and creates archives 180 of this behavior using the trigger device 540. In one embodiment, observer 530 is a human, but in other embodiments the observer 530 is implemented in software that, for example, detects target behavior using sensors, or that archives at predefined times.
In the preferred embodiment, a single trigger results in multiple archives 180, since the trigger is associated with all experience buffers 100 within the room. Whenever an archive is created, the preferred embodiment of the client 630 indicates this creation by displaying a list of archived behaviors for the day, identified by timestamp.
The client 630 uses the information returned to display a window 700. Through this window 700, the user is presented with a behavioral event list control 710 containing identifying information such as time/date 720. In the preferred embodiment, each behavioral event 730 in the list 710 may correspond to multiple archives, each one a recording of the same time interval by a different experience buffer/sensor. In this embodiment, the user thinks in terms of behavioral events rather than archives.
The user selects a behavioral event 730 from the list 710 and chooses an action 740 for the selected behavioral event 730. In this example, the actions 740 include View/Edit (740A) and Delete (740B).
If the user selects Delete (740B), the client 630 invokes the Delete service for the selected behavioral event 730. If the event 730 corresponds to multiple archives 180, then the Delete service is invoked for each one.
If the user selects View/Edit (740A), the client 630 queries the FBA component 620 to get the FA object 640 that is associated with the selected behavioral event 730. The client 630 then presents a window 750 (
Tag information 770 is displayed in a third portion (750C) of the window. Tag information 770 is an annotation that categorizes the behavioral event 730. In a preferred embodiment, the tag information 770 includes one target behavior 770T, one or more antecedent behaviors 770A (occurring before the target behavior) and one or more consequence behaviors 770C (occurring after the target behavior).
The tag information 770 may be associated with a particular portion of the archive 180, or with the archive 180 as a whole. If associated with a portion, then the tag information 770 includes offset values that identify the relevant portion of the archive 180.
In other embodiments, tag information 770 includes additional meta-data related to the behavioral event 730. One example of additional meta-data is a notation of a “setting event,” which is an antecedent behavior that occurs well in advance of the behavioral event 730. Another example of additional meta-data is freeform text notes recorded by an observer.
Tag information 770 is editable, preferably from the same window 750 used for viewing. In a preferred embodiment, each type of tag information 770 is displayed in a list box control, and a user edits the tag information 770 by selecting one or more items from the list box. The behavioral items which populate the list box control are associated with the FA object 640. These behavioral items can be defined when the FA object 640 is created or at a later time. The FA object 640 in the database 610 is updated after editing.
To generate a particular graph, user interacts with the graph control 795 on screen 780 or 780′. A user may include or exclude any combination of tags (e.g. antecedent behaviors 770A, consequent behaviors 770C, etc.). A user can search for target behaviors that contain particular keywords in the text notes meta-data. A user can select a particular plotted point on any of the graphs and double-click to display the View/Edit window 750 for a particular target behavior event.
A person of ordinary skill in the art will understand that the graphs and views show in FIGS. 7A-D are merely representative of some types of queries that a user may do, but the system described herein is not limited to such. The system as contemplated encompasses other representations of meta-data also.
The embodiments in
Another embodiment (not shown) of a triggered, archivable experience buffer is particularly suited for senior citizens, or adults with disabilities, who live alone. In this embodiment, the experience buffer is located in a home, and captures information including video, the resident's vital signs (e.g., pulse, blood pressure, breathing rate, etc.), and information about the home environment (e.g., temperature, level of carbon monoxide, etc.). The resident of the home can trigger the archive after a particular event such as a fall, or chest pain, or difficulty in breathing. The archive is then automatically transmitted to a caregiver or healthcare personnel, who can evaluate the event and decide if intervention is appropriate.
In this informal semi-public context, it is preferable that the person requesting the archive provide additional information at the time of the request, rather than using preconfigured parameters. For example, the archive requester can specify the archive interval 160 and an archive location (e.g., a filename, a server name, a Uniform Resource Locator (URL), etc.).
In some social contexts, it is desirable for the persons being observed to explicitly give permission for an archive 180 to be stored. Therefore, in one embodiment, the experience buffer 100 obtains additional input at the time of an archive request 240, where this input indicates permission of the persons present within the observed area 940 at the time of the archive request 240. This embodiment may optionally include a tracking means 950 which tracks the entry of persons into the observed area 940, and the exit of persons out the area 940. The tracking means 950 provides the experience buffer 100 with a list of persons within the observed area 940, and the experience buffer 100 obtains input indicating that these persons give permission for the archive. In one embodiment, the tracking means 950 is a computer program that allows persons to sign in and out of the system 900. In another embodiment, the tracking means 950 is a computing platform that contains identification functionality (e.g. electronic badge scanner, fingerprint scanner, voice recognition).
Omitted from
The foregoing description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Obvious modifications or variations are possible in light of the above teachings. The embodiments discussed, however, were chosen and described to illustrate the principles of the invention and its practical application to thereby enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variation are within the scope of the invention as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly and legally entitled.