Ubiquitous computing methods and apparatus
Summary by NHIP
Priority-based actuator control method
The method determines multiple actuator settings and stores them as records containing specific immediacy and priority values. It selects the highest priority record while deleting lower priority entries based on their immediacy before outputting the chosen setting to the actuator.
Claim Score by NHIP
Abstract
Ubiquitous computing methods and apparatus are disclosed. An example method includes determining a first setting to control an actuator; setting a first record in a record list, the first record including the first setting, a first immediacy of the first setting, and a first priority of the first setting; determining a second setting; setting a second record in the record list, the second record including the second setting, a second immediacy of the second setting, and a second priority of the second setting, the second priority being lower than the first priority; selecting the first record from the record list based on the first priority being higher than the second priority; deleting the second record from the record list based on the second immediacy; and outputting the first setting to control the actuator when a current setting of the actuator is different than the first setting.

Term
Projected expiry 25 May 2036.
- Priority and filed
- Granted
- Today
- Projected expiry
17 claims: 3 independent, 14 dependent
- 1A method comprising:determining a first actuator setting to control an actuator based on an input signal;setting a first record in a record list, the first record including the first actuator setting, a first immediacy of the first actuator setting, and a first priority of the first actuator setting;determining a second actuator setting to control the actuator based on the input signal;setting a second record in the record list, the second record including the second actuator setting, a second immediacy of the second actuator setting, and a second priority of the second actuator setting, the second priority being lower than the first priority;selecting the first record from the record list based on the first priority being higher than the second priority;deleting the second record from the record list based on the second immediacy;outputting the first actuator setting to control the actuator when a current setting of the actuator is different than the first actuator setting;determining, by executing an instruction with a processor, a third actuator setting to control the actuator based on the input signal;setting, by executing an instruction with the processor, a third record in the record list, the third record including the third actuator setting, a third immediacy of the third actuator setting, and a third priority of the third actuator setting, and the third priority being lower than the first and second priorities;determining, by executing an instruction with the processor, a fourth actuator setting that is not to affect the actuator;setting, by executing an instruction with the processor, a fourth record in the record list, the fourth record including the fourth actuator setting, the first priority, and a same feature identifier as the first record;deleting, by executing an instruction with the processor, the first record from the record list based on the fourth actuator setting;comparing, by executing an instruction with the processor, the current setting of the actuator to the third actuator setting;andoutputting, by executing an instruction with the processor, the third actuator setting to control the actuator when the current setting of the actuator is different than the third actuator setting.
- 7An apparatus comprising:an actuator to control an output device;a processor;anda computer readable storage medium including computer readable instructions which, when executed, cause the processor to perform operations including: determining a first actuator setting to control the actuator based on an input signal;setting a first record in a record list, the first record including the first actuator setting, a first immediacy of the first actuator setting, and a first priority of the first actuator setting;determining a second actuator setting to control the actuator based on the input signal;setting a second record in the record list, the second record including the second actuator setting, a second immediacy of the second actuator setting, and a second priority of the second actuator setting, the second priority being lower than the first priority;selecting the first record from the record list based on the first priority being higher than the second priority;deleting the second record from the record list based on the second immediacy;outputting the first actuator setting to control the actuator when a current setting of the actuator is different than the first actuator setting;determining a third actuator setting to control the actuator based on the input signal;setting a third record in the record list, the third record including the third actuator setting, a third immediacy of the third actuator setting, and a third priority of the third actuator setting, and the third priority being lower than the first and second priorities;determining a fourth actuator setting that is not to affect the actuator;setting a fourth record in the record list, the fourth record including the fourth actuator setting, the first priority, and a same feature identifier as the first record;deleting the first record from the record list based on the fourth actuator setting;comparing the current setting of the actuator to the third actuator setting;andoutputting the third actuator setting to control the actuator when the current setting of the actuator is different than the third actuator setting.
- 13Broadest claimClaim Score 32, narrow(NHIP)A tangible computer readable storage medium comprising computer readable instructions which, when executed, cause a processor to perform operations including:determining a first actuator setting to control the actuator based on an input signal;setting a first record in a record list, the first record including the first actuator setting, a first immediacy of the first actuator setting, and a first priority of the first actuator setting;determining a second actuator setting to control the actuator based on the input signal;setting a second record in the record list, the second record including the second actuator setting, a second immediacy of the second actuator setting, and a second priority of the second actuator setting, the second priority being lower than the first priority;selecting the first record from the record list based on the first priority being higher than the second priority;deleting the second record from the record list based on the second immediacy;outputting the first actuator setting to control the actuator when a current setting of the actuator is different than the first actuator setting;determining a third actuator setting to control the actuator based on the input signal;setting a third record in the record list, the third record including the third actuator setting, a third immediacy of the third actuator setting, and a third priority of the third actuator setting, and the third priority being lower than the first and second priorities;determining a fourth actuator setting that is not to affect the actuator;setting a fourth record in the record list, the fourth record including the fourth actuator setting, the first priority, and a same feature identifier as the first record;deleting the first record from the record list based on the fourth actuator setting;comparing the current setting of the actuator to the third actuator setting;andoutputting the third actuator setting to control the actuator when the current setting of the actuator is different than the third actuator setting.
Independent claims3
144 paragraphs in 4 sections, as filed
FIELD OF THE DISCLOSURE
This disclosure relates generally to automated device control and, more particularly, to ubiquitous computing methods and apparatus.
BACKGROUND
Ubiquitous computing, or the “Internet of Things,” offers the opportunity to control networked devices that interact with people and affect the environments in which people live. User studies show that one of the major challenges of ubiquitous computing is designing complex technology that users can understand and interact with successfully, and with which users can feel comfortable.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of an example ubiquitous computing device to control an actuator in accordance with the teachings of this disclosure.
<figref idref="DRAWINGS">FIG. 2</figref> is a more detailed block diagram of the example feature coordinator of <figref idref="DRAWINGS">FIG. 1</figref>.
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram of an example implementation of a feature controller to implement the feature controllers of <figref idref="DRAWINGS">FIG. 1</figref>.
<figref idref="DRAWINGS">FIGS. 4A, 4B, 4C, and 4D</figref> are example state diagrams that may be used to implement actuator output determiners for respective feature controllers that control different features of an example door lock ubiquitous computing device of <figref idref="DRAWINGS">FIG. 1</figref>.
<figref idref="DRAWINGS">FIG. 5</figref> is an example state diagram that may be used to implement a virtual sensor model of the ubiquitous computing device of <figref idref="DRAWINGS">FIG. 1</figref>.
<figref idref="DRAWINGS">FIG. 6</figref> is a flowchart illustrating an example manner in which the ubiquitous computing device of <figref idref="DRAWINGS">FIG. 1</figref> may reach quiescence following manual operation of the ubiquitous computing device.
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart representative of example machine readable instructions which may be executed by the example ubiquitous computing device of <figref idref="DRAWINGS">FIG. 1</figref> to control the output of an actuator.
<figref idref="DRAWINGS">FIG. 8</figref> is a flowchart representative of example machine readable instructions which may be executed by the example feature coordinator of <figref idref="DRAWINGS">FIGS. 1 and/or 2</figref> to process a feature record.
<figref idref="DRAWINGS">FIG. 9</figref> is a flowchart representative of example machine readable instructions which may be executed by the example feature controllers of <figref idref="DRAWINGS">FIGS. 1 and/or 3</figref> to generate a feature record.
<figref idref="DRAWINGS">FIG. 10</figref> is a block diagram of an example processor platform capable of executing the instructions of <figref idref="DRAWINGS">FIGS. 7, 8</figref>, and/or <b>9</b> to implement the feature controllers, the example feature coordinator and/or, more generally, the ubiquitous computing device of <figref idref="DRAWINGS">FIGS. 1, 2</figref>, and/or <b>3</b>.
The figures are not to scale. Wherever appropriate, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts.
DETAILED DESCRIPTION
Examples disclosed herein specify and implement control programs for ubiquitous computing devices in the form of features. In some examples, individual features of a device are independent of one another. That is, each feature satisfies a particular goal or requirement of the ubiquitous computing device. In some examples, multiple features run in parallel and the outputs of the features are selected to control the ubiquitous computing device according to the relative priorities of the features. Examples disclosed herein enhance the efficiency and effectiveness of ubiquitous computing devices by balancing between manual and automated control, while simplifying feature specification and feature implementation. For example, by adhering to a set of feature coordination rules, examples disclosed herein enable the rapid development and/or addition of features to ubiquitous computing devices and may be applied to many different control applications with little to no customization of feature coordination required.
Known devices have required intense customization of feature coordination to operate, and modifying the functionality of such devices requires ensuring that changes do not affect prior functionality. Such efforts are resource-intensive. In contrast, examples disclosed herein enable development of features independently of prior functionality, reducing the resources needed to improve ubiquitous computing devices after release (e.g., after installation in a consumer system).
As used herein, the term “ubiquitous computing device” refers to a device that processes inputs according to one or more specific behavioral requirements of the device to achieve a tangible result. Ubiquitous computing devices, as used herein, are often synonymous with the concept of the “Internet of Things” in which previously-dumb (i.e., non-computerized) devices are provided with processing capabilities and specialized intelligence to assist a user in the operation of the device.
As used herein, the term “feature” refers to the specification and/or implementation of an independent requirement of the behavior of a ubiquitous computing device. As used herein, the term “feature interaction” refers to a conflict between two or more features.
As used here, “manual” control refers to control in direct response to deliberate user requests or actions. Manual control can include electronic control (e.g., implemented by the control system), such as when a user requests unlocking of a door at a door lock system, enters a pass code, and is authenticated by the door lock system. Manual control of the system can also include mechanical control, such as when a user locks or unlocks the door with a key, thereby bypassing the electrical control by the door lock system. Mechanical control is not implemented by the electronic control, but the action can be detected by the electrical portion of the control system.
Examples disclosed herein provide ubiquitous computing according to a framework that improves the efficiency, reliability, and usability of potentially-complex device behaviors. Because the requirements for control of networked devices can reflect diverse purposes, situations, and/or levels of certainty about a current situation, examples disclosed herein specify and implement requirements independently. In some such examples, the outputs of features implementing such requirements are implemented at runtime according to assigned priorities.
Advantages of examples disclosed herein include simplification of implementing independent requirements in devices, making control of devices more flexible and/or extensible (e.g., because requirements can come from different sources), and/or enabling addition and/or deletion of control requirements at any time. Examples disclosed herein use priority to resolve conflicts among competing goals. As used herein, a feature with higher priority is more important than (e.g., takes precedence over and/or is more preferable for the purposes of controlling behavior than) a feature with lower priority. In some examples, priority is encoded in feature records using integer values.
Some examples disclosed herein handle feedback loops introduced by manual control of a ubiquitous computing device such that automated control of the device reaches quiescence (e.g., reaches a steady-state consistent with the manual control).
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of an example ubiquitous computing device <b>100</b> to control an actuator <b>102</b>. The example actuator <b>102</b> may be, but is not necessarily, a part of the ubiquitous computing device <b>100</b>. The example actuator <b>102</b> of <figref idref="DRAWINGS">FIG. 1</figref> can be any type of actuator, such as an electronic actuator. An example of an actuator <b>102</b> described below is an electronic door lock for a home. On the example electronic door lock, there are two access panels mounted by the door: one outside the house and one inside the house. Each example panel has buttons to request that the door be locked or unlocked, a keypad for entering passcodes, and a message display.
The example actuator <b>102</b> controls a controlled object <b>103</b>. In the example of a door lock, the controlled object <b>103</b> may be the locking mechanism, and the actuator <b>102</b> electronically manipulates the locking mechanism (e.g., via electromagnetic force, etc.).
The example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> includes a set of feature controllers <b>106</b>, <b>108</b>, <b>110</b>, <b>112</b>. Each of the example feature controllers <b>106</b>-<b>112</b> receives one or more input signals and generates a record to indicate a desired control action to be performed by the actuator <b>102</b> to control the controlled object <b>103</b>. While four feature controllers <b>106</b>-<b>112</b> are shown in <figref idref="DRAWINGS">FIG. 1</figref>, the ubiquitous computing device <b>100</b> may have any number of feature controllers <b>106</b>-<b>112</b> to implement behavioral requirements of the device.
The feature controllers <b>106</b>-<b>112</b> of <figref idref="DRAWINGS">FIG. 1</figref> are assigned respective priority values. For example, the feature controller <b>106</b> may be assigned priority <b>10</b>, the feature controller <b>108</b> may be assigned priority <b>3</b>, the feature controller <b>110</b> may be assigned priority <b>2</b>, and the feature controller <b>112</b> may be assigned priority <b>1</b>. In some examples, one or more of the feature controllers <b>106</b>-<b>112</b> may have the same priority value. As discussed in more detail below, each of the example feature controllers <b>106</b>-<b>112</b> is provided with a control scheme (e.g., a control algorithm, a control program, etc.) that causes the feature controllers <b>106</b>-<b>112</b> to generate output commands based on respective inputs. An example implementation of one of the feature controllers <b>106</b>-<b>112</b> is described below with reference to <figref idref="DRAWINGS">FIG. 3</figref>.
In some other examples, one or more of the feature controllers <b>106</b>-<b>112</b> implement multiple features. For example, a feature controller <b>106</b>-<b>112</b> may be required to implement multiple different behavioral requirements of the ubiquitous computing device <b>100</b>. In some such examples, one or more of the different behavioral requirements have different priority constraints, and the constraints may conflict in such a way that the feature cannot fit anywhere in the priority order. To implement multiple features using one feature controller <b>106</b>-<b>112</b>, the feature controller <b>106</b>-<b>112</b> implements the different requirements as sub-features with different priority values under one feature type. Each feature and/or sub-feature is uniquely identified by a feature, priority pair.
Using the example of the electronic door lock, the feature controllers <b>106</b>-<b>112</b> implement the following behavior requirements as independent features:
Electronic Operation (EO): When a person requests a lock or unlock operation from an access panel, if that operation from that panel requires a passcode, read the passcode and check the entered passcode. If the operation is refused, send a message to the access panel. Otherwise, lock or unlock the door as requested. In the example below, the feature controller <b>106</b> implements the EO feature.
Hands-Free Entry (HFE): When sensors detect that a resident's car is arriving on the property, unlock the door so that the resident can enter easily (e.g., even when the resident is carrying packages). In the example below, the feature controller <b>108</b> implements the HFE feature.
Intruder Defense (ID): When sensors outside the house detect the possible presence of an intruder, lock the door and send “possible intruder detected” messages to the access panels. Keep the door locked until the sensors provide an “all clear” signal, at which time “all clear” messages are sent to the access panels. In the example below, the feature controller <b>110</b> implements the ID feature.
Night Lock (NL): In “night mode,” automatically lock the door after it has been unlocked for a defined period of time. Residents may set the time when “night mode” begins and ends. In the example below, the feature controller <b>112</b> implements the NL feature.
The example feature controllers <b>106</b>-<b>112</b> implement the respective ones of EO, HFE, ID, and NL. Door lock control may be complicated when the electronic door lock is battery-powered. Electronic control of the lock can fail (e.g., when the battery dies). To handle such situations, the example door lock permits mechanical or manual operation (e.g., using a physical key as a credential).
The example feature controllers <b>106</b>-<b>112</b> of <figref idref="DRAWINGS">FIG. 1</figref> run concurrently. The outputs of the feature controllers <b>106</b>-<b>112</b> may be considered virtual actuator settings, because each feature controller <b>106</b>-<b>112</b> functions as if that feature controller <b>106</b>-<b>112</b> is controlling the object unilaterally via a dedicated actuator.
The example features controllers <b>106</b>-<b>112</b> populate a feature record cache <b>114</b> (e.g., a record list) with respective records <b>116</b>, <b>118</b>, <b>120</b>, <b>122</b> representing the virtual actuator settings. For example, the feature controller <b>106</b> generates a record <b>116</b> and provides the record to a feature coordinator <b>124</b>, which manages the feature record cache <b>114</b> as described in more detail below. In addition to virtual actuator settings, the records include other information, such as priority, to enable generation of a control signal (e.g., an actuator setting) to the actuator <b>102</b>.
Each of the example feature records <b>116</b>-<b>122</b> in the feature record cache <b>114</b> of <figref idref="DRAWINGS">FIG. 1</figref> contains five items: a timestamp time; an actuator setting of setting; a mode setting mode; a feature having a data type of Feature; and a priority having a data type of Integer. Each feature record <b>116</b>-<b>122</b> generated and provided to the feature coordinator (except for records with a dontCare setting, which have no mode). These data items are discussed in more detail below.
The example feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIG. 1</figref> selects between the records <b>116</b>-<b>122</b> in the feature record cache <b>114</b> to determine how to control the actuator <b>102</b>. An example implementation of the feature coordinator <b>124</b> is described below with reference to <figref idref="DRAWINGS">FIG. 2</figref>.
To determine a desired output of the actuator <b>102</b> that corresponds to a particular behavioral requirement, the example feature controllers <b>106</b>-<b>112</b> receive input signals from one or more physical sensors <b>126</b>, <b>128</b>, one or more virtual sensors <b>130</b>, <b>132</b>, <b>134</b>, and/or one or more object state sensors <b>136</b>.
The physical sensors <b>126</b>, <b>128</b> may include any sensor that measures or detects physical quantities (e.g., temperature, pressure, motion, presence of chemicals, chemical composition, sound, magnetism, light, and/or any other kind of sensor). The type(s) of physical sensors <b>126</b>, <b>128</b> are determined based on the type or purpose of the ubiquitous computing device <b>100</b>. In some examples, one or more of the physical sensors <b>126</b>, <b>128</b> is physically separate and/or remote from the ubiquitous computing device <b>100</b>. In some such examples, the separated physical sensor <b>126</b>, <b>128</b> communicates its output to the ubiquitous computing device <b>100</b> via a communication network (e.g., a wireless network, a wired connection, etc.).
The example virtual sensors <b>130</b>-<b>134</b> of <figref idref="DRAWINGS">FIG. 1</figref> receive signals from one or more of the example physical sensors <b>126</b>, <b>128</b> and/or the state of the actuator <b>102</b> from the object state sensor(s) <b>136</b>. The example virtual sensors <b>130</b>-<b>134</b> are models that generate virtual sensor values that represent the output of virtual sensors (e.g., soft sensors, proxy sensors, inferential sensors, etc.), and make inferences of the state of a quantity based on input signals.
The example object state sensor <b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref> is a physical sensor (e.g., another one of the physical sensors <b>126</b>, <b>128</b>) that senses the current state of the controlled object <b>103</b> (e.g., open/closed, position, etc.). For example, the state of the controlled object <b>103</b> (e.g., locked or unlocked, in the door lock example) may not be the most recent state set by the feature coordinator <b>124</b> due to mechanical or manual operation of the actuator <b>102</b> and/or the controlled object <b>103</b>. In the door lock example, a physical sensor (e.g., a Hall effect sensor or other type of sensor) may be used to determine whether a locking mechanism is in a locked state or an unlocked state. In some examples, the feature coordinator <b>124</b> sends the output actuator setting provided to the actuator <b>102</b> to the virtual sensor models <b>130</b>-<b>134</b> and/or to the feature controllers <b>106</b>-<b>112</b>. For example, the actuator setting output by the feature coordinator <b>124</b> may be compared with the value output by the object state sensor <b>136</b> to detect failure of the actuator <b>102</b> and/or to detect changes in the controlled object <b>103</b> having external causes.
In the door lock example, the feature controllers <b>106</b>-<b>112</b> and the feature coordinator <b>124</b> use the actuator settings specified in an enumerated set {lock, unlock}. The door lock (e.g., the controlled object <b>103</b>) has a single sensor (e.g., the object state sensor <b>136</b>), which draws its sensor output values from an enumerated set {locked, unlocked} or an equivalent set (e.g., {0, 1}). In this example, the object state sensor <b>136</b> outputs a value only when the state of the door lock (e.g., the actuator <b>102</b>) changes. However, the example object state sensor <b>136</b> may additionally or alternatively make periodic readings of the lock state and output the resulting value locked or unlocked.
The example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> operates according to the following five rules. The example rules below may be used to implement the feature controllers and/or feature coordinator for a ubiquitous computing device having any combination of features and/or actuators.
Rule 1: All actuator settings by the feature controllers <b>106</b>-<b>112</b> (e.g., virtual actuator settings) are persistent. For example, a feature controller <b>106</b> does not emit a setting unlock to as a single instance command to “unlock the door now.” Instead, the example feature controller <b>106</b> emits a setting unlock to mean “unlock the door now and keep it unlocked until I emit a different setting” (keeping in mind that the feature controller <b>106</b> is independent and behaves as if it has sole control over the actuator <b>102</b>). The example ubiquitous computing device <b>100</b> complies with Rule 1 because, in the door lock example, if settings were interpreted as instantaneous events, then immediately after the feature controller <b>106</b> above unlocks the door, a lower-priority feature (e.g., feature controller <b>108</b>) could lock it again, which could defeat the purpose of using different priorities for the feature controllers <b>106</b>-<b>112</b>.
As a result of Rule 1 (i.e., persistence of actuator settings), when a feature controller <b>106</b> outputs a setting, the output setting becomes the current setting of the feature controller <b>106</b>. The current setting of the feature controller <b>106</b> persists until the current setting is replaced by another (e.g., more recent) setting of that feature controller <b>106</b>. In some examples, the current setting has a fixed duration and is replaced when that duration expires. In some other examples, current settings persist until a new sensor value is received at the feature controller <b>106</b>.
Rule 2: The type(s) of the virtual actuator settings by the feature controllers <b>106</b>-<b>112</b> must be the same types as the corresponding real settings, plus a reserved value dontCare. The dontCare value means that the feature controller <b>106</b>-<b>112</b> is not attempting to exert control over the actuator setting. Rule 2 occurs due to the use of persistent actuator settings under Rule 1. Because all virtual actuator settings are persistent, if the highest priority feature controller (e.g., the feature controller <b>106</b>) were always to emit settings that exert control over the actuator <b>102</b>, then none of the other feature controllers <b>108</b>-<b>112</b> would ever be able to exert control or take effect. The dontCare setting, when output by a feature controller <b>106</b>, create windows of opportunity during which lower-priority feature controllers <b>108</b>-<b>112</b> can exert control over the actuator <b>102</b>.
Replacing a real (e.g., enumerated, or non-dontCare) virtual actuator setting with a dontCare may be referred to as “canceling” the virtual actuator setting. In the example of <figref idref="DRAWINGS">FIG. 1</figref>, the feature coordinator <b>124</b> does not set records containing explicit dontCare settings feature record cache <b>114</b>. Instead, to cancel a virtual actuator setting, the example feature coordinator <b>124</b> deletes the corresponding feature record <b>116</b> from the feature record cache <b>114</b> upon receiving a feature record <b>116</b> from the feature controller <b>106</b> having the same feature and priority and a dontCare virtual actuator setting. Thus, while the example feature controller <b>106</b> maintains a dontCare setting, the feature record cache <b>114</b> is devoid of a feature record <b>116</b> corresponding to that feature controller <b>106</b>. As used herein, deleting a feature record refers to removing the record from the feature record cache <b>114</b>, marking the feature record as irrelevant and/or unusable, and/or otherwise ignoring or not using the feature record.
Rule 3: If multiple feature controllers <b>106</b>-<b>112</b> have the same priority value, then the most recent virtual actuator setting by those feature controllers <b>106</b>-<b>112</b> having the same priority value takes precedence. Because two or more of the feature controllers <b>106</b>-<b>112</b> may have multiple current settings that may conflict at a given time, Rule 3 provides a way to choose which of those feature controllers <b>106</b>-<b>112</b> takes precedence. Rule 3 is consistent with the fact that the most recent virtual actuator setting by any individual feature controller <b>106</b>-<b>112</b> takes precedence over earlier settings by that feature controller <b>106</b>-<b>112</b>.
Rule 4: If all virtual actuator settings by the feature controllers <b>106</b>-<b>112</b> become dontCare, the actuator setting output by the feature coordinator <b>124</b> to the actuator <b>102</b> is left unchanged. Persistent settings according to Rule 1 may be uncomfortable for users who do not have definite ideas about how long a setting should last. For example, when a person uses the Electronic Operation of the door lock example to unlock his front door in the morning, his intention may be to leave it open all day for residents and visitors to go in and out. In such a case, an unlock duration such as one minute is far too short. On the other hand, if the unlock setting lasts until the next manual lock operation then, because manual operations are given the highest priority in this example, the door will remain unlocked even when Intruder Defense has detected an intruder and is attempting to lock it. Rule 4 provides an indefinite duration, which keeps the door unlocked until something happens to make locking desirable.
Under Rule 4, the duration of the manual unlock setting may be short (e.g., one minute, two minutes, etc). When the minute expires, the feature controller <b>106</b> implementing Electronic Operation deletes the feature record <b>116</b> and has a dontCare virtual actuator setting. However, if all of the other feature controllers <b>108</b>-<b>112</b> also have dontCare settings in force (e.g., the feature record cache <b>114</b> is empty), then the actuator <b>102</b> will retain an unlock setting under Rule 4. The actuator <b>102</b> will lock only when one of the feature controllers <b>106</b>-<b>112</b> outputs a new virtual actuator setting lock, which is then implemented by the feature coordinator <b>124</b>.
Rule 5: Each virtual actuator setting in the enumerated set (e.g., {lock, unlock}), but not the dontCare setting, has a mode setting (e.g., an immediacy) that is either immediate or eventual. In the example of <figref idref="DRAWINGS">FIG. 1</figref>, the feature records <b>116</b>-<b>122</b> specify the mode setting in association with the virtual actuator output setting specified in the feature record <b>116</b>-<b>122</b>. If the mode setting is eventual, the corresponding virtual actuator setting is intended to take effect as soon as possible and whenever possible (e.g., subject to priority rules). If the mode setting is immediate, the corresponding virtual actuator setting is intended to take effect immediately. However, when the mode setting is immediate but the virtual actuator setting (e.g., an unlock setting in the feature record <b>122</b>) cannot take effect immediately (e.g., due to priority rules), or if the virtual actuator setting takes effect but is preempted by a different virtual actuator setting from a different feature record (e.g., feature records <b>116</b>-<b>120</b>) before the feature record <b>122</b> is canceled by the corresponding feature controller <b>112</b>, then the feature record <b>122</b> having the immediate mode setting is canceled by the feature coordinator <b>124</b>.
Rule 5 makes the behavior of the example ubiquitous computing device <b>100</b> predictable to users. For example, if a user requests a manual operation, it is acceptable for the ubiquitous computing device <b>100</b> to refuse the request (e.g., due to programmed behaviors of the ubiquitous computing device <b>100</b>). However, it may be unacceptable for the ubiquitous computing device <b>100</b> to ignore the request, after which the user may walk away, and then grant the request at a later time when the user may not be aware of the grant by the ubiquitous computing device <b>100</b>. Such behavior results in a lack of trust in the ubiquitous computing device <b>100</b> by the user and undermines the perceived utility of the ubiquitous computing device <b>100</b>.
In an example of operation of the door lock under Rules 1-5 having the example feature controllers <b>106</b>-<b>112</b> and the feature coordinator <b>124</b>, a resident of a household in which the door lock is installed drives home and is detected by Hands-Free Entry via one or more physical sensors <b>126</b>, <b>128</b> and/or virtual sensors <b>130</b>-<b>134</b>. The feature controller <b>110</b> implementing HFE generates a feature record <b>120</b> with an unlock virtual actuator setting. The example feature record <b>120</b> for HFE has a duration of 3 minutes, due to uncertainties about how long it will take the resident to get to the door.
Around the same time, motion detectors (e.g., physical sensors <b>126</b>, <b>128</b> and/or virtual sensors <b>130</b>-<b>134</b>) in the back of the house trigger the feature controller <b>108</b> implementing Intruder Defense to generate a feature record <b>118</b> having a lock virtual actuator setting. The feature controller <b>108</b> (e.g., Intruder Defense) has a higher priority (e.g., 3) than the Hands-Free Operation, so the feature coordinator <b>124</b> determines that the actuator setting is to be lock and, therefore, the controlled object <b>103</b> remains in a locked state. The user finds that the door is locked and sees an intruder alert on the door panel. When the user goes to the back of the house, he finds that a squirrel has been sensed as an intruder. When the squirrel is removed, the feature controller <b>108</b> generates a dontCare virtual actuator setting and, thus, deletes the feature record <b>118</b> asserting a lock actuator setting. If the feature record <b>118</b> is deleted within the 3 minute duration of the feature record <b>120</b>, the example feature coordinator <b>124</b> determines that the actuator setting should be unlock and outputs an unlock signal to the actuator <b>102</b> to cause the actuator <b>102</b> to unlock the controlled object <b>103</b>.
The immediate mode setting may be used to, for example, implement manual operations electronically. If manual operations are not immediately successful the user may then not want or expect them, so they should be canceled. In the above example the hands-free unlock may be in the immediate mode setting because, while hands-free unlock is not a manual operation as defined above because the resident did not explicitly request that the door be unlocked, hands-free unlock is similar to a manual operation in that the hands-free unlock feature is intended for the immediate benefit of a user who will expect it to occur. If hands-free unlock has an immediate mode setting, the feature record <b>120</b> is canceled by the feature coordinator <b>124</b> when the feature record <b>120</b> arrives at the coordinator (if Intruder Defense is already triggered) and/or as soon as the feature controller <b>108</b> sets the feature record <b>118</b> at the feature record cache <b>114</b> (e.g., when the Intruder Defense is triggered).
Additionally or alternatively, the immediate mode setting may be used for mechanical operations of the door lock with a knob and/or key. When a mechanically-operated actuator setting is over-ridden by some other actuator setting, the mechanically-operated actuator setting is canceled and can have no further effect.
Another example of the immediate mode setting includes implementing a feature whose purpose can be achieved in alternative ways (e.g., using alternative actuators). For example, if a first actuator setting of the feature cannot be honored immediately, the example feature may try an alternative actuator or other solution rather than waiting for possible eventual success.
<figref idref="DRAWINGS">FIG. 2</figref> is a more detailed block diagram of the example feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIG. 1</figref>. The example feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIG. 2</figref> includes a feature record manager <b>202</b>, a feature record selector <b>204</b>, a feature record pruner <b>206</b>, an actuator output determiner <b>208</b>, an actuator output comparator <b>210</b>, an actuator output cache <b>212</b>, and an actuator signal generator <b>214</b>.
The example feature record manager <b>202</b> of <figref idref="DRAWINGS">FIG. 2</figref> receives feature records <b>116</b>-<b>122</b> from the feature controllers <b>106</b>-<b>112</b> of <figref idref="DRAWINGS">FIG. 1</figref> via a toCoord data stream. The example feature record manager <b>202</b> reads the feature records <b>116</b>-<b>122</b> as they are received and controls the feature records <b>116</b>-<b>122</b> stored in the feature record cache <b>114</b> based on the data in the feature records <b>116</b>-<b>122</b> (e.g., actuator setting, mode setting, feature, priority, and time).
Except for different Setting types (e.g., different sets of enumerated actuator setting types) and different Feature types (e.g., different sets of enumerated feature types) appropriate to different actuators, the operation of the feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIGS. 1 and 2</figref> may be highly similar or identical for different types of ubiquitous computing devices <b>100</b>. The example feature controllers <b>106</b>-<b>112</b> perform a toCoord!setting,mode action that transmits the actuator setting and mode setting in a record with the correct feature, priority, and time, and writing the record to a toCoord data stream. The toCoord data stream provides the feature records <b>116</b>-<b>122</b> from all of the feature controllers <b>106</b>-<b>112</b> to the feature coordinator <b>124</b>, which processes the feature records <b>116</b>-<b>122</b> to add and/or remove feature records <b>116</b>-<b>122</b> from the feature record cache <b>114</b>. In this example, it is assumed that records of the toCoord stream are ordered by time (although adjacent records can have the same time). The example feature record feature record manager <b>202</b> processes the feature records <b>116</b>-<b>122</b> in the order they are received at the feature coordinator <b>124</b>.
The example feature record cache <b>114</b> may be considered a state of the feature coordinator <b>124</b>. The example feature record manager <b>202</b> initializes the feature record cache <b>114</b> to an empty list. As the feature record manager <b>202</b> processes records received in the toCoord stream, the feature record manager <b>202</b> controls the state of the feature record cache <b>114</b> by adding and/or removing feature records <b>116</b>-<b>122</b>. Thus, the example feature record cache <b>114</b> contains the current actuator setting of all of the feature/priority pairs generated by the example feature controllers <b>106</b>-<b>112</b>, where dontCare cause feature records <b>116</b>-<b>122</b> to be removed. In the example of <figref idref="DRAWINGS">FIG. 2</figref>, the feature record manager <b>202</b> also orders the feature records <b>116</b>-<b>122</b> in the feature record cache <b>114</b> by priority (e.g., highest priority to lowest priority or vice versa).
In the example of <figref idref="DRAWINGS">FIG. 2</figref>, the feature record cache <b>114</b> has the following properties: 1) no record in the list has dontCare as its actuator setting. (e.g., feature records <b>116</b>-<b>122</b> having dontCare actuator settings are not stored explicitly in the feature record cache <b>114</b>); 2) for each feature/priority pair, there is at most one record with that combination of feature and priority (e.g., the current actuator setting corresponding to that feature); 3) the records are ordered by priority, with the highest priority first (e.g., adjacent records can have the same priority because priority values are not unique); and 4) within a group of feature records having the same priority, the feature records are ordered by time, with the highest time (e.g., the most recent record) first (e.g., adjacent records can have the same time because times are not unique).
Second, there is a variable oldSet:Setting. The value of oldSet:Setting is the last actuator setting sent by the actuator signal generator <b>214</b> to the actuator <b>102</b>. This excludes its initial value dontCare, which is not sent to the actuator <b>102</b>.
The example feature record manager <b>202</b> processes each input feature record <b>116</b>-<b>122</b> in the toCoord data stream by determining whether the input feature record <b>116</b>-<b>122</b> matches a feature record stored in the feature record cache <b>114</b>. The input feature record <b>116</b>-<b>122</b> matches a stored record in feature record cache <b>114</b> when input feature record <b>116</b>-<b>122</b> and the stored record have the same feature and priority.
When the input feature record <b>116</b>-<b>122</b> does not match any stored records and the actuator setting of the input feature record <b>116</b>-<b>122</b> has an actuator setting of dontCare, the example feature record manager <b>202</b> discards the input feature record <b>116</b>-<b>122</b>. When the input feature record <b>116</b>-<b>122</b> does not match any stored records and the actuator setting of the input feature record <b>116</b>-<b>122</b> has an enumerated actuator setting (e.g., is not dontCare), the feature record manager <b>202</b> inserts the input feature record <b>116</b>-<b>122</b> into the feature record cache <b>114</b> in the order according to the priority and time of the input feature record <b>116</b>-<b>122</b>.
When the feature record manager <b>202</b> identifies a feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> that matches the input feature record <b>116</b>-<b>122</b> and the actuator setting of the input feature record <b>116</b>-<b>122</b> is dontCare, the example feature record manager <b>202</b> deletes the matching feature record <b>116</b>-<b>122</b> from the feature record cache <b>114</b> (and does not replace it). As a result, the feature controller <b>106</b>-<b>112</b> that generated the input feature record <b>116</b>-<b>122</b> no longer has a feature record in the feature record cache <b>114</b>. When the feature record manager <b>202</b> identifies a feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> that matches the input feature record <b>116</b>-<b>122</b> and the actuator setting of the input feature record <b>116</b>-<b>122</b> is an enumerated actuator setting (e.g., is not dontCare), the feature record manager <b>202</b> deletes the matching feature record <b>116</b>-<b>122</b> and inserts the input feature record <b>116</b>-<b>122</b> into the feature record cache <b>114</b> in the order according to the priority and time of the input feature record <b>116</b>-<b>122</b>.
In some examples, the data stream(s) toCoord that provide feature records <b>116</b>-<b>122</b> from the feature controllers <b>106</b>-<b>112</b> to the feature coordinator <b>124</b> are not necessarily delivered in timestamp order. When data stream(s) cannot be relied upon to deliver feature records in timestamp order, the example feature coordinator <b>124</b> adds a further requirement for deleting and/or replacing stored feature records in the feature record cache <b>114</b> based on input feature records <b>116</b>-<b>122</b>. That is, when the feature record manager <b>202</b> identifies a feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> that matches the input feature record <b>116</b>-<b>122</b>, the example feature record manager <b>202</b> deletes or replaces the matching feature record <b>116</b>-<b>122</b> from the feature record cache <b>114</b> only when the timestamp of the input feature record <b>116</b>-<b>122</b> is more recent (e.g., has a later time) than the timestamp of the matching feature record <b>116</b>-<b>122</b>. If the input feature record <b>116</b>-<b>122</b> has an earlier timestamp than the matching feature record <b>116</b>-<b>122</b>, the input feature record <b>116</b>-<b>122</b> is obsolete and is discarded.
The example feature record selector <b>204</b> of <figref idref="DRAWINGS">FIG. 2</figref> selects the first-ordered feature record from the feature record cache <b>114</b> (e.g., the feature record <b>116</b>-<b>122</b> having the highest priority, the feature record <b>116</b>-<b>122</b> having the most recent time when multiple feature records have a highest priority).
When the feature record selector <b>204</b> selects a first feature record (e.g., the feature record <b>116</b> of <figref idref="DRAWINGS">FIG. 1</figref>), the example feature record pruner <b>206</b> of <figref idref="DRAWINGS">FIG. 2</figref> removes any feature records in the feature record cache <b>114</b> that have an immediate mode setting and are preempted by the selected feature record.
The example actuator output determiner <b>208</b> of <figref idref="DRAWINGS">FIG. 2</figref> determines an actuator setting to be output to the actuator <b>102</b> based on the selected feature record. For example, the actuator output determiner <b>208</b> may determine the actuator setting stored in the selected feature record <b>116</b> and store the actuator setting in a temporary variable newSet:setting. In some examples, the feature record pruner <b>206</b> only removes feature records that have an immediate mode setting and an actuator setting that is not equal to the newSet:setting variable.
The example actuator output comparator <b>210</b> of <figref idref="DRAWINGS">FIG. 2</figref> compare a current setting of the output device to the first output setting determines whether an output signal is necessary by comparing a most recent actuator setting applied to the actuator <b>102</b> (e.g., oldSet:setting) that is stored in the actuator output cache <b>212</b>. When the actuator output comparator <b>210</b> determines that newSet:setting is equal to oldSet:setting, a new signal to the actuator <b>102</b> is not needed. In contrast, when the actuator output comparator <b>210</b> determines that newSet:setting is not equal to oldSet:setting, the example actuator output comparator <b>210</b> instructs the actuator signal generator <b>214</b> to generate a signal to implement newSet:setting at the actuator <b>102</b>.
The example actuator signal generator <b>214</b> generates a signal based on the type of the actuator <b>102</b> and the actuator setting to be implemented. When the actuator signal generator <b>214</b> outputs the signal to the actuator <b>102</b>, the example actuator signal generator <b>214</b> also updates the oldSet:setting variable in the actuator output cache <b>212</b>.
The operation of the example feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIGS. 1 and/or 2</figref> may be restated as: a feature's current setting (excluding dontCare) at a priority p and with a timestamp t is in force unless another feature record <b>116</b>-<b>122</b> (e.g., an output from another feature controller <b>106</b>-<b>112</b>) has a different actuator setting at a priority greater than p, another feature record <b>116</b>-<b>122</b> (e.g., an output from another feature controller <b>106</b>-<b>112</b>) has a different current setting at priority p, and with time t or more recent than t, or the actuator setting has an immediate mode setting, and since time t a different actuator setting has been applied.
Using the example features described above (e.g., EO, ID, HFE, and NL), the behavior of the feature coordinator <b>124</b> is consistent with the priorities of the features. For example, the actuator setting (e.g., lock or unlock) of the feature controller <b>106</b> for EO is in force, when EO does not have a dontCare actuator setting. The actuator setting (e.g., lock) of the feature controller <b>108</b> for ID is in force unless EO has an unlock setting in force (e.g., due to the higher priority of feature records associated with EO). The actuator setting (e.g., unlock) of the feature controller <b>110</b> for HFE is in force unless, since the last comingHome event triggering the feature controller <b>110</b> to set an unlock actuator setting, EO or ID has had a lock setting in force. The actuator setting (e.g., lock) of the feature controller <b>112</b> for NL is in force unless EO and/or HFE have an unlock setting in force. If none of the feature controllers <b>106</b>-<b>112</b> have a current lock or unlock actuator setting, then the most recent actuator setting in force continues to stay in force.
In some examples, feature controllers can be added (e.g., by a user) to provide guaranteed behaviors. For example, because the feature controllers <b>106</b>-<b>112</b> are independent and the feature coordinator <b>124</b> manages the interactions between the feature controllers <b>106</b>-<b>112</b>, a guaranteed behavior can be added as another independent feature controller that sets feature records having a high priority (e.g., the highest priority). Adding a feature controller need not affect other feature controllers, and may not necessarily even require the user to understand the operations of the other feature controllers.
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram of an example implementation of a feature controller <b>300</b> that may be used to implement any of the feature controllers <b>106</b>-<b>112</b> of <figref idref="DRAWINGS">FIG. 1</figref>. The example feature controller <b>300</b> of <figref idref="DRAWINGS">FIG. 3</figref> includes a sensor value reader <b>302</b>, an actuator output determiner <b>304</b>, a feature record generator <b>306</b>, and a feature configuration <b>308</b>.
The example sensor value reader <b>302</b> of <figref idref="DRAWINGS">FIG. 3</figref> receives sensor values as inputs. For example, the sensor value reader <b>302</b> may receive physical sensor values (e.g., signals, data streams, etc.) from the example sensors <b>126</b>, <b>128</b>, virtual sensor values from the virtual sensor models <b>130</b>-<b>134</b>, and/or a controlled object status from the object state sensor(s) <b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref>.
The example actuator output determiner <b>304</b> determines an actuator setting (e.g., actuator settings from an enumerated list or dontCare) based on the received sensor values. The actuator output determiner <b>304</b> for the example feature controller <b>300</b> is specific to the behavioral requirement that is implemented by the feature controller <b>300</b>. Examples of state diagrams that may be used to implement actuator output determiners <b>304</b> for the door lock example (e.g., NL, HFE, ID, EO) are described below with reference to <figref idref="DRAWINGS">FIGS. 4A-4D</figref>.
In some examples, the actuator output determiner <b>304</b> performs a determination of an appropriate actuator setting each time a feature record <b>116</b>-<b>122</b> is received. In other examples, the actuator output determiner <b>304</b> performs the determination at regular and/or irregular intervals using the most recent sensor values received at the sensor value reader <b>302</b>.
The example feature record generator <b>306</b> generates a feature record (e.g., the feature records <b>116</b>-<b>122</b> of <figref idref="DRAWINGS">FIG. 1</figref>) using the actuator setting determined by the actuator output determiner <b>304</b>. The feature record generator <b>306</b> further includes a mode setting (e.g., immediate or eventual), a priority value, a timestamp time, and the feature type. The example feature configuration <b>308</b> stores the mode setting (e.g., immediate or eventual), the priority value, and/or the feature type that is assigned to the example feature controller <b>300</b>.
While example manners of implementing feature controllers <b>106</b>-<b>112</b> and the feature coordinator of <figref idref="DRAWINGS">FIG. 1</figref> are illustrated in <figref idref="DRAWINGS">FIGS. 2 and 3</figref>, one or more of the elements, processes and/or devices illustrated in <figref idref="DRAWINGS">FIGS. 1, 2</figref>, and/or <b>3</b> may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the example actuator <b>102</b>, the example feature controllers <b>106</b>-<b>112</b>, the example feature record cache <b>114</b>, the example feature coordinator <b>124</b>, the example sensors <b>126</b>, <b>128</b>, the example virtual sensor models <b>130</b>-<b>134</b>, the example object state sensor <b>136</b>, the example feature record manager <b>202</b>, the example feature record selector <b>204</b>, the example feature record pruner <b>206</b>, the example actuator output determiner <b>208</b>, the example actuator output comparator <b>210</b>, the example actuator output cache <b>212</b>, the example actuator signal generator <b>214</b>, the example sensor value reader <b>302</b>, the example actuator output determiner <b>304</b>, the example feature record generator <b>306</b>, the example feature configuration <b>308</b> and/or, more generally, the example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example actuator <b>102</b>, the example feature controllers <b>106</b>-<b>112</b>, the example feature record cache <b>114</b>, the example feature coordinator <b>124</b>, the example sensors <b>126</b>, <b>128</b>, the example virtual sensor models <b>130</b>-<b>134</b>, the example object state sensor <b>136</b>, the example feature record manager <b>202</b>, the example feature record selector <b>204</b>, the example feature record pruner <b>206</b>, the example actuator output determiner <b>208</b>, the example actuator output comparator <b>210</b>, the example actuator output cache <b>212</b>, the example actuator signal generator <b>214</b>, the example sensor value reader <b>302</b>, the example actuator output determiner <b>304</b>, the example feature record generator <b>306</b>, the example feature configuration <b>308</b> and/or, more generally, the example ubiquitous computing device <b>100</b> could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)). When reading any of the apparatus or system claims of this patent to cover a purely software and/or firmware implementation, at least one of the example actuator <b>102</b>, the example feature controllers <b>106</b>-<b>112</b>, the example feature record cache <b>114</b>, the example feature coordinator <b>124</b>, the example sensors <b>126</b>, <b>128</b>, the example virtual sensor models <b>130</b>-<b>134</b>, the example object state sensor <b>136</b>, the example feature record manager <b>202</b>, the example feature record selector <b>204</b>, the example feature record pruner <b>206</b>, the example actuator output determiner <b>208</b>, the example actuator output comparator <b>210</b>, the example actuator output cache <b>212</b>, the example actuator signal generator <b>214</b>, the example sensor value reader <b>302</b>, the example actuator output determiner <b>304</b>, the example feature record generator <b>306</b>, and/or the example feature configuration <b>308</b> is/are hereby expressly defined to include a tangible computer readable storage device or storage disk such as a memory, a digital versatile disk (DVD), a compact disk (CD), a Blu-ray disk, etc. storing the software and/or firmware. Further still, the example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> may include one or more elements, processes and/or devices in addition to, or instead of, those illustrated in <figref idref="DRAWINGS">FIGS. 1, 2</figref>, and/or <b>3</b>, and/or may include more than one of any or all of the illustrated elements, processes and devices.
In the examples of <figref idref="DRAWINGS">FIGS. 4A-4D</figref>, reading a record from a stream uses the notation streamName ? recordType, and writing a record to a stream uses the notation streamName ! record. The guard of a transition is separated from its actions by a slash.
<figref idref="DRAWINGS">FIG. 4A</figref> is an example state diagram <b>400</b> that may be implemented by the example actuator output determiner <b>304</b> for the example feature controller <b>106</b> of <figref idref="DRAWINGS">FIG. 1</figref> to control the example Electronic Operation feature discussed above for a door lock ubiquitous computing device. In <figref idref="DRAWINGS">FIG. 4A</figref>, the stream names panelIn and panelOut are used generically, because in the door lock example there are two access panels on the door lock, and the lock and/or unlock requests are received from one of the panels at a time.
The example state diagram <b>400</b> determines whether the virtual actuator setting output to the feature coordinator <b>124</b> is to be lock, unlock, or dontCare based on a panelIn variable, an opAuthorized variable, and an EOtimeout variable (e.g., from a combination of physical sensor(s) <b>126</b>, <b>128</b>, virtual sensor model(s) <b>130</b>-<b>134</b>, and/or the object state sensor(s) <b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref>). The panelln variable indicates whether a user has requested the controlled object <b>103</b> of <figref idref="DRAWINGS">FIG. 1</figref> to be locked or unlocked (e.g., based on an input panel to the ubiquitous computing device <b>100</b>) and/or whether the user is authorized to perform the operation (e.g., whether a correct authorization code has been entered).
In the example state diagram <b>400</b> of <figref idref="DRAWINGS">FIG. 4A</figref>, the possible virtual actuator settings lock, unlock, or dontCare are represented as respective states <b>402</b>, <b>404</b>, <b>406</b>. When the actuator output determiner <b>304</b> receives an input (e.g., from the sensor value reader <b>302</b> of <figref idref="DRAWINGS">FIG. 3</figref>), the actuator output determiner <b>304</b> traverses the state diagram <b>400</b> based on the values of the panelIn variable (e.g., requestLock, requestUnlock), the opAuthorized variable (e.g., yes, no), and/or the EOtimeout variable (e.g., timeout, no).
In the example state diagram <b>400</b>, when the state changes to the lock state <b>402</b> (from any of the states <b>402</b>-<b>406</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a lock actuator setting and an immediate mode setting. When the state changes to the unlock state <b>404</b> (from any of the states <b>402</b>-<b>406</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have an unlock actuator setting and an immediate mode setting. When the state changes to the dontCare state <b>406</b> (from any of the states <b>402</b>-<b>406</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a dontCare actuator setting (and the mode setting is irrelevant).
<figref idref="DRAWINGS">FIG. 4B</figref> is an example state diagram <b>410</b> that may be implemented by the example actuator output determiner <b>304</b> for the example feature controller <b>108</b> of <figref idref="DRAWINGS">FIG. 1</figref> to control the example Hands Free Entry feature discussed above for a door lock ubiquitous computing device. The example state diagram <b>410</b> determines whether the virtual actuator setting output to the feature coordinator <b>124</b> is to be unlock or dontCare based on a HFEsensors variable and a HFEtimeout variable (e.g., from a combination of physical sensor(s) <b>126</b>, <b>128</b>, virtual sensor model(s) <b>130</b>-<b>134</b>, and/or the object state sensor(s) <b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref>). The HFEsensors variable indicates whether a user is approaching the house. The HFEtimeout variable indicates whether an HFE timer has expired.
In the example state diagram <b>410</b> of <figref idref="DRAWINGS">FIG. 4B</figref>, the possible virtual actuator settings unlock or dontCare are represented as respective states <b>412</b>, <b>414</b>. When the actuator output determiner <b>304</b> receives an input (e.g., from the sensor value reader <b>302</b> of <figref idref="DRAWINGS">FIG. 3</figref>), the actuator output determiner <b>304</b> traverses the state diagram <b>410</b> based on the values of the HFEsensors variable (e.g., comingHome, no) and/or the HFEtimeout variable (e.g., timeout, no).
In the example state diagram <b>410</b>, when the state changes to the unlock state <b>412</b> (from the dontCare state <b>414</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have an unlock actuator setting and an immediate mode setting. When the state iterates the unlock state <b>412</b>, the example actuator output determiner <b>304</b> does not output a new feature record (e.g., because the door lock is already unlocked). When the state changes to the dontCare state <b>414</b> (from the unlock state <b>412</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a dontCare actuator setting (and the mode setting is irrelevant).
<figref idref="DRAWINGS">FIG. 4C</figref> is an example state diagram <b>420</b> that may be implemented by the example actuator output determiner <b>304</b> for the example feature controller <b>110</b> of <figref idref="DRAWINGS">FIG. 1</figref> to control the example Intruder Detection feature discussed above for a door lock ubiquitous computing device. The example state diagram <b>420</b> determines whether the virtual actuator setting output to the feature coordinator <b>124</b> is to be lock or dontCare based on an IDsensors variable (e.g., from a combination of physical sensor(s) <b>126</b>, <b>128</b>, virtual sensor model(s) <b>130</b>-<b>134</b>, and/or the object state sensor(s) <b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref>). The IDsensors variable indicates whether intrusion detection sensors have identified a possible intruder near the house.
In the example state diagram <b>420</b> of <figref idref="DRAWINGS">FIG. 4C</figref>, the possible virtual actuator settings lock or dontCare are represented as respective states <b>422</b>, <b>424</b>. When the actuator output determiner <b>304</b> receives an input (e.g., from the sensor value reader <b>302</b> of <figref idref="DRAWINGS">FIG. 3</figref>), the actuator output determiner <b>304</b> traverses the state diagram <b>420</b> based on the value of the IDsensors variable (e.g., intruderDetected, allClear).
In the example state diagram <b>420</b>, when the state changes to the lock state <b>422</b> (from the dontCare state <b>424</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a lock actuator setting and an eventual mode setting. When the state changes to the dontCare state <b>424</b> (from the lock state <b>422</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a dontCare actuator setting (and the mode setting is irrelevant).
<figref idref="DRAWINGS">FIG. 4D</figref> is an example state diagram <b>430</b> that may be implemented by the example actuator output determiner <b>304</b> for the example feature controller <b>112</b> of <figref idref="DRAWINGS">FIG. 1</figref> to control the example Night Lock feature discussed above for a door lock ubiquitous computing device. The example state diagram <b>430</b> determines whether the virtual actuator setting output to the feature coordinator <b>124</b> is to be lock or dontCare based on an NLtimer variable (e.g., from a virtual sensor model <b>130</b>-<b>134</b> of <figref idref="DRAWINGS">FIG. 1</figref> such as a timer or clock). The NLsensors variable indicates whether night mode is active (e.g., whether a current time is within a designated night time range).
In the example state diagram <b>430</b> of <figref idref="DRAWINGS">FIG. 4D</figref>, the possible virtual actuator settings lock or dontCare are represented as respective states <b>432</b>, <b>434</b>. When the actuator output determiner <b>304</b> receives an input (e.g., from the sensor value reader <b>302</b> of <figref idref="DRAWINGS">FIG. 3</figref>), the actuator output determiner <b>304</b> traverses the state diagram <b>430</b> based on the value of the NLtimer variable (e.g., nightBegins, nightEnds).
In the example state diagram <b>430</b>, when the state changes to the lock state <b>432</b> (from the dontCare state <b>434</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a lock actuator setting and an eventual mode setting. When the state changes to the dontCare state <b>434</b> (from the lock state <b>432</b>), the example actuator output determiner <b>304</b> determines that the feature record to be generated by the feature record generator <b>306</b> (e.g., for transmission via the toCoord data stream) is to have a dontCare actuator setting (and the mode setting is irrelevant).
<figref idref="DRAWINGS">FIG. 5</figref> is an example state diagram <b>500</b> that may be implemented by a virtual sensor model <b>130</b>-<b>134</b> of the ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>. The example state diagram <b>500</b> of <figref idref="DRAWINGS">FIG. 5</figref> represents a detected state of the door lock due to a mechanical lock or unlock operation. The example state diagram <b>500</b> includes four states: locked <b>502</b>, unlocked <b>504</b>, unlock Expected <b>506</b>, and lock Expected <b>508</b>. The virtual sensor model <b>130</b>-<b>134</b> implementing the state diagram <b>500</b> receives input data streams toDoor (e.g., an actuator output from the feature controller <b>106</b>-<b>112</b> implementing the MO feature) and fromDoor (e.g., from the object state sensor <b>136</b>). The example feature records <b>116</b>-<b>122</b> that include the MO feature have the same priority values as the example feature records <b>116</b> that include the EO feature.
The example state diagram <b>500</b> (e.g., via the virtual sensor model) may initially be in the locked state <b>502</b> or the unlocked state <b>504</b>. When the state diagram <b>500</b> detects an input “unlocked” on the data stream fromDoor (e.g., from the object state sensor <b>136</b>) while in the locked state <b>502</b>, the example state diagram <b>500</b> transitions from the locked state <b>502</b> to the unlocked state <b>504</b> and the virtual sensor model outputs a mechUnlock virtual sensor value to the toMO data stream (e.g., to the feature controllers <b>106</b>-<b>112</b>). Conversely, when the state diagram <b>500</b> detects an input “locked” on the data stream fromDoor (e.g., from the object state sensor <b>136</b>) while in the unlocked state <b>504</b>, the example state diagram <b>500</b> transitions from the unlocked state <b>504</b> to the locked state <b>502</b> and the virtual sensor model outputs a mechLock virtual sensor value to the toMO data stream (e.g., to the feature controllers <b>106</b>-<b>112</b>).
When the state diagram <b>500</b> detects an input “unlock” on the data stream toDoor (e.g., from one of the feature controllers <b>106</b>-<b>112</b>) while in the locked state <b>502</b>, the example state diagram <b>500</b> transitions from the locked state <b>502</b> to the unlock Expected state <b>506</b>. Then, when the state diagram <b>500</b> detects an input “unlocked” on the data stream fromDoor (e.g., from the object state sensor <b>136</b>) while in the unlock Expected state <b>506</b>, the example state diagram <b>500</b> transitions from the unlock Expected state <b>506</b> to the unlocked state <b>504</b>.
Conversely, when the state diagram <b>500</b> detects an input “lock” on the data stream toDoor (e.g., from one of the feature controllers <b>106</b>-<b>112</b>) while in the unlocked state <b>504</b>, the example state diagram <b>500</b> transitions from the unlocked state <b>504</b> to the lock Expected state <b>508</b>. Then, when the state diagram <b>500</b> detects an input “locked” on the data stream fromDoor (e.g., from the object state sensor <b>136</b>) while in the lock Expected state <b>508</b>, the example state diagram <b>500</b> transitions from the lock Expected state <b>508</b> to the locked state <b>502</b>.
Using the example state diagram <b>500</b>, the example virtual sensor model <b>130</b>-<b>134</b> can infer whether an unlock actuator setting or a lock actuator setting is due to a mechanical operation. This information may be used by the MO feature to achieve quiescence in the ubiquitous computing device <b>100</b>.
When the feature controller <b>106</b>-<b>112</b> implementing the MO feature receives a mechUnlock from the virtual sensor model <b>130</b>-<b>134</b> implementing the state diagram <b>500</b>, the feature controller <b>106</b>-<b>112</b> will echo the mechanical operation electronically by sending a feature record <b>116</b>-<b>122</b> that includes an unlock actuator setting and an immediate mode setting to the toCoord data stream. The feature coordinator <b>124</b> inserts the feature record into the feature record cache <b>114</b> and prevent lower-priority locks until the 1-minute duration is over. When the 1-minute duration is over the MO feature controller will send a feature record containing a dontCare actuator setting to the toCoord data stream. The updated record may cause the feature coordinator <b>124</b> to, for example, lock the door in accordance with the actuator setting of the NightLock feature controller <b>112</b>.
<figref idref="DRAWINGS">FIG. 6</figref> is a flowchart <b>600</b> illustrating an example manner in which the ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> may reach quiescence following a mechanical operation of the ubiquitous computing device <b>100</b>. The example flowchart <b>600</b> represents the respective states of a door lock sensor <b>602</b> (e.g., the object state sensor <b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref>), the virtual sensor model <b>604</b> representing the state of the door (e.g., the state diagram <b>500</b> of <figref idref="DRAWINGS">FIG. 5</figref>, the virtual sensor model <b>130</b>-<b>134</b> of <figref idref="DRAWINGS">FIG. 1</figref>), the MO feature controller <b>606</b> (e.g., the feature controller <b>106</b>-<b>112</b> implementing the MO feature), and the feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIG. 1</figref>. The example flowchart <b>600</b> of <figref idref="DRAWINGS">FIG. 6</figref> also includes a time axis <b>608</b> that shows the chronological order of the flowchart <b>600</b>.
At a first time <b>610</b>, the door lock sensor <b>602</b> is in a locked state, the virtual sensor model <b>604</b> is in a locked state, the MO feature <b>606</b> has a dontCare actuator setting, and the feature coordinator <b>124</b> has an oldSet variable=lock. At a second time <b>612</b>, a mechanical unlock operation of the controlled object <b>103</b> occurs that places the door lock sensor <b>602</b> in an unlocked state. The example virtual sensor model <b>604</b> receives an input fromDoor (e.g., from the object state sensor <b>136</b>) with an unlocked value. As described with reference to the state diagram <b>500</b> of <figref idref="DRAWINGS">FIG. 5</figref>, the virtual sensor model <b>604</b> outputs a mechUnlock virtual sensor value via a toMO data stream to the feature controller <b>606</b>.
The example feature controller <b>606</b> receives the input sensor value. The example actuator output determiner <b>304</b> of the feature controller <b>606</b> determines the virtual actuator setting of the feature controller <b>606</b> to be unlock. The example feature record generator <b>306</b> of the feature controller <b>606</b> generates a feature record having the unlock actuator setting and an immediate mode setting. The feature controller <b>606</b> outputs the feature record to the example feature coordinator <b>124</b> via the toCoord data stream. Based on the priority and/or time values of the feature record (as specified in the feature record by the feature controller <b>606</b>), the example feature coordinator <b>124</b> determines the actuator setting to the actuator <b>102</b> to be unlock and generates an output signal to the actuator <b>102</b>. The example feature coordinator <b>124</b> then sets the oldSet variable of the feature coordinator <b>124</b> to oldSet=unlock.
Because the controlled object <b>103</b> is already unlocked and the door lock sensor <b>602</b> has detected the unlocked state, the command from the feature coordinator <b>124</b> does not cause any change to the controlled object <b>103</b> by the actuator <b>102</b> or to the state sensed by the door lock sensor <b>602</b>. Thus, as shown in <figref idref="DRAWINGS">FIG. 6</figref>, the ubiquitous computing device <b>100</b> reaches quiescence after external stimuli cause changes to the state of the ubiquitous computing device <b>100</b>, the actuator <b>102</b>, and/or the controlled object <b>103</b>.
In some examples, the feature controllers <b>106</b>-<b>112</b> of <figref idref="DRAWINGS">FIG. 1</figref> receive sensor values (e.g., real sensor values, virtual sensor values) from multiple controlled objects. Additionally or alternatively, the example ubiquitous computing device <b>100</b> may include multiple feature coordinators that correspond to multiple actuators. In some such examples, any of the feature controllers <b>106</b>-<b>112</b> may send actuator settings to any of the multiple feature coordinators to control the corresponding actuators.
In some examples, the feature coordinator <b>124</b> includes one or more timers. In some such examples, feature records further include a duration data item in addition to the five data items discussed above (i.e., actuator setting, mode setting, time, priority, feature). When the feature coordinator <b>124</b> receives a feature record, the feature coordinator <b>124</b> sets a timer for the duration stored in the feature record. The feature coordinator <b>124</b> removes the feature record from the feature record cache <b>114</b> if the timer times out the feature record is still in the feature record cache <b>114</b> (e.g., has not been preempted or deleted by the feature coordinator <b>124</b> based on a more recent feature record).
In some examples, the feature controllers <b>106</b>-<b>112</b> are not required to use actuator setting values taken from enumerated sets. For example, when one or more ubiquitous computing devices <b>100</b> control light fixtures in a home, the actuator settings may include a contiguous range. In some such examples, when the actuator setting is not dontCare, the actuator setting is a lower bound, an upper bound, or both. In other words, an actuator setting is a subrange of a total range of a light fixture. Such ranges may be stored as actuator settings in the feature record cache. The example feature coordinator <b>124</b> may then compute an output actuator setting by attempting to satisfy all of the subranges in the feature records in the feature record cache, and use the priority values of the feature records to resolve any conflicts that may exist between subranges. The feature coordinator <b>124</b> may further cancel feature records having an immediate mode setting and actuator setting subranges that are incompatible with the computed range. In some such examples, the feature coordinator <b>124</b> only sends a new actuator setting when the oldSet value is outside the newSet computed subrange.
In some examples, the feature coordinator <b>124</b> informs the feature controllers <b>106</b>-<b>112</b> whether the actuator setting set by that feature is in force or not. For example, feature controllers <b>106</b>-<b>112</b> that have alternative ways of achieving the behavioral requirement corresponding to the feature controller <b>106</b>-<b>112</b> may use such information from the feature coordinator <b>124</b> to invoke alternative ways of achieving their goals when appropriate.
While the examples disclosed herein use data streams, other communication methods between the feature controllers <b>106</b>-<b>112</b>, the feature coordinator <b>124</b>, and/or the sensors <b>126</b>-<b>136</b> may be used. For example, inputs to the feature controllers <b>106</b>-<b>112</b> and/or to the feature coordinator <b>124</b> may be synchronized to avoid a race condition that could lead transient and/or fluctuating control of the actuator <b>102</b>. Additionally or alternatively, the feature controllers <b>106</b>-<b>112</b> and/or the feature coordinator <b>124</b> may be configured to process data in batches.
Flowcharts representative of example machine readable instructions for implementing the feature controllers <b>106</b>-<b>112</b>, the example feature coordinator <b>124</b> and/or, more generally, the ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIGS. 1, 2</figref>, and/or <b>3</b> are shown in <figref idref="DRAWINGS">FIGS. 7, 8, and 9</figref>. In this example, the machine readable instructions comprise programs for execution by a processor such as the processor <b>1012</b> shown in the example processor platform <b>1000</b> discussed below in connection with <figref idref="DRAWINGS">FIG. 10</figref>. The programs may be embodied in software stored on a tangible computer readable storage medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray disk, or a memory associated with the processor <b>1012</b>, but the entire programs and/or parts thereof could alternatively be executed by a device other than the processor <b>1012</b> and/or embodied in firmware or dedicated hardware. Further, although the example programs are described with reference to the flowcharts illustrated in <figref idref="DRAWINGS">FIGS. 7, 8, and 9</figref>, many other methods of implementing the example feature controllers <b>106</b>-<b>112</b>, the example feature coordinator <b>124</b> and/or, more generally, the ubiquitous computing device <b>100</b> may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.
As mentioned above, the example processes of <figref idref="DRAWINGS">FIGS. 7, 8</figref>, and/or <b>9</b> may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a tangible computer readable storage medium such as a hard disk drive, a flash memory, a read-only memory (ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, a random-access memory (RAM) and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term tangible computer readable storage medium is expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and transmission media. As used herein, “tangible computer readable storage medium” and “tangible machine readable storage medium” are used interchangeably. Additionally or alternatively, the example processes of <figref idref="DRAWINGS">FIGS. 7, 8</figref>, and/or <b>9</b> may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium such as a hard disk drive, a flash memory, a read-only memory, a compact disk, a digital versatile disk, a cache, a random-access memory and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and transmission media. As used herein, when the phrase “at least” is used as the transition term in a preamble of a claim, it is open-ended in the same manner as the term “comprising” is open ended.
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart representative of example machine readable instructions <b>700</b> which may be executed by the example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> to control the output of an actuator <b>102</b>.
The example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> generates a feature record <b>116</b>-<b>122</b> including an actuator setting and a priority value (e.g., using one of the feature controllers <b>106</b>-<b>112</b>, <b>300</b> of <figref idref="DRAWINGS">FIGS. 1 and/or 3</figref>) (block <b>702</b>). The actuator setting is a virtual actuator setting that the feature controller <b>106</b>-<b>112</b> is attempting to enforce at the actuator <b>102</b>. The priority value represents a relative priority given to the feature controller <b>106</b>-<b>112</b> that is based on the relative importance of the behavior being implemented by the feature controller <b>106</b>-<b>112</b>.
The example ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> determines whether additional feature controllers <b>106</b>-<b>112</b> are to generate additional feature records <b>116</b>-<b>122</b> (block <b>704</b>). If additional feature controllers <b>106</b>-<b>112</b> are generating feature records <b>116</b>-<b>122</b> (block <b>704</b>), control returns to block <b>702</b> to generate another feature record <b>116</b>-<b>122</b> via another feature controller <b>106</b>-<b>112</b>.
When no additional feature controllers <b>106</b>-<b>112</b> are to generate feature records (block <b>704</b>) (e.g., all feature controllers <b>106</b>-<b>112</b> have been given the opportunity to generate a feature record <b>116</b>-<b>122</b>, an interrupt has been issued to cause the feature coordinator <b>124</b> to process the feature records <b>116</b>-<b>122</b>, etc.), the example feature record manager <b>202</b> of the feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIGS. 1 and/or 2</figref> selects a feature record <b>116</b>-<b>122</b> from the feature controllers (block <b>706</b>). For example, the feature record manager <b>202</b> may select a feature record <b>116</b>-<b>122</b> from the data stream toCoord discussed above.
The example feature record manager <b>202</b> processes the selected feature record <b>116</b>-<b>122</b> (block <b>708</b>). Processing the feature record <b>116</b>-<b>122</b> results in inserting, deleting, and/or replacing one or more feature record(s) <b>116</b>-<b>122</b> in the feature record cache <b>114</b>. The example feature record manager <b>202</b> orders the feature records <b>116</b>-<b>122</b> stored in the feature record cache <b>114</b> according to the priority values and the times of the stored feature records <b>116</b>-<b>122</b> (block <b>710</b>). For example, the feature record manager <b>202</b> may order the records first by highest-priority to lowest-priority and then by most-recent time to least-recent time.
The example feature record selector <b>204</b> of <figref idref="DRAWINGS">FIG. 2</figref> selects the first-ordered feature record <b>116</b>-<b>122</b> from the feature record cache <b>114</b> (block <b>712</b>). For example, the feature record selector <b>204</b> may select the feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> having the highest priority value or, if multiple feature records <b>116</b>-<b>122</b> have a same highest priority value, the most recent of those feature records <b>116</b>-<b>122</b>.
The example feature record pruner <b>206</b> of <figref idref="DRAWINGS">FIG. 2</figref> determines whether any non-selected records in the feature record cache <b>114</b> have immediate mode settings (block <b>714</b>). If any non-selected records in the feature record cache <b>114</b> have immediate mode settings (block <b>714</b>), the example feature record pruner <b>206</b> deletes those non-selected records in the feature record cache <b>114</b> that have immediate mode settings (block <b>716</b>).
After deleting the feature records <b>116</b>-<b>122</b> that have immediate mode settings (block <b>716</b>), or if none of the non-selected records in the feature record cache <b>114</b> have immediate mode settings (block <b>714</b>), the example actuator output determiner <b>208</b> of <figref idref="DRAWINGS">FIG. 2</figref> determines an actuator setting from the virtual actuator setting in the selected feature record <b>116</b>-<b>122</b> (block <b>718</b>). The example actuator output comparator <b>210</b> determines whether the determined actuator setting is different than a most recent actuator setting (block <b>720</b>).
If the determined actuator setting is different than a most recent actuator setting (e.g., stored in the actuator output cache <b>212</b> of <figref idref="DRAWINGS">FIG. 2</figref>) (block <b>720</b>), the example actuator signal generator <b>214</b> outputs the actuator control signal to control the actuator <b>102</b> according to the determined actuator setting (block <b>722</b>). In the door lock example discussed above, if the virtual actuator setting is lock, the example actuator signal generator <b>214</b> outputs a signal to cause the actuator <b>102</b> to physically lock the door.
After outputting the actuator control signal (block <b>722</b>), or if the determined actuator setting is the same as a most recent actuator setting (block <b>720</b>), control returns to block <b>702</b> to generate additional feature records <b>116</b>-<b>122</b> to continue control of the ubiquitous computing device <b>100</b>.
In some examples, blocks <b>702</b> and <b>704</b> are implemented in parallel with blocks <b>706</b>-<b>722</b> such that the feature controllers <b>106</b>-<b>112</b> generate feature records in parallel with the processing and coordination of the feature records and virtual actuator settings by the feature coordinator <b>124</b>.
<figref idref="DRAWINGS">FIG. 8</figref> is a flowchart representative of example machine readable instructions <b>800</b> which may be executed by the example feature coordinator <b>124</b> of <figref idref="DRAWINGS">FIGS. 1 and/or 2</figref> to process a feature record. The example instructions <b>800</b> of <figref idref="DRAWINGS">FIG. 8</figref> may be executed to implement the example block <b>708</b> of <figref idref="DRAWINGS">FIG. 7</figref>. The instructions <b>800</b> are executed when the feature record manager <b>202</b> selects a feature record from a feature controller.
The example feature record manager <b>202</b> determines a feature, a priority value, and an actuator setting from the selected feature record <b>116</b>-<b>122</b> (block <b>802</b>). The feature and the priority value may be used to match the selected feature record <b>116</b>-<b>122</b> to a feature record <b>116</b>-<b>122</b> stored in the feature record cache <b>114</b>.
The feature record manager <b>202</b> determines whether the selected feature record <b>116</b>-<b>122</b> has the same feature and priority as a stored feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> (block <b>804</b>). In other words, the feature record manager <b>202</b> determines whether the selected feature record <b>116</b>-<b>122</b> matches a feature record <b>116</b>-<b>122</b> stored in the feature record cache <b>114</b>. Whether or not the selected feature record <b>116</b>-<b>122</b> has the same feature and priority as a stored feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> (block <b>804</b>), the example feature record manager <b>202</b> determines whether the actuator setting of the selected feature record <b>116</b>-<b>122</b> is dontCare (block <b>806</b> or block <b>812</b>).
When the input feature record <b>116</b>-<b>122</b> does not match any stored records (block <b>804</b>) and the actuator setting of the input feature record <b>116</b>-<b>122</b> is dontCare (block <b>806</b>), the example feature record manager <b>202</b> discards the input feature record <b>116</b>-<b>122</b> (block <b>808</b>). When the input feature record <b>116</b>-<b>122</b> does not match any stored records (block <b>806</b>) and the actuator setting of the input feature record <b>116</b>-<b>122</b> is an enumerated actuator setting (e.g., is not dontCare), the feature record manager <b>202</b> inserts the input feature record <b>116</b>-<b>122</b> into the feature record cache <b>114</b> in the order according to its priority and time (block <b>810</b>).
When the feature record manager <b>202</b> identifies a feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> that matches the input feature record <b>116</b>-<b>122</b> (block <b>804</b>) and the input setting is dontCare (block <b>812</b>), the example feature record manager <b>202</b> deletes the matching feature record <b>116</b>-<b>122</b> from the feature record cache <b>114</b> (and does not replace it) (block <b>814</b>). As a result, the feature controller <b>106</b>-<b>112</b> that generated the input feature record <b>116</b>-<b>122</b> no longer has a feature record in the feature record cache <b>114</b>. When the feature record manager <b>202</b> identifies a feature record <b>116</b>-<b>122</b> in the feature record cache <b>114</b> that matches the input feature record <b>116</b>-<b>122</b> (block <b>804</b>) and the input setting is an enumerated actuator setting (e.g., is not dontCare) (block <b>814</b>), the feature record manager <b>202</b> deletes the matching feature record <b>116</b>-<b>122</b> and inserts the input feature record <b>116</b>-<b>122</b> into the feature record cache <b>114</b> in the order according to its priority and time (block <b>816</b>).
After processing the selected feature record (block <b>808</b>, <b>810</b>, <b>814</b>, <b>816</b>), the example instructions <b>800</b> end and return control to block <b>710</b> of <figref idref="DRAWINGS">FIG. 7</figref>.
<figref idref="DRAWINGS">FIG. 9</figref> is a flowchart representative of example machine readable instructions <b>900</b> which may be executed by the example feature controllers <b>106</b>-<b>112</b>, <b>300</b> of <figref idref="DRAWINGS">FIGS. 1 and/or 3</figref> to generate a feature record <b>116</b>-<b>122</b>. The example instructions <b>900</b> will be described below with reference to the example feature controller <b>300</b> of <figref idref="DRAWINGS">FIG. 3</figref>.
The example sensor value reader <b>302</b> of <figref idref="DRAWINGS">FIG. 3</figref> monitors sensors (block <b>902</b>). For example, the sensor value reader <b>302</b> determines whether sensor values have been received (e.g., via sensor data streams) from the physical sensors <b>126</b>, <b>128</b>, the virtual sensor models <b>130</b>-<b>134</b>, and/or the object state sensor <b>136</b>. If no sensor values have been received (block <b>904</b>), control returns to block <b>902</b> to continue monitoring the sensor(s) <b>126</b>-<b>136</b>.
When a sensor value is received (block <b>904</b>), the example actuator output determiner <b>304</b> determines an actuator setting (e.g., a virtual actuator setting) based on the behavioral requirement(s) of the feature controller <b>300</b> and the sensor values (block <b>906</b>). For example, the actuator output determiner <b>304</b> may use a state diagram such as the state diagrams <b>400</b>, <b>410</b>, <b>420</b>, <b>430</b> of <figref idref="DRAWINGS">FIGS. 4A-4D</figref> to determine the appropriate actuator setting.
The example feature record generator <b>306</b> of <figref idref="DRAWINGS">FIG. 3</figref> determines a feature type, a priority value, and a mode setting from a feature configuration (block <b>908</b>). For example, the feature record generator <b>306</b> retrieves the feature type, the priority value, and the mode setting from the example feature configuration <b>308</b> of <figref idref="DRAWINGS">FIG. 3</figref>. The example feature record generator <b>306</b> generates a feature record <b>116</b>-<b>122</b> including the determined actuator setting, the feature type, the priority value, and the mode setting (block <b>910</b>). In some examples, the generated feature record <b>116</b>-<b>122</b> further includes a time representative of the time the feature record generator <b>306</b> generates the feature record <b>116</b>-<b>122</b>.
The example feature record generator <b>306</b> transmits the generated feature record <b>116</b>-<b>122</b> to the feature coordinator <b>124</b> (block <b>912</b>). For example, the feature record generator <b>306</b> may transmit the generated feature record <b>116</b>-<b>122</b> via the toCoord data stream discussed above, from which the feature coordinator <b>124</b> may select and process the feature record <b>116</b>-<b>122</b>. The example instructions <b>900</b> return to block <b>902</b> to continue monitoring the sensors <b>126</b>-<b>136</b> for further sensor values.
<figref idref="DRAWINGS">FIG. 10</figref> is a block diagram of an example processor platform <b>1000</b> capable of executing the instructions of <figref idref="DRAWINGS">FIGS. 7, 8</figref>, and/or <b>9</b> to implement the feature controllers <b>106</b>-<b>112</b>, the example feature coordinator <b>124</b> and/or, more generally, the ubiquitous computing device <b>100</b> of <figref idref="DRAWINGS">FIGS. 1, 2</figref>, and/or <b>3</b>. The processor platform <b>1000</b> can be, for example, a server, a personal computer, a routing device, a network node, or any other type of computing device.
The processor platform <b>1000</b> of the illustrated example includes a processor <b>1012</b>. The processor <b>1012</b> of the illustrated example is hardware. For example, the processor <b>1012</b> can be implemented by one or more integrated circuits, logic circuits, microprocessors or controllers from any desired family or manufacturer.
The processor <b>1012</b> of the illustrated example includes a local memory <b>1013</b> (e.g., a cache). The example processor <b>1012</b> of <figref idref="DRAWINGS">FIG. 10</figref> executes the instructions of <figref idref="DRAWINGS">FIGS. 7, 8</figref>, and/or <b>9</b> to implement the example feature controllers <b>106</b>-<b>112</b>, the example feature record cache <b>114</b>, the example feature coordinator <b>124</b>, the example sensors <b>126</b>, <b>128</b>, the example virtual sensor models <b>130</b>-<b>134</b>, the example object state sensor <b>136</b>, the example feature record manager <b>202</b>, the example feature record selector <b>204</b>, the example feature record pruner <b>206</b>, the example actuator output determiner <b>208</b>, the example actuator output comparator <b>210</b>, the example actuator output cache <b>212</b>, the example actuator signal generator <b>214</b>, the example sensor value reader <b>302</b>, the example actuator output determiner <b>304</b>, the example feature record generator <b>306</b>, and/or the example feature configuration <b>308</b> of <figref idref="DRAWINGS">FIGS. 1, 2</figref>, and/or <b>3</b>.
The processor <b>1012</b> of the illustrated example is in communication with a main memory including a volatile memory <b>1014</b> and a non-volatile memory <b>1016</b> via a bus <b>1018</b>. The volatile memory <b>1014</b> may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device. The non-volatile memory <b>1016</b> may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory <b>1014</b>, <b>1016</b> is controlled by a memory controller.
The processor platform <b>1000</b> of the illustrated example also includes an interface circuit <b>1020</b>. The interface circuit <b>1020</b> may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices <b>1022</b> are connected to the interface circuit <b>1020</b>. The example sensor(s) <b>126</b>-<b>136</b> of <figref idref="DRAWINGS">FIG. 1</figref> are connected to the interface circuit <b>1020</b>. The input device(s) <b>1022</b> permit(s) a user to enter data and commands into the processor <b>1012</b>. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, isopoint and/or a voice recognition system.
One or more output devices <b>1024</b> are also connected to the interface circuit <b>1020</b> of the illustrated example. The example actuator(s) <b>102</b> of <figref idref="DRAWINGS">FIG. 1</figref> are connected to the interface circuit <b>1020</b> to receive actuator output signals (e.g., from the processor <b>1012</b>). The output devices <b>1024</b> can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube display (CRT), a touchscreen, a tactile output device, a light emitting diode (LED), a printer and/or speakers). The interface circuit <b>1020</b> of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip or a graphics driver processor.
The interface circuit <b>1020</b> of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem and/or network interface card to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network <b>1026</b> (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).
The processor platform <b>1000</b> of the illustrated example also includes one or more mass storage devices <b>1028</b> for storing software and/or data. The example mass storage device <b>1028</b> implements the feature record cache <b>114</b> and/or stores the feature records <b>116</b>-<b>122</b> of <figref idref="DRAWINGS">FIG. 1</figref>. Examples of such mass storage devices <b>1028</b> include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.
The coded instructions <b>1032</b> of <figref idref="DRAWINGS">FIGS. 7, 8</figref>, and/or <b>9</b> may be stored in the mass storage device <b>1028</b>, in the volatile memory <b>1014</b>, in the non-volatile memory <b>1016</b>, and/or on a removable tangible computer readable storage medium such as a CD or DVD.
Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.
Contents4
12 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12
Every citation, both waysCites: the store holds 47 of 48
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10320620B2 | Cited by | United States of America | Search report |
| CN102201958B | Cites | China | Applicant |
| US2006161922A1 | Cites | United States of America | Search report |
| US2010073363A1 | Cites | United States of America | Search report |
| US2012197852A1 | Cites | United States of America | Applicant |
| US2012197898A1 | Cites | United States of America | Applicant |
| US2012197911A1 | Cites | United States of America | Applicant |
| US2012296963A1 | Cites | United States of America | Applicant |
| WO2013014222A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO2013097546A1 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| US2013289924A1 | Cites | United States of America | Applicant |
| US2013290305A1 | Cites | United States of America | Applicant |
| WO2014049603A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO2014115870A1 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| US2014183957A1 | Cites | United States of America | Applicant |
| US2014222813A1 | Cites | United States of America | Applicant |
| US2015081873A1 | Cites | United States of America | Search report |
| US2015277981A1 | Cites | United States of America | Search report |
| US2016161927A1 | Cites | United States of America | Search report |
| FR2983670A1 | Cites | France | Applicant |
| JP4944160B2 | Cites | Japan | Applicant |
| US6904391B2 | Cites | United States of America | Applicant |
| US6985809B2 | Cites | United States of America | Applicant |
| US7613901B2 | Cites | United States of America | Applicant |
| US7616642B2 | Cites | United States of America | Applicant |
| US8307342B2 | Cites | United States of America | Applicant |
| US8373576B2 | Cites | United States of America | Applicant |
| US8527668B2 | Cites | United States of America | Applicant |
| CN102201958 | Cites | China | Applicant |
| FR2983670 | Cites | France | Applicant |
| JP4944160 | Cites | Japan | Applicant |
| US20060161922A1 | Cites | United States of America | Search report |
| US20100073363A1 | Cites | United States of America | Search report |
| US20120197852A1 | Cites | United States of America | Applicant |
| US20120197898A1 | Cites | United States of America | Applicant |
| US20120197911A1 | Cites | United States of America | Applicant |
| US20120296963A1 | Cites | United States of America | Applicant |
| US20130289924A1 | Cites | United States of America | Applicant |
| US20130290305A1 | Cites | United States of America | Applicant |
| US20140183957A1 | Cites | United States of America | Applicant |
| US20140222813A1 | Cites | United States of America | Applicant |
| US20150081873A1 | Cites | United States of America | Search report |
| US20150277981A1 | Cites | United States of America | Search report |
| US20160161927A1 | Cites | United States of America | Search report |
| WO2013014222 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO2013097546 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO2014049603 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO2014115870 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
2 priority claims, no other members on record
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 201414560861 | United States of America | A | |
| US201414560861 | – | – | – |
36 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Correspondence Address ChangeC.AD | C.AD | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| Cleared by OIPE CSRL194 | L194 | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Information on status: patent discontinuationSTCH | STCH | |
| Fee payment procedureFEPP | FEPP | |
| Fee payment procedureFEPP | FEPP | |
| Information on status: patent grantGrantedSTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 09927784
- Publication, DOCDB
- 9927784
- Publication, EPODOC
- US9927784
- Application
- 14560861
- Application, DOCDB
- 201414560861
- Application, EPODOC
- US201414560861
Titles
- English
- Ubiquitous computing methods and apparatus
Patent term adjustment
- A delay
- +474 daysthe office missed an examination deadline
- B delay
- +113 dayspendency past three years
- Applicant delay
- −49 days
- Net adjustment
- 538 days
Classification
- CPC, 2
- G05B15/02
- G05B2219/2642
- IPC, 2
- G06F19 00
- G05B15 02
- USPC, 2
- 718103000
- 001001000