Control elements for tracking and movement of furniture and interior architectural elements

Through dynamic load mapping and position tracking technology of integrated controller and processing units, the safety and ease of use of mobile furniture and building elements in non-industrial environments are solved, and the management of power consumption and collision avoidance are achieved, and the adaptation to multiple environments is achieved.

JP2025013417AInactive Publication Date: 2025-01-24ORI INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024191792
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2017-06-22
Filing Date
2024-10-31
Publication Date
2025-01-24
Estimated Expiration
Not applicable · inactive patent

AI Technical Summary

Technical Problem

The existing mobile furniture and building element systems lack security, ease of use and adaptability in non-industrial environments, cannot effectively manage multiple mobile elements, and are sensitive to power consumption and are prone to collision with people or objects, and are designed not suitable for daily home and office environments.

Method used

Using an improved system and method, dynamic load mapping and position tracking are implemented through the integration of controllers and processing units, monitoring power consumption, avoiding collisions, and independently managing multiple mobile elements.

Benefits of technology

It improves the safety and ease of use of the system in non-industrial environments, adapts to different ground friction characteristics, reduces power consumption, avoids collisions, and enhances the applicability of the system in various environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025013417000001_ABST
    Figure 2025013417000001_ABST
Patent Text Reader

Abstract

To provide a control element for preferable tracking and movement of furniture and an indoor construction element.SOLUTION: There are provided improved systems and methods for operating moveable architectural elements (e.g., furniture). The system can include improved features implemented throughout various elements, including hardware elements, controller elements, and / or software elements. As one example, the system can feature the ability to map a characteristic load profile across a particular length of actuation and, if during operation a measured load exceeds the profile, adjust (e.g., stop) the system's motion. The system can also advantageously map its current draw to increase energy efficiency. In addition, the system can include a positioning system that enables it to automatically determine its position upon start up and during operation.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims priority to and the benefit of U.S. Provisional Patent Application No. 62 / 523,409, filed June 22, 2017, and entitled “Control Elements for Tracking and Movement of Furniture and Interior Architectural Elements,” the contents of which are incorporated herein by reference in their entirety.

[0002] The present invention relates generally to devices, systems and methods for operating movable architectural elements, and more specifically to interior architectural elements (e.g., furniture) that can be moved and transformed in a safe, repeatable and reliable manner. [Background technology]

[0003] Motor-operated modular home and office furniture is becoming more abundant in today's world. For example, office desks offer motorized lifts to raise and lower the desk, allowing both standing and seated workspaces. Other examples include movable walls in multipurpose rooms and conference halls that allow reconfiguration and resizing to meet specific demands. However, such implementations are designed for industrial environments and do not consider the various consumer / residential environments, or other settings where furniture is typically installed, such as hotel rooms or retail spaces, or more specialized environments such as hospitals or elderly care facilities, or the need for easy-to-use controls. Design aspects such as conveniently placed outlets and auxiliary lighting are overlooked, and the use of plastic or metal cable carriers, while they may provide a robust design, are not suitable for everyday home and office environments. As just one example, conventional moving wall systems typically only comprise moving panels, do not carry power, do not mechanically support other structures, and are not equipped to allow for modular expansion. In addition, conventional implementations lack a way to manage multiple moving elements without linearly expanding the dimensions of the power distribution system; for example, three independent moving elements would require three separate cable carriers mounted in a side-by-side fashion. In addition, conventional implementations used in industrial settings are often not as sensitive to power consumption as systems implemented in other environments (e.g., residential and office). Non-industrial implementations also require easy-to-use intuitive controls that allow easy movement, manipulation, and transformation of the furniture by non-professionals. Mobile furniture also poses safety hazards as it can collide with humans and / or objects causing adverse effects.

[0004] Thus, there is a need for improved systems and methods for operating movable furniture and indoor architectural items to accommodate their increased use in non-industrial settings. Summary of the Invention [Means for solving the problem]

[0005] The present disclosure describes an improved moveable building element system and operating technique by incorporating features that solve many of the problems with existing moveable furniture items. The improved features are implemented throughout various elements of the system, including hardware, controller, and / or software elements. As an example, for improved safety, the system can incorporate a controller and / or processing unit that implements a force mapping module. During an initial movement of the system across a particular surface, a profile of typical forces on the system can be generated. During subsequent movements of the system, the forces can be monitored and if the profile is exceeded by a particular amount, the movement of the system can be stopped. This can prevent potentially harmful collisions of the system with people, pets, and / or inanimate objects.

[0006] Mapping the load profile may allow the system to be implemented and operated autonomously in a wide variety of environments that were not safely feasible with conventional systems. As an example, floors in different living spaces have different frictional properties, some have hardwood, some have carpet, some have a slight slope, some have a slight drop, etc. As a result, it is very difficult to generate a uniform profile that allows the system to be functionally implemented across all desired living spaces (or other environments). If the system used a static load profile based on a perfectly level surface, the system may mistake a sloped surface in another living space for an unacceptable load, shutting down the system and making it non-functional for the occupants of the sloped living space. By incorporating mapping functionality, the system can generate environment-specific profiles that greatly increase the environments in which it can be deployed.

[0007] In some implementations, the system can also use the mapping for other purposes, such as to improve its power consumption / energy efficiency. For example, the system can map the amount of current delivered to its motor during operation and determine the appropriate amount of current to deliver to the motor during a subsequent operation. This can prevent wasting current (improving energy efficiency) and can also cause the system to impart less momentum in response to a collision with an object. In some cases, the mapped current value can be used to determine if an obstacle has been encountered (e.g., an obstacle can be inferred if the measured current value exceeds the mapped value). In other cases, the system can be programmed to move a building element according to a desired movement profile (e.g., speed and acceleration), and the system can determine the appropriate amount of current to deliver to the motor to accomplish the desired movement profile (e.g., based on torque demand) without using the mapped current value.

[0008] Another exemplary improvement that may be featured by the system is a positioning system that allows the system to automatically determine its location within a particular environment. Location awareness may be beneficial in that the system may adjust its movement profile depending on where in the environment it is located. For example, if the system is located near a wall, it may move slower than if it is located in the center of a room. Another improvement that may be featured by the system is modularly distributed power, which may involve using a mobile outlet power module to deliver power to a mobile element. This feature may avoid many of the power cable complications and failures encountered with conventional systems.

[0009] Yet another improvement featured by the present system is the ability to move several architectural elements independently. As just one non-limiting example, a wall may be able to move in one direction and a bed may be able to move in the opposite direction, allowing a single living space to be converted from a living room to a bedroom, improving livability and functionality for the occupants. These improvements and others are described in more detail below.

[0010] In one aspect, the invention relates to a method of operating a moveable architectural element, the method comprising the steps of: (i) identifying a desired movement profile of the moveable architectural element along a length of operation, (ii) performing an initial movement of the moveable architectural element along the length of operation using a motor, the initial movement having the desired movement profile, (iii) measuring and storing a profile of an operating parameter, (iv) measuring indicators of the operating parameters to determine measured operating parameters in response to performing a subsequent movement of the moveable architectural element, (v) comparing the measured operating parameters with the profile of the operating parameters, and (vi) adjusting the subsequent movement of the moveable architectural element if a difference between the measured operating parameters and the profile of the operating parameters exceeds a predetermined threshold.

[0011] In various embodiments of the above aspects, the desired movement profile can include a speed profile and / or an acceleration profile. In some cases, the desired movement profile is based on a desired motor parameter profile. Exemplary motor parameter profiles can include a load profile, a speed profile, a voltage profile, a current profile, and / or a pulse width modulation profile. The operating parameters can include a load on the motor, a speed of the motor, a voltage delivered to the motor, a current delivered to the motor, and / or a pulse width modulation delivered to the motor. In cases where the operating parameter is a load on the motor, the load can be measured as a match angle value. The indicator of the operating parameter can be the same or different from the measured operating parameter.

[0012] In various embodiments of the above aspect, adjusting the subsequent movement of the movable architectural element includes stopping the subsequent movement, reducing the speed of the subsequent movement, and / or reversing the direction of the subsequent movement. The movable architectural element can include a wall and / or a furniture element. The motor can be an electric DC motor and / or a stepper motor. In some implementations, the motor moves the movable architectural element via a drive wheel, and the length of the actuation includes a distance traveled by the drive wheel. The length of the actuation can include a surface of the room, e.g., a floor surface, a wall surface, and / or a ceiling surface. In some cases, the operating parameters vary along the length of the actuation, at least in part due to imperfections on the surface of the room (e.g., an inclined surface, a descending surface, and variable friction). The method can further include performing an additional movement of the architectural element along at least a portion of the length of the actuation, and updating the profile of the operating parameters based on the operating parameters measured during the additional movement.

[0013] In another aspect, the present invention relates to a system for operating a movable architectural element. The system may include a motor adapted to move the movable architectural element along a length of operation and a controller and / or data processing device programmed to perform an operation. The operation may include (i) obtaining a desired movement profile of the movable architectural element along a length of operation, (ii) using the motor to perform an initial movement of the movable architectural element along the length of operation, the initial movement having the desired movement profile, (iii) measuring a profile of the operating parameters, (iv) measuring indicators of the operating parameters and determining measured operating parameters in response to performing a subsequent movement of the movable architectural element, (v) comparing the measured operating parameters with the profile of the operating parameters, and (vi) adjusting the subsequent movement of the movable architectural element if a difference between the measured operating parameters and the profile of the operating parameters exceeds a predetermined threshold. The system may also include a memory unit for storing the profile of the operating parameters.

[0014] In various embodiments of the above aspects, the desired movement profile can include a speed profile and / or an acceleration profile. In some cases, the desired movement profile is based on a desired motor parameter profile. Exemplary motor parameter profiles can include a load profile, a speed profile, a voltage profile, a current profile, and / or a pulse width modulation profile. The operating parameters can include a load on the motor, a speed of the motor, a voltage delivered to the motor, a current delivered to the motor, and / or a pulse width modulation delivered to the motor. In cases where the operating parameter is a load on the motor, the load can be measured as a match angle value. The indicator of the operating parameter can be the same or different from the measured operating parameter.

[0015] In various embodiments of the above aspect, adjusting the subsequent movement of the movable architectural element includes stopping the subsequent movement, reducing the speed of the subsequent movement, and / or reversing the direction of the subsequent movement. The movable architectural element can include a wall and / or a furniture element. The motor can be an electric DC motor and / or a stepper motor. In some implementations, the motor moves the movable architectural element via a drive wheel, and the actuation length includes a distance traveled by the drive wheel. The actuation length can include a surface of the room, e.g., a floor surface, a wall surface, and / or a ceiling surface. In some cases, the operating parameters vary along the actuation length, at least in part due to imperfections on the surface of the room (e.g., sloped surfaces, descending surfaces, and variable friction). The actuation can further include commanding the motor to perform an additional movement of the movable architectural element along at least a portion of the actuation length, and updating a profile of the operating parameters based on the operating parameters measured during the additional movement.

[0016] In another aspect, the invention relates to a method for determining a position of a moveable architectural element relative to a stationary element, the method including the steps of (i) acquiring properties of a relative position tracking element disposed in a fixed relationship with the stationary element and including discrete non-repeating portions, the properties including an order of the discrete non-repeating portions and a length of each portion, (ii) sensing a position of the moveable architectural element relative to the particular portions of the relative position tracking element, and (iii) using the sensed position and acquired properties of the moveable architectural element relative to the particular portions to determine a relative position of the moveable architectural element relative to the stationary element.

[0017] In various embodiments of the above aspect, the movable building element includes a wall and / or a furniture item. The stationary item can include a housing that serves as a linear guide for the movable building element. The relative position tracking element can include a printed tape, and the discrete non-repeating portions can include a non-repeating color pattern. Obtaining the property of the relative position tracking element can include scanning the relative position tracking element with a sensor assembly that measures the property. The sensor assembly can be affixed to the movable building element and / or communicate the property to a microprocessor. In some cases, sensing the position of the movable building element relative to a particular portion of the relative position tracking element is performed by a sensor assembly that measures the property. The sensor assembly can include a stable color output adapted to illuminate the printed tape, a color sensor adapted to receive light reflected from the printed tape, and an incremental positioning system adapted to measure the length of each portion of the relative position tracking element. In some cases, the incremental positioning system includes an encoder and / or a stepper motor (e.g., controlled by an open-loop controller).

[0018] In various embodiments of the above aspect, the method can also include using an incremental positioning system to determine distances to adjacent portions of the relative position tracking element, and determining a precise position of the movable building element relative to the stationary element based on the distances and the acquired properties. In some cases, the precise position is determined to within an accuracy of 5 mm or less. In some cases, the stable color output includes a white LED and the color sensor includes an RBG sensor. In various cases, the acquiring properties step occurs during an initialization phase, and the sensing and using steps occur during an operational phase. The sensing and using steps can occur upon start-up of a system performing the method. In some implementations, the sequence of the discrete non-repeating portions encodes information about the system performing the method.

[0019] In another aspect, the invention relates to a system for determining a position of a movable architectural element relative to a stationary element. The system may include a relative position tracking element disposed in a fixed relationship with the stationary element and having discrete, non-repeating portions, a sensor assembly for sensing a position of the movable architectural element relative to the particular portions of the relative position tracking element, and one or more data processing devices programmed to perform operations. The operations may include obtaining properties of the relative position tracking element, the properties including an order of the discrete, non-repeating portions and a length of each portion, and using the sensed positions of the movable architectural element relative to the particular portions and the obtained properties to determine a relative position of the movable architectural element relative to the stationary element.

[0020] In various embodiments of the above aspect, the movable building element includes a wall and / or a furniture item. The stationary item can include a housing that serves as a linear guide for the movable building element. The relative position tracking element can include a printed tape, and the discrete non-repeating portions can include a pattern of non-repeating colors. The system can include a second sensor assembly for acquiring a property of the relative position tracking element by scanning the relative position tracking element. In some cases, the first sensor assembly and the second sensor assembly are the same sensor assembly. In some cases, the second sensor assembly can include a stable color output adapted to illuminate the printed tape, a color sensor adapted to receive light reflected from the printed tape, and an incremental positioning system adapted to measure the length of each portion of the relative position tracking element. In some cases, the incremental positioning system includes an encoder and / or a stepper motor (e.g., controlled by an open-loop controller).

[0021] In various embodiments of the above aspect, the operations performed by the data processing device further include determining distances to adjacent portions of the relative position tracking element using the incremental positioning system, and determining a precise position of the movable architectural element relative to the stationary element based on the distances and the acquired properties. In some cases, the precise position is determined to within an accuracy of 5 mm or less. In some cases, the stable color output includes a white LED and the color sensor includes an RBG sensor. The sensor assembly can be affixed to the movable architectural element. In some implementations, the sequence of the discrete non-repeating portions encodes information about the system.

[0022] In another aspect, the invention relates to a system for directing and distributing electrical power to at least one movable architectural element. The system can include (i) a housing including a track for directing motion of the at least one movable architectural element and a power distribution component, (ii) a power inlet module adapted to deliver electrical power from a power source to the power distribution component, and (iii) at least one movable power outlet module adapted to deliver electrical power from the power distribution component to the at least one movable architectural element.

[0023] In various embodiments of the above aspects, the power distribution component includes at least one conductive rail. For example, both the track and the power distribution component can include one conductive rail. The conductive rail can include an impedance of less than 0.1 ohms. In some cases, the housing also includes a polymer insulating material for insulating the conductive rail. The power source can include an AC power source and / or a DC power source. In some cases, a proximal end of the power outlet module is contained within the housing and a distal end of the power outlet module extends outside the housing and is in electrical contact with the moveable building element. The distal end of the power outlet module can be in electrical contact with and deliver power to a motor that moves the moveable building element. The power outlet module and the motor can be attached by a power cord, and the system can further include a strain relief mechanism to limit the force transmitted to the power distribution component.

[0024] In various embodiments of the above aspects, the system includes at least two power outlet modules and / or at least two movable architectural elements. In some cases, each movable architectural element receives power independently from the other movable architectural elements. The movable architectural elements can include walls and / or furniture items. The system can also include a second housing including (i) a second track for guiding the movement of the at least one movable architectural element and (ii) a second power distribution component, and a joining section adapted to attach the housing to the second housing and to connect the track to the second track and the power distribution component to the second power distribution component. The system can also include a mounting mechanism for affixing the system to an existing environment, which can include adhesive strips, mounting brackets, and / or high friction materials. The existing environment can include a floor surface, a wall surface, and / or a ceiling surface.

[0025] In another aspect, the present invention relates to a method for directing and distributing electrical power to at least one moveable architectural element, the method comprising the steps of providing an enclosure having (i) a track for directing motion of the at least one moveable architectural element and (ii) a power distribution component, and delivering electrical power from a power source through the power distribution component to the at least one moveable architectural element via at least one moveable power outlet module.

[0026] In various embodiments of the above aspects, the power distribution component includes at least one conductive rail. For example, both the track and the power distribution component can include a conductive rail. The conductive rail can include an impedance of less than 0.1 ohms. In some cases, the housing also includes a polymer insulating material for insulating the conductive rail. The power source can include an AC power source and / or a DC power source. In some cases, a proximal end of the power outlet module is contained within the housing and a distal end of the power outlet module extends outside the housing and is in electrical contact with the moveable building element. The distal end of the power outlet module can be in electrical contact with and deliver power to a motor that moves the moveable building element. The power outlet module and the motor can be attached by a power cord, and the method can further include using a strain relief mechanism to limit forces transmitted to the power distribution component.

[0027] In various embodiments of the above aspect, the power outlet module includes at least two power outlet modules and / or the movable building element includes at least two movable building elements. In some cases, the delivering step includes independently delivering power to each of the movable building elements. The movable building elements can include walls and / or furniture items. The method can also include affixing the system to an existing environment using a mounting mechanism, which can include adhesive strips, mounting brackets, and / or high friction materials. The existing environment can include a floor surface, a wall surface, and / or a ceiling surface.

[0028] In another aspect, the invention relates to a system for moving a construction element, which may include a first construction element movable along a first trajectory defining a first axis, and a second construction element attached to the first construction element movable along a second trajectory.

[0029] In various embodiments of the above aspects, the first architectural element can include a wall and / or a first furniture item, and the second architectural item can include a second furniture item (e.g., a bed, a desk, a couch, a closet, and / or a shelf). In some cases, the first architectural element is moved by a first actuator (e.g., a motor) that receives power from a power source, and the second architectural element is moved by a second actuator (e.g., a friction drive) that operates without power. In some cases, the first and second actuators both receive power from the power source. The second trajectory can define a second axis that can be the same as or different from the first axis. As an example, the second axis can be generally perpendicular to the first axis. In various cases, the first and second architectural elements can move independently of each other or in unison. The first and second architectural elements can be arranged horizontally adjacent to each other, vertically adjacent to each other, and / or nested.

[0030] In another aspect, the invention relates to a method of moving a building element, the method may include moving a first building element along a first trajectory defining a first axis, and moving a second building element along a second trajectory, the second trajectory being attached to the first building element.

[0031] In various embodiments of the above aspect, the first architectural element can include a wall and / or a first furniture item, and the second architectural item can include a second furniture item (e.g., a bed, a desk, a couch, a closet, and / or a shelf). In some cases, the first architectural element is moved by a first actuator (e.g., a motor) that receives power from a power source, and the second architectural element is moved by a second actuator (e.g., a friction drive) that operates without power. In some cases, the first and second actuators both receive power from the power source. The second trajectory can define a second axis, which can be the same as or different from the first axis. As an example, the second axis can be approximately perpendicular to the first axis. In various cases, the steps of moving the first architectural element and moving the second architectural element occur independently of one another or in unison. The first and second building elements may be arranged horizontally adjacent to one another, vertically adjacent to one another, and / or nested.

[0032] In another aspect, the present invention relates to another method of operating a movable architectural element, the method including the steps of: (i) identifying a desired movement profile of the movable architectural element along a length of operation; (ii) using a motor to perform an initial movement of the movable architectural element along the length of operation, the initial movement having the desired movement profile; (iii) measuring and storing a profile of the operating parameters; (iv) calculating a current profile based on the profile of the operating parameters, the current profile including an appropriate amount of current to deliver to the motor along the length of operation; and (v) delivering current to the motor according to the current profile in response to performing a subsequent movement of the movable architectural element. In other cases, the system can be programmed to move the architectural element according to a desired movement profile (e.g., speed and acceleration), and the system can determine an appropriate amount of current to deliver to the motor to accomplish the desired movement profile (e.g., based on torque demand) without using a mapped current value.

[0033] In various embodiments of the above aspects, the desired movement profile can include a speed profile and / or an acceleration profile. In some cases, the desired movement profile is based on a desired motor parameter profile. Exemplary motor parameter profiles can include a load profile, a speed profile, a voltage profile, a current profile, and / or a pulse width modulation profile. The operating parameters can include a load on the motor, a speed of the motor, a voltage delivered to the motor, a current delivered to the motor, and / or a pulse width modulation delivered to the motor. In cases where the operating parameter is a load on the motor, the load can be measured as a match angle value.

[0034] In various embodiments of the above aspects, the movable architectural element can include a wall and / or a furniture element. The motor can be an electric DC motor and / or a stepper motor. In some implementations, the motor moves the movable architectural element via a drive wheel, and the actuation length includes a distance traveled by the drive wheel. The actuation length can include a surface of the room, e.g., a floor surface, a wall surface, and / or a ceiling surface. In some cases, the operating parameters vary along the actuation length due at least in part to imperfections on the surface of the room (e.g., sloping surfaces, descending surfaces, and variable friction). In some cases, the appropriate amount of current is 110 percent or less of a minimum amount of current required to prevent the motor from stalling. The method can further include performing an additional movement of the architectural element along at least a portion of the actuation length, measuring an updated operating parameter profile during the performance of the additional movement, and calculating an updated current profile based on the updated operating parameter profile.

[0035] In another aspect, the present invention relates to another system for operating a movable architectural element. The system can include a motor adapted to move the movable architectural element along a length of operation and a controller and / or data processing device programmed to perform an operation. The operation can include (i) obtaining a desired movement profile of the movable architectural element along the length of operation, (ii) using the motor to perform an initial movement of the movable architectural element along the length of operation, the initial movement having the desired movement profile, (iii) measuring and storing a profile of the operating parameters, (iv) calculating a current profile based on the profile of the operating parameters, the current profile comprising an appropriate amount of current to deliver to the motor along the length of operation, and (v) delivering current to the motor according to the current profile in response to performing a subsequent movement of the movable architectural element. In other cases, the system can be programmed to move the architectural element according to a desired movement profile (e.g., speed and acceleration), and the system can determine an appropriate amount of current to deliver to the motor to accomplish the desired movement profile (e.g., based on torque demand) without using a mapped current value.

[0036] In various embodiments of the above aspects, the desired movement profile can include a speed profile and / or an acceleration profile. In some cases, the desired movement profile is based on a desired motor parameter profile. Exemplary motor parameter profiles can include a load profile, a speed profile, a voltage profile, a current profile, and / or a pulse width modulation profile. The operating parameters can include a load on the motor, a speed of the motor, a voltage delivered to the motor, a current delivered to the motor, and / or a pulse width modulation delivered to the motor. In cases where the operating parameter is a load on the motor, the load can be measured as a match angle value.

[0037] In various embodiments of the above aspects, the movable architectural element may include a wall and / or a furniture element. The motor may be an electric DC motor and / or a stepper motor. In some implementations, the motor moves the movable architectural element via a drive wheel, and the actuation length includes a distance traveled by the drive wheel. The actuation length may include a surface of the room, e.g., a floor surface, a wall surface, and / or a ceiling surface. In some cases, the operating parameters vary along the actuation length due at least in part to imperfections on the surface of the room (e.g., sloping surfaces, descending surfaces, and variable friction). In some cases, the appropriate amount of current is 110 percent or less of a minimum amount of current required to prevent the motor from stalling. In some cases, the actuation may further include performing an additional movement of the architectural element along at least a portion of the actuation length, measuring an updated operating parameter profile during the performance of the additional movement, and calculating an updated current profile based on the updated operating parameter profile. The present specification also provides, for example, the following items: (Item 1) 1. A method for operating a movable construction element, said method comprising the steps of: - identifying a desired movement profile of said moveable construction element along a length of operation; - using a motor to perform an initial movement of the moveable construction element along the length of operation, the initial movement having the desired movement profile; Measuring and storing a profile of the operating parameters; - measuring an indicator of said operating parameter in response to performing a subsequent movement of said movable construction element and determining a measured operating parameter; comparing the measured operating parameters to a profile of the operating parameters; adjusting a subsequent movement of the movable construction element if a difference between the measured operating parameter and the operating parameter profile exceeds a predetermined threshold. A method comprising: (Item 2) 2. The method of claim 1, wherein the desired movement profile comprises at least one of a velocity profile and an acceleration profile. (Item 3) 2. The method of claim 1, wherein the desired movement profile is based on a desired motor parameter profile. (Item 4) 4. The method of claim 3, wherein the desired motor parameter profile comprises at least one of a load profile, a speed profile, a voltage profile, a current profile, and a pulse width modulation profile. (Item 5) 2. The method of claim 1, wherein the operating parameters comprise at least one of a load on the motor, a speed of the motor, a voltage delivered to the motor, a current delivered to the motor, and a pulse width modulation delivered to the motor. (Item 6) 6. The method of claim 5, wherein the operating parameter comprises a load on the motor, the load on the motor being measured as a match angle value. (Item 7) 2. The method of claim 1, wherein the indicator of the operating parameter is the same as the measured operating parameter. (Item 8) 2. The method of claim 1, wherein the indicator of the operating parameter is different from the measured operating parameter. (Item 9) 2. The method according to claim 1, wherein the step of adjusting the subsequent movement of the movable construction element comprises at least one of the steps of stopping the subsequent movement, reducing the speed of the subsequent movement, and reversing the direction of the subsequent movement. (Item 10) 2. The method of claim 1, wherein the movable construction element comprises a wall. (Item 11) 2. The method of claim 1, wherein the moveable construction element comprises an item of furniture. (Item 12) 2. The method of claim 1, wherein the motor comprises at least one of an electric DC motor and a stepper motor. (Item 13) 2. The method according to claim 1, wherein the motor moves the moveable construction element via a drive wheel, and the length of actuation comprises a distance travelled by the drive wheel. (Item 14) Item 14. The method of item 13, wherein the working length comprises a surface of a room selected from the group consisting of a floor surface, a wall surface, and a ceiling surface. (Item 15) 15. The method of claim 14, wherein the operating parameter varies along the length of the actuation due at least in part to imperfections on the surface of the room. (Item 16) Item 16. The method of item 15, wherein the imperfections comprise at least one of an inclined surface, a descending surface, and variable friction along a surface of the room. (Item 17) performing an additional movement of the movable construction element along at least a portion of the length of said actuation; updating said profile of operating parameters based on operating parameters measured during said additional movements; The method of claim 1, further comprising: (Item 18) A system for operating a movable construction element, said system comprising: a motor adapted to move said movable construction element along a working length; At least one of a controller and a data processing device, wherein the at least one of the controller and the data processing device comprises: - obtaining a desired movement profile of said movable construction element along a length of operation; performing an initial movement of the moveable construction element along the length of actuation using the motor, the initial movement having the desired movement profile; Measuring a profile of an operating parameter; measuring an indicator of the operating parameter in response to performing a subsequent movement of the movable construction element and determining a measured operating parameter; comparing the measured operating parameters to a profile of the operating parameters; adjusting a subsequent movement of the movable construction element if a difference between the measured operating parameter and the operating parameter profile exceeds a predetermined threshold. At least one of a controller and a data processing device programmed to perform operations including: a memory unit for storing a profile of said operating parameters; A system comprising: (Item 19) 20. The system of claim 18, wherein the desired movement profile comprises at least one of a velocity profile and an acceleration profile. (Item 20) 20. The system of claim 18, wherein the desired movement profile is based on a desired motor parameter profile. (Item 21) 21. The system of claim 20, wherein the desired motor parameter profile comprises at least one of a load profile, a speed profile, a voltage profile, a current profile, and a pulse width modulation profile. (Item 22) 20. The system of claim 18, wherein the operating parameters comprise at least one of a load on the motor, a speed of the motor, a voltage delivered to the motor, a current delivered to the motor, and a pulse width modulation delivered to the motor. (Item 23) 23. The system of claim 22, wherein the operating parameter comprises a load on the motor, the load on the motor being measured as a match angle value. (Item 24) 20. The system of claim 18, wherein the indicator of the operating parameter is the same as the measured operating parameter. (Item 25) 20. The system of claim 18, wherein the indicator of the operating parameter is different from the measured operating parameter. (Item 26) 20. The system of claim 18, wherein adjusting the subsequent movement of the movable architectural element includes at least one of stopping the subsequent movement, reducing a speed of the subsequent movement, and reversing a direction of the subsequent movement. (Item 27) 20. The system of claim 18, wherein the movable construction element comprises a wall. (Item 28) 20. The system of claim 18, wherein the moveable construction element comprises an item of furniture. (Item 29) 20. The system of claim 18, wherein the motor comprises at least one of an electric DC motor and a stepper motor. (Item 30) 20. The system of claim 18, wherein the motor moves the moveable construction element via a drive wheel, and the length of actuation comprises a distance traveled by the drive wheel. (Item 31) Item 31. The system of item 30, wherein the working length comprises a surface of a room selected from the group consisting of a floor surface, a wall surface, and a ceiling surface. (Item 32) Item 32. The system of item 31, wherein the operating parameters vary along the length of the operation due at least in part to imperfections on the surface of the room. (Item 33) Item 33. The system of item 32, wherein the imperfections comprise at least one of an inclined surface, a descending surface, and variable friction along a surface of the room. (Item 34) The operation further comprises: commanding the motor to perform an additional movement of the moveable construction element along at least a portion of the working length; updating the profile of the operating parameters based on the operating parameters measured during the additional movements; and Item 19. The system according to item 18, comprising: (Item 35) 1. A method for determining a position of a movable construction element relative to a stationary element, said method comprising the steps of: obtaining properties of a relative position tracking element, the relative position tracking element being disposed in a fixed relationship to the stationary element and comprising discrete non-repeating portions, the properties comprising an order of the discrete non-repeating portions and a length of each portion; sensing the position of the moveable construction element relative to a particular portion of the relative position tracking element; determining a relative position of the movable construction element with respect to the stationary element using the sensed position of the movable construction element with respect to the particular portion and the acquired properties; A method comprising: (Item 36) Item 36. The method of item 35, wherein the moveable construction element comprises at least one of a wall and an item of furniture. (Item 37) 36. The method according to claim 35, wherein the stationary element comprises a housing that serves as a linear guide for the movable construction element. (Item 38) Item 36. The method of item 35, wherein the relative position tracking element comprises a printed tape. (Item 39) Item 39. The method of item 38, wherein the discrete non-repeating portions comprise a non-repeating color pattern. (Item 40) Item 36. The method of item 35, wherein acquiring the property of the relative position tracking element includes scanning the relative position tracking element with a sensor assembly that measures the property. (Item 41) Item 41. The method according to item 40, wherein the sensor assembly is affixed to the moveable construction element. (Item 42) Item 41. The method of item 40, wherein the sensor assembly communicates the property to a microprocessor. (Item 43) Item 41. The method according to item 40, wherein the step of sensing the position of the movable construction element relative to a particular portion of the relative position tracking element is performed by the sensor assembly that measures the property. (Item 44) Item 41. The method of item 40, wherein the sensor assembly comprises a stable color output adapted to illuminate the printed tape, a color sensor adapted to receive light reflected from the printed tape, and an incremental positioning system adapted to measure the length of each portion of the relative position tracking element. (Item 45) Item 45. The method of item 44, wherein the incremental positioning system comprises an encoder. (Item 46) Item 45. The method of item 44, wherein the incremental positioning system comprises a stepper motor controlled by an open loop controller. (Item 47) determining distances to adjacent portions of the relative position tracking element using the incremental positioning system; determining a precise position of the movable construction element relative to the stationary element based on the distance and the acquired properties; 45. The method of claim 44, further comprising: (Item 48) 48. The method of claim 47, wherein the exact location is determined to within an accuracy of 5 mm or less. (Item 49) Item 45. The method of item 44, wherein the stable color output comprises a white LED and the color sensor comprises an RGB sensor. (Item 50) 36. The method of claim 35, wherein (i) the step of obtaining the property occurs during an initialization phase, and (ii) the steps of sensing and using occur during an operational phase. (Item 51) 51. The method of claim 50, wherein the sensing and using steps occur upon initiation of a system implementing the method. (Item 52) 36. The method of claim 35, wherein the order of the discrete non-repeated portions encodes information about a system performing the method. (Item 53) 1. A system for determining a position of a movable construction element relative to a stationary element, said system comprising: a relative position tracking element disposed in a fixed relationship with the stationary element, the relative position tracking element comprising discrete non-repeating portions; a sensor assembly for sensing a position of the movable construction element relative to a particular portion of the relative position tracking element; One or more data processing devices, the one or more data processing devices comprising: obtaining properties of the relative position tracking element, the properties comprising an order of the discrete non-repeating portions and a length of each portion; determining a relative position of the movable construction element with respect to the stationary element using the sensed position of the movable construction element with respect to the particular portion and the acquired properties; one or more data processing devices programmed to perform operations including: A system comprising: (Item 54) Item 54. The system of item 53, wherein the moveable construction element comprises at least one of a wall and an item of furniture. (Item 55) Item 54. The system of item 53, wherein the stationary element comprises a housing that serves as a linear guide for the movable construction element. (Item 56) Item 54. The system of item 53, wherein the relative position tracking element comprises a printed tape. (Item 57) Item 57. The system of item 56, wherein the discrete non-repeating portions comprise a non-repeating color pattern. (Item 58) Item 54. The system of item 53, further comprising a second sensor assembly for acquiring a property of the relative position tracking element by scanning the relative position tracking element. (Item 59) Item 59. The system of item 58, wherein the sensor assembly and the second sensor assembly are the same sensor assembly. (Item 60) Item 59. The system of item 58, wherein the second sensor assembly comprises a stable color output adapted to illuminate the printed tape, a color sensor adapted to receive light reflected from the printed tape, and an incremental positioning system adapted to measure the length of each portion of the relative position tracking element. (Item 61) Item 61. The system of item 60, wherein the incremental positioning system comprises an encoder. (Item 62) Item 60. The system of item 59, wherein the incremental positioning system comprises a stepper motor controlled by an open loop controller. (Item 63) The operation further comprises: determining distances to adjacent portions of the relative position tracking element using the incremental positioning system; determining a precise position of the movable construction element relative to the stationary element based on the distance and the acquired properties; Item 61. The system according to item 60, comprising: (Item 64) Item 64. The system of item 63, wherein the precise location is determined to within an accuracy of 5 mm or less. (Item 65) Item 61. The system of item 60, wherein the stable color output comprises a white LED and the color sensor comprises an RGB sensor. (Item 66) Item 54. The system of item 53, wherein the sensor assembly is affixed to the movable construction element. (Item 67) Item 54. The system of item 53, wherein the order of the discrete non-repeating portions encodes information about the system. (Item 68) A system for directing and distributing electrical power to at least one movable architectural element, said system comprising: A housing, comprising: a track for guiding the movement of said at least one movable construction element; Power Distribution Components and a housing in which the a power inlet module adapted to deliver power from a power source to the power distribution component; at least one movable power outlet module, the at least one movable power outlet module adapted to deliver power from the power distribution component to the at least one movable building element; A system comprising: (Item 69) Item 69. The system of item 68, wherein the power distribution component comprises at least one conductive rail. (Item 70) 70. The system of claim 69, wherein the track and the power distribution component both comprise the at least one conductive rail. (Item 71) 70. The system of claim 69, wherein the conductive rail has an impedance of less than 0.1 ohms. (Item 72) 70. The system of claim 69, wherein the housing further comprises a polymer insulating material for insulating the conductive rails. (Item 73) Item 69. The system of item 68, wherein the power source comprises at least one of an AC power source and a DC power source. (Item 74) Item 69. The system of item 68, wherein a proximal end of the power outlet module is contained within the housing and a distal end of the power outlet module extends outside the housing and makes electrical contact with the moveable architectural element. (Item 75) 75. The system of claim 74, wherein a distal end of the power outlet module is in electrical contact with and delivers power to a motor that moves the moveable architectural element. (Item 76) Item 76. The system of item 75, wherein the power outlet module and the motor are attached by a power cord and further comprise a strain relief mechanism to limit forces transmitted to the power distribution component. (Item 77) Item 70. The system of item 68, wherein the at least one power outlet module comprises at least two power outlet modules. (Item 78) Item 69. The system of item 68, wherein the at least one moveable construction element comprises at least two moveable construction elements. (Item 79) 80. The system of claim 78, wherein each moveable building element receives power independently of the other moveable building elements. (Item 80) Item 70. The system of item 68, wherein the moveable construction element comprises at least one of a wall and an item of furniture. (Item 81) A second housing, the second housing including: a second track for guiding the movement of the at least one movable construction element; A second power distribution component and a second housing in which the an interface section adapted to attach the housing to the second housing, connect the track with the second track, and connect the power distribution component with the second power distribution component; Item 69. The system of item 68, further comprising: (Item 82) Item 69. The system of item 68, further comprising a mounting mechanism for attaching the system to an existing environment. (Item 83) Item 83. The system of item 82, wherein the mounting mechanism comprises at least one of an adhesive strip, a mounting bracket, and a high friction material. (Item 84) Item 83. The system of item 82, wherein the existing environment comprises at least one of a floor surface, a wall surface, and a ceiling surface. (Item 85) 1. A method for directing and distributing electrical power to at least one movable architectural element, said method comprising: providing a housing, the housing comprising: a track for guiding the movement of said at least one movable construction element; Power Distribution Components and a step, delivering power from a power source through a power distribution component to the at least one movable architectural element via at least one movable power outlet module; A method comprising: (Item 86) Item 86. The method of item 85, wherein the power distribution component comprises at least one conductive rail. (Item 87) 87. The method of claim 86, wherein the track and the power distribution component both comprise the at least one conductive rail. (Item 88) Item 87. The method of item 86, wherein the conductive rail has an impedance of less than 0.1 ohms. (Item 89) Item 87. The method of item 86, wherein the housing further comprises a polymer insulating material for insulating the conductive rails. (Item 90) Item 86. The method of item 85, wherein the power source comprises at least one of an AC power source and a DC power source. (Item 91) Item 86. The method of item 85, wherein a proximal end of the power outlet module is contained within the housing and a distal end of the power outlet module extends outside the housing and makes electrical contact with the moveable construction element. (Item 92) Item 92. The method of item 91, wherein a distal end of the power outlet module is in electrical contact with and delivers power to a motor that moves the moveable architectural element. (Item 93) 93. The method of claim 92, wherein the power outlet module and the motor are attached by a power cord, further comprising using a strain relief mechanism to limit forces transmitted to the power distribution component. (Item 94) Item 86. The method of item 85, wherein the at least one power outlet module comprises at least two power outlet modules. (Item 95) Item 86. The method of item 85, wherein the at least one moveable construction element comprises at least two moveable construction elements. (Item 96) Item 96. The method of item 95, wherein the step of delivering power includes a step of delivering power independently to each of the moveable architectural elements. (Item 97) Item 86. The method of item 85, wherein the moveable construction element comprises at least one of a wall and an item of furniture. (Item 98) Item 86. The method of item 85, further comprising the step of affixing the system to an existing environment using a mounting mechanism. (Item 99) Item 99. The method of item 98, wherein the mounting mechanism comprises at least one of an adhesive strip, a mounting bracket, and a high friction material. (Item 100) 99. The method of claim 98, wherein the existing environment comprises at least one of a floor surface, a wall surface, and a ceiling surface. (Item 101) A system for moving construction elements, said system comprising: a first construction element movable along a first trajectory defining a first axis; a second architectural element movable along a second track, said second track being attached to said first architectural element; A system comprising: (Item 102) Item 102. The system of item 101, wherein the first architectural element comprises at least one of a wall and a first furniture item. (Item 103) Item 103. The system of item 102, wherein the second architectural element comprises a second item of furniture. (Item 104) Item 104. The system of item 103, wherein the second furniture item comprises at least one of a bed, a desk, a couch, a closet, and a shelf. (Item 105) Item 102. The system of item 101, wherein the first architectural element is moved by a first actuator that receives power from a power source and the second architectural element is moved by a second actuator that operates without power. (Item 106) Item 106. The system of item 105, wherein the first actuator comprises a motor and the second actuator comprises a friction drive. (Item 107) Item 102. The system of item 101, wherein the first architectural element and the second architectural element are moved by an actuator that receives power from a power source. (Item 108) Item 102. The system of item 101, wherein the second trajectory defines a second axis. (Item 109) Item 109. The system of item 108, wherein the second axis is different from the first axis. (Item 110) Item 110. The system of item 109, wherein the second axis is approximately perpendicular to the first axis. (Item 111) Item 109. The system of item 108, wherein the second axis is the same as the first axis. (Item 112) Item 102. The system of item 101, wherein the first construction element and the second construction element move independently of each other. (Item 113) Item 102. The system of item 101, wherein the first architectural element and the second architectural element move in unison. (Item 114) Item 102. The system of item 101, wherein the first architectural element and the second architectural element are arranged in a configuration selected from the group consisting of horizontally adjacent, vertically adjacent, and nested. (Item 115) 1. A method for moving a construction element, the method comprising the steps of: moving a first construction element along a first trajectory defining a first axis; moving a second construction element along a second track, the second track being attached to the first construction element; A method comprising: (Item 116) Item 116. The method of item 115, wherein the first architectural element comprises at least one of a wall and a first furniture item. (Item 117) Item 117. The method of item 116, wherein the second architectural element comprises a second item of furniture. (Item 118) Item 118. The method of item 117, wherein the second furniture item comprises at least one of a bed, a desk, a couch, a closet, and a shelf. (Item 119) Item 116. The method of item 115, wherein the first architectural element is moved by a first actuator that receives power from a power source and the second architectural element is moved by a second actuator that operates without power. (Item 120) Item 120. The method of item 119, wherein the first actuator comprises a motor and the second actuator comprises a friction drive. (Item 121) Item 116. The method of item 115, wherein the first architectural element and the second architectural element are moved by an actuator that receives power from a power source. (Item 122) Item 121. The method of item 120, wherein the second trajectory defines a second axis. (Item 123) Item 123. The method of item 122, wherein the second axis is different from the first axis. (Item 124) Item 124. The method of item 123, wherein the second axis is approximately perpendicular to the first axis. (Item 125) Item 123. The method of item 122, wherein the second axis is the same as the first axis. (Item 126) Item 116. The method according to item 115, wherein the steps of moving the first construction element and moving the second construction element occur independently of each other. (Item 127) Item 116. The method of item 115, wherein the steps of moving the first construction element and moving the second construction element occur in unison. (Item 128) Item 116. The method of item 115, wherein the first architectural element and the second architectural element are arranged in a configuration selected from the group consisting of horizontally adjacent, vertically adjacent, and nested. (Item 129) 1. A method for operating a movable construction element, said method comprising the steps of: - identifying a desired movement profile of said moveable construction element along a length of operation; - using a motor to perform an initial movement of the moveable construction element along the length of operation, the initial movement having the desired movement profile; Measuring and storing a profile of the operating parameters; calculating a current profile based on the operating parameter profile, the current profile comprising an appropriate amount of current to deliver to the motor along the actuation length; delivering a current to the motor according to the current profile in response to performing a subsequent movement of the movable construction element; A method comprising: (Item 130) Item 130. The method of item 129, wherein the desired movement profile comprises at least one of a velocity profile and an acceleration profile. (Item 131) Item 130. The method of item 129, wherein the desired movement profile is based on a desired motor parameter profile. (Item 132) Item 132. The method of item 131, wherein the desired motor parameter profile comprises at least one of a load profile, a speed profile, a voltage profile, and a pulse width modulation profile. (Item 133) 130. The method of claim 129, wherein the operating parameters comprise at least one of a load on the motor, a speed of the motor, a voltage delivered to the motor, and a pulse width modulation delivered to the motor. (Item 134) Item 134. The method of item 133, wherein the operating parameter comprises a load on the motor, the load on the motor being measured as a match angle value. (Item 135) Item 130. The method of item 129, wherein the moveable construction element comprises a wall. (Item 136) Item 130. The method of item 129, wherein the moveable construction element comprises an item of furniture. (Item 137) Item 130. The method of item 129, wherein the motor comprises at least one of an electric DC motor and a stepper motor. (Item 138) Item 130. The method according to item 129, wherein the motor moves the moveable construction element via a drive wheel, and the length of actuation comprises a distance traveled by the drive wheel. (Item 139) Item 139. The method of item 138, wherein the working length comprises a surface of a room selected from the group consisting of a floor surface, a wall surface, and a ceiling surface. (Item 140) Item 140. The method of item 139, wherein the operating parameter varies along the length of the actuation due at least in part to imperfections on the surface of the room. (Item 141) Item 141. The method of item 140, wherein the imperfections comprise at least one of an inclined surface, a descending surface, and variable friction along a surface of the room. (Item 142) Item 130. The method of item 129, wherein the appropriate amount of current comprises less than or equal to 110 percent of a minimum amount of current necessary to prevent the motor from stalling. (Item 143) performing an additional movement of the movable construction element along at least a portion of the length of said actuation; measuring an updated operating parameter profile while performing said additional movements; calculating an updated current profile based on the updated operating parameter profile; Item 130. The method of item 129, further comprising: (Item 144) A system for operating a movable construction element, said system comprising: a motor adapted to move the movable construction element along a working length; At least one of a controller and a data processing device, wherein the at least one of the controller and the data processing device comprises: - obtaining a desired movement profile of said movable construction element along a length of operation; performing an initial movement of the moveable construction element along the length of actuation using the motor, the initial movement having the desired movement profile; Measuring and storing a profile of the operating parameters; calculating a current profile based on the operating parameter profile, the current profile comprising an appropriate amount of current to deliver to the motor along the actuation length; delivering a current to the motor according to the current profile in response to performing a subsequent movement of the movable construction element; At least one of a controller and a data processing device programmed to perform operations including: A system comprising: (Item 145) Item 145. The system of item 144, wherein the desired movement profile comprises at least one of a velocity profile and an acceleration profile. (Item 146) Item 145. The system of item 144, wherein the desired movement profile is based on a desired motor parameter profile. (Item 147) Item 147. The system of item 146, wherein the desired motor parameter profile comprises at least one of a load profile, a speed profile, a voltage profile, and a pulse width modulation profile. (Item 148) Item 145. The system of item 144, wherein the operating parameters comprise at least one of a load on the motor, a speed of the motor, a voltage delivered to the motor, and a pulse width modulation delivered to the motor. (Item 149) Item 149. The system of item 148, wherein the operating parameter comprises a load on the motor, the load on the motor being measured as a match angle value. (Item 150) Item 145. The system of item 144, wherein the movable construction element comprises a wall. (Item 151) Item 145. The system of item 144, wherein the moveable construction element comprises an item of furniture. (Item 152) Item 145. The system of item 144, wherein the motor comprises at least one of an electric DC motor and a stepper motor. (Item 153) Item 145. The system of item 144, wherein the motor moves the moveable construction element via a drive wheel, and the length of actuation comprises a distance traveled by the drive wheel. (Item 154) Item 154. The system of item 153, wherein the working length comprises a surface of a room selected from the group consisting of a floor surface, a wall surface, and a ceiling surface. (Item 155) Item 155. The system of item 154, wherein the operating parameters vary along the length of the operation due at least in part to imperfections on the surface of the room. (Item 156) Item 156. The system of item 155, wherein the imperfections comprise at least one of an inclined surface, a descending surface, and variable friction along a surface of the room. (Item 157) Item 145. The system of item 144, wherein the appropriate amount of current comprises less than or equal to 110 percent of the minimum amount of current required to prevent the motor from stalling. (Item 158) The operation further comprises: performing an additional movement of the movable construction element along at least a portion of the length of the movement; measuring an updated operating parameter profile during performance of said additional movements; calculating an updated current profile based on the updated operating parameter profile; Item 145. The system of item 144, comprising: [Brief description of the drawings]

[0038] In the drawings, like reference characters generally refer to the same parts throughout the different views. Also, the drawings are not necessarily to scale, with emphasis instead generally being placed upon illustrating the principles of the invention. In the following description, various embodiments of the invention are described with reference to the following drawings:

[0039] [Figure 1] FIG. 1 is a schematic perspective view of a system including moveable construction elements according to various embodiments.

[0040] [Diagram 2] FIG. 2 is a schematic diagram of a controller used to control moveable building elements, according to various embodiments.

[0041] [Diagram 3]FIG. 3 is a flowchart of example operations performed by a mapping module of a controller, according to various embodiments.

[0042] [Figure 4] FIG. 4 is a flowchart of example operations performed by a current mapping module, according to various embodiments.

[0043] [Diagram 5] FIG. 5 is an electrical schematic diagram of a motor, according to various embodiments.

[0044] [Figure 6] FIG. 6 is a schematic perspective view of a system including a position tracking element, according to various embodiments.

[0045] [Figure 7] FIG. 7 is a schematic diagram of a position tracking element, according to various embodiments.

[0046] [Figure 8] FIG. 8 is a flowchart of example operations performed by a location tracking module, according to various embodiments.

[0047] [Figure 9] FIG. 9 is a schematic perspective view of a power distribution assembly, according to various embodiments.

[0048] [Figure 10] FIG. 10 is a schematic perspective view of a system including multiple moveable building elements according to various embodiments.

[0049] [Figure 11A] FIG. 11A is a top perspective view of a system including one power distribution assembly according to various embodiments.

[0050] [Figure 11B] FIG. 11B is a schematic front view of the system shown in FIG. 11A.

[0051] [Figure 12A] FIG. 12A is a top perspective view of a system including two power distribution elements, according to various embodiments.

[0052] [Figure 12B] FIG. 12B is a schematic front view of the system shown in FIG. 12A.

[0053] [Figure 13] FIG. 13 is a schematic perspective view of a system including multiple tracks, according to various embodiments.

[0054] [Figure 14A] FIG. 14A is a schematic perspective view of a system including multiple moveable building elements in a nested configuration, according to various embodiments.

[0055] [Figure 14B] FIG. 14B is a schematic front view of the system shown in FIG. 14A.

[0056] [Figure 15] FIG. 15 is a schematic perspective view of a system including a motor drive and a friction drive, according to various embodiments.

[0057] [Figure 16] FIG. 16 is a schematic top view of a system including a friction drive, according to various embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0058] Embodiments of the present invention relate to improved operation and safety of moveable construction elements. In general, the concepts described herein are applicable to any architectural element, e.g., walls, furniture (e.g., beds, dressers, desks, etc.), closets, shelves, doors, stages, even if only one type of architectural element is described when illustrating a particular concept. In addition, the concepts described herein are generally applicable to any technique for moving a moveable architectural element, e.g., motor drive, friction drive, magnetic drive, etc., even if only one type of movement technique is described when illustrating a particular concept.

[0059] FIG. 1 illustrates an exemplary system 10 including a movable building element 100 that is moved by a driving element 102 (e.g., a wheel) driven by a motor 104. The motor can be controlled by a controller 106. The controller 106 can communicate with the motor 104 using any known technique, such as, for example, locally through a wired connection, via a local area network (LAN) or similar local network, remotely via the Internet or other similar network, etc. In some cases, as shown in FIG. 1, the building element 100 moves along a length of operation 110. As used herein, the term "length of operation 110" refers to the distance traveled by the building element 100. In general, the length of operation 110 can include any surface traversed by the building element 100, such as a floor surface, a wall surface, a ceiling surface, etc. In some cases, the element 100 is guided along the length of operation 110 by a track 108 (e.g., a rail, a guide, etc.). Although FIG. 1 shows the track 108 guiding only a single side of the building element 100, in other embodiments, another side (eg, the opposite side) of the element 100 can be guided by another track.

[0060] FIG. 2 is a schematic diagram illustrating exemplary modules that may be executed by the controller 106. In some instances, the controller 106 executes a mapping module 202. It may be advantageous to generate a map of baseline values ​​of certain operating parameters of the motor 104 (e.g., load on the motor 104, speed of the motor 104, etc.) at various points during the movement of the element 100 along the length of the actuation 110. For example, operating parameters measured during operation of the device can be compared against the map of baseline values, and if an imbalance is found, some corrective action can be taken (e.g., stopping the movement of the element 100). Among other benefits, this can improve the safety of the system by, for example, preventing collisions with humans, pets, and / or inanimate objects. The mapping module 202 is described below primarily with respect to motor load and motor speed, however, in general, the mapping module can be implemented to apply to any operating parameter of the system 10, for example, voltage, current, pulse width modulation, etc.

[0061] To understand the mapping module 202, it is useful to understand how the motor 104 operates, which provides the force for movement of the drive element 102 / architectural element 100. In general, the motor 104 can be any type of motor, e.g., stepper motor, DC electric motor, servo motor, etc., but the following description will focus primarily on embodiments in which the motor 104 is a stepper motor. In some cases, some parameters of the motor 104 are fixed (e.g., power supply voltage, wheel / gear ratio, etc.) and some parameters can be set and varied by firmware (e.g., current, acceleration, speed, etc.).

[0062] A stepper motor typically includes windings that create a magnetic field when current flows through them, and a magnetic rotor that pivots to align with the magnetic field. Adjusting the current flowing through the different windings creates a pivoting magnetic field that rotates the rotor. The rotor can be attached to a torque-transmitting mechanism (e.g., a drive shaft) that transmits torque to the drive element 102, resulting in the movement of the architectural element 100. As will be understood by those skilled in the art, to generate torque to rotate the rotor (e.g., to move the element 100), the motor 104 needs to overcome forces that oppose its motion. Taking the example of the architectural element 100, these forces are often static friction forces exerted by the surface over which the element 100 travels. However, many additional opposing forces are possible, e.g., objects or individuals that block the movement of the element. In general, the sum of all of the forces that oppose the movement of the element 100 is the load of the motor 104.

[0063] In general, ignoring energy dissipation from current flowing through the windings, when the motor 104 is not driving a significant load, the rotor closely follows the magnetic field and the "alignment angle" (the angle between the rotor and stator teeth that generate the magnetic field) is small. When the rotor and magnetic field are aligned, no torque is being transferred to the rotor, no power is being consumed, and the load on the motor 104 is minimal (e.g., 0 N). Conversely, when the motor is driving a significant load, the gap between the magnetic field and the rotor widens and the alignment angle increases. When the rotor and magnetic field are maximally separated, all torque is being transferred to the rotor, no power is being consumed to move the rotor, and the load on the motor 104 is at a maximum value. If the alignment angle exceeds a certain threshold, the motor 104 stalls.

[0064] In many conventional applications, the stepper motor 104 is subjected to a relatively constant load during operation. Such conventional systems can be preprogrammed with a threshold load value that, if exceeded during operation, can cause the motor to shut down or reverse. One example of such a system is found on many conventional garage doors, which are preprogrammed with a particular threshold load. If that load is exceeded during operation, the system assumes that something has been hit and either shuts down or reverses the motor.

[0065] Preprogramming threshold load values ​​is not necessarily practical for the system 10 described herein because the loads received by the system 10 may vary widely across various arrangements of the system 10. For example, the loads may vary based on the traveling surface material (e.g., hardwood vs. tile vs. carpet, etc.), the inclined and / or descending surfaces, friction coatings (e.g., lacquer, grout, etc.), etc. As a result, a threshold load value that may be appropriate to indicate an obstacle or other safety violation in one arrangement may be inappropriate in another arrangement. For example, a threshold load value appropriate for the system 10 arranged on a flat hardwood surface may be exceeded in response to any movement of the system 10 arranged on a sloped carpeted surface, resulting in undesirable jamming of the sloped carpeted surface system. The mapping module 202 executed by the controller 106 may enable the system 10 to be operable across any arrangement while still maintaining the safety benefit of having a threshold load value.

[0066] FIG. 3 is a flow chart illustrating exemplary operations performed by the mapping module 202. In some cases, the operations can include identifying a desired movement profile of the movable building element 100 along the length of the actuation 110. The controller 106 can identify the desired movement profile using any known technique, for example, can be pre-programmed, received from user input (either on a local user interface or via a web portal in communication with the controller 106), via machine learning processes, etc. As used herein, a movement profile refers to values ​​of parameters that describe or define the movement of the building element 100 at all or some locations along the length of the actuation 110. A movement profile can be constant or variable in various cases. In general, a movement parameter profile can be any desired movement parameter. For example, a movement parameter profile can include a desired velocity profile, a desired acceleration profile, etc. In some cases, a desired movement profile is based on a desired motor parameter profile. As used herein, a motor parameter profile refers to values ​​of parameters that describe or define the operation of the motor 104. In general, a motor parameter profile can be any desired motor parameter. For example, a desired load profile, a desired speed profile, a desired voltage profile, a desired current profile, a desired pulse width modulation profile, and the like.

[0067] Once the desired movement profile is identified, the controller 106 can cause the moveable building element 100 to perform an initial movement having the desired movement profile along the length of the actuation 110. For example, the controller 106 can control the motor 104 to move the building element 100 across the length of the actuation 110 with a particular velocity profile and acceleration profile. During the initial movement, the operating parameters can be measured at various locations along the length of the actuation such that an operating parameter profile is generated. Any suitable number of measurements can be collected. For example, an exemplary stepper motor 104 can step the motor through 51,200 steps per revolution, or in increments of about 0.007 degrees. In some cases, measurements can be collected at each step (e.g., including dedicated circuitry to process the measurements), however, in other cases, mapping parameters at all 51,200 steps is impractical, especially without dedicated circuitry. In addition, performing and storing such a large number of measurements can exceed the storage and processing capabilities of many stepper motors and controllers. Even in implementations that include the storage and processing power to handle this many measurements, the inventors have determined that in some cases, performing measurements at such high resolution may not provide significantly or actually better results than performing measurements at lower resolutions. The inventors have determined that, in various implementations, acceptable results can be achieved by performing measurements at the following angular resolutions: 1°-45°, 2°-40°, 3°-35°, 4°-30°, 5°-25° (e.g., 7.2°), 7°-20° (e.g., 7.2°), 8°-15°, and 9°-10°. For example, if measurements are performed at an angular resolution of 7.2°, that means that a measurement is collected every 7.2° of the rotor rotation.

[0068] In some cases, if a sensor collects more than one measurement within a programmed angular resolution (e.g., more than one measurement within a particular 7.2 degree rotation), the additional measurements can be handled in various ways, e.g., only the first measured value is used (which may save computation time), only the second measured value is used, an average value is used, both values ​​are used (resolution changes), etc. Similarly, if a sensor misses a measurement within the programmed resolution (e.g., no measurements are collected within a particular 7.2 degree rotation), this can be handled in various ways to continue reliable operation, e.g., the missing value can be estimated from other measured values.

[0069] As noted above, the operating parameters can include, for example, the load on the motor 104, the speed of the motor 104, the voltage draw, the current draw, pulse width modulation, etc. The operating parameters can be measured using any suitable instrument / technique, for example, sensors and / or data processing chips attached to the motor 104. In some cases, rather than directly measuring the operating parameter of interest, the operating parameter is measured indirectly by measuring an indicator of the operating parameter (e.g., a value from which the operating parameter can be determined). Taking an example of an operating parameter that is the load on the motor 104, in some cases, rather than directly measuring the load, the system 10 can measure the match angle of the motor 104, which can be used to calculate (or estimate) the load. In this example, the match angle itself can be measured by determining the ratio of input power to output power. In some embodiments, the motor 104 can include a resistor that measures and outputs the power efficiency from which the load on the motor 104 can be determined and from which the match angle can be determined. The controller 106 can be pre-programmed with these calculations such that for each power efficiency measurement, a corresponding load on the motor 104 is calculated (e.g., a maximum power efficiency reading (e.g., 0) represents a maximum load (or stall) and a minimum power efficiency reading (e.g., 1,024) represents a minimum load). As will be appreciated by those skilled in the art, many other implementations are possible for indirect measurement of various operating parameters of interest, all of which are contemplated herein.

[0070] As another example from mapping a load onto the motor 104, in some cases the system monitors the load and alters the motor's speed accordingly (e.g., slows the motor down if the load increases, and accelerates it back to the desired speed if the load decreases). This technique can allow the motor 104 to keep current and torque low while still allowing operation on a wide range of floors, for example, because it can help use the inertia of the element to navigate an area of ​​increased friction (e.g., slope) as opposed to trying to maintain a constant higher speed and stall. In some such situations, the load variable may not be available for mapping, since changing the speed would change the alignment angle (e.g., trying to keep the alignment angle small). In such situations, the mapped operating parameter may be speed (which may represent the load).

[0071] In various embodiments, the operating parameters measured during the initial movement can be stored in a memory accessible by the controller 106. The memory can be located in any suitable location, e.g., locally on the motor 104, locally on the controller 106, wirelessly accessible via the internet / cloud, etc. In various cases, the operating parameter profile can be based on measurements collected only during the initial movement, or based on multiple initial "profile generating" movements. Any number of initial "profile generating" movements can be used. For example, a profile can be generated based on movement of the building element 100 across a length of actuation 110 in a first direction and movement of the building element across a length of actuation in the opposite direction. In some cases, the controller 106 tracks the direction in which the building element 100 is moving, and a separate profile is stored for each direction of travel.

[0072] After the operating parameter profile is collected and stored, the mapping module 202 may include the action of causing the movable building element 100 to perform a subsequent movement. The subsequent movement may be, for example, during the use of the device by the user (e.g., moving the movable building element 100 to convert a living room into a bedroom, etc.). During the subsequent movement, the system 10 (e.g., sensors on the motor 10, the controller 106, etc.) may perform measurements of the operating parameters, or, in some cases, indicators of the operating parameters. The measurements during the subsequent operation may be at the same or different resolution than the measurements performed during the initial mapping step. Similarly, the measurements during the subsequent operation may be at the same or different values ​​than the measurements performed during the initial mapping step. For example, during the initial mapping step, the load on the motor may be measured directly while during the subsequent operation the load on the motor is determined via power efficiency readings. In other cases, the load on the motor may be determined via power efficiency readings during both the initial and subsequent movements.

[0073] The mapping module 202 may perform an operation of comparing the measured operating parameter value to an appropriate value on the operating parameter profile. The appropriate value may be a value corresponding to the measured value (e.g., same location, same time, etc.). If the mapping module 202 determines that the difference between the measured value and the profile value exceeds a predetermined (e.g., preprogrammed) threshold, the controller 106 may adjust the movement of the building element 100. In general, any predetermined threshold may be used, e.g., 1% of the profile value, 2% of the profile value, 3% of the profile value, 5% of the profile value, 10% of the profile value, 15% of the profile value, 20% of the profile value, etc. If the threshold is exceeded, the controller 106 may infer that an obstacle (e.g., an individual, a pet, an inanimate object, a mechanical failure of the system 10, an electrical failure of the system 10, etc.) has been encountered.

[0074] In some cases, a single threshold over value results in an estimate of an obstacle. In other cases, the system does not estimate an obstacle until a predetermined number of threshold over values ​​(e.g., 2, 3, 5, 10, 50, 100) occurs, either consecutively or within a certain number of measurements. In cases where a predetermined number of threshold over values ​​must occur consecutively to estimate an obstacle, a value that does not exceed the threshold can be measured before the predetermined number is reached, and then the count can be reset to zero. In other implementations, in addition to or as an alternative to tracking the number of measurements that exceed the threshold, the system 10 can track the amount over a threshold of a particular measurement. In some cases, the system 10 can accumulate an amount over a threshold of consecutive measurements (or within a certain number of measurements), and estimate an obstacle if the accumulated amount exceeds a predetermined amount. In such cases, if a value that does not exceed the threshold is measured before the predetermined number is reached, the accumulated amount can be returned to zero. In some cases, the system 10 can accumulate an amount over a mapped profile as opposed to an amount over a threshold. In various implementations, the count or accumulated amount can be reset either during motion or after motion has stopped. In some cases, the count of the accumulated amount is not reset to zero, but rather is reset gradually. The rate at which the count or accumulated amount is reset may depend on several factors, such as the size of the difference between the threshold (or profile) and the measured value, the number of measurements made, etc.

[0075] Any adjustment of the movement of the architectural element 100 can be made, for example, to improve system safety, to improve energy efficiency, etc. For example, the movement can be stopped or slowed down, or the direction of the movement can be reversed, for example to prevent further collisions. In some cases, actions other than adjusting the movement of the architectural element 100 can be taken. As some of the many examples, the system can initiate diagnostic checks on its mechanical and / or electrical systems to ensure proper functioning, profiles can be updated (described below), an inspection engineer can be called, or other notification actions can be taken, etc.

[0076] In various embodiments, there are additional considerations and limitations that may be addressed when designing and implementing the mapping module 202. One exemplary consideration is the point along the length of actuation 110 and / or time during the movement of the architectural element 100 at which mapping and / or analysis of measurements against the profile should occur. In some cases, mapping / analysis occurs when the system 10 reaches a steady or constant speed or acceleration (or other motion parameters). In such cases, mapping / analysis does not occur when the system is in an initial acceleration or final deceleration phase. Instead, this may occur when the system reaches a desired speed since the map should uniformly represent the steady state speed / motion given the desired speed and acceleration profile. In some cases, values ​​when the system 10 is performing initial acceleration or final deceleration may be non-steady and / or unreliable, resulting in false positive or false negative readings. In other cases, mapping / analysis may occur during the initial acceleration and final deceleration phases.

[0077] In various embodiments, signal noise, whether from mechanical or electrical sources, can be considered and, in some cases, mitigated. In general, any known technique or computational resource for considering noise can be used, for example, a sliding median filter with an appropriate window size (e.g., 15, 20, 25, 50, 100). As used herein, window size refers to the number of measurements considered collectively to consider noise. For example, when a window size of 25 is used, rather than using a single value per measurement, the controller 106 can look at the last 25 values ​​and use the average or median of these as the measurement. Many other signal processing techniques are available for considering noise. The same or different techniques can be used during the mapping and analysis phase, or in some cases, a signal processing technique may be used only in one phase or the other.

[0078] In various embodiments, the mapped profile can be updated. In general, the profile can be updated at any interval and according to any condition or pattern, for example, every time the building element 100 moves, every time the system is powered on and / or off, only once during the life of the system, every time a fault event is present and / or absent. Updating the profile can include replacing at least one measurement / value in the profile with an updated measurement / value. For example, all of the measurements / values ​​can be updated, or only certain (e.g., 1, 2, 3, 10, 25, 50, 100) measurements / values ​​on either side of the collision event can be updated. The updated measurement / value can be a filtered measurement (e.g., using a sliding median filter), an unfiltered measurement, an average of the filtered measurement and the original measurement, an average of the unfiltered measurement and the original measurement, an average of multiple measurements since the original measurement, a median of multiple measurements since the original measurement, etc. In general, any number of measurements / values ​​in a profile can be updated / replaced, for example, all of the measurements / values, only those measurements / values ​​where the updated measurements exceed a certain difference threshold, only those measurements / values ​​within a certain distance or time of a crash event, etc.

[0079] In various implementations, the controller 106 can automatically update / adjust the thresholds used to estimate fault events. For example, at any time (e.g., before updating the profile with the most recent values), the controller 106 can compare the previous movement (e.g., the most recent movement without a fault estimation) to the profile and identify the thresholds (e.g., the highest and lowest thresholds) that provide the minimum / tightest boundaries that do not trigger a fault. The thresholds can then be set to these values ​​(or with additional overhead in some cases) such that, for example, the system 10 provides a faster stop with a lower fault force. The threshold updates can occur at any advantageous time, for example, after a full movement of the element, after a certain length of movement (e.g., with a sufficient amount of data but likely to occur with a desired frequency). In general, any of the concepts for updating the profile described above or elsewhere herein can be applicable to updating the thresholds. For example, the thresholds can be updated at any interval, according to any condition or pattern, e.g., every time the architectural element 100 is moved, every time the system is powered on and / or off, only once during the life of the system, every time a fault event is present and / or absent.

[0080] In some implementations, the motor 104 includes a dedicated microcontroller 112 located locally on the motor 104. In general, unless otherwise described herein, any function performed by the controller 106 can be performed by the microcontroller 112 in some cases. The microcontroller 112 can include either updateable or fixed firmware. In cases where the microcontroller 112 has fixed firmware, the master controller 106 can be updated via a wired (such as USB) and / or wireless (e.g., Internet, LAN, etc.) connection. In various implementations, either the controller 106 or the microcontroller 112 can perform the threshold updates discussed above. In cases where the controller 106 performs the updates, the controller 106 can perform the analysis and / or instruct the microcontroller 112 remotely. In some cases, the controller 106 can instruct the microcontroller 112 to switch between various operating modes. In various implementations, the system 10 may include multiple motors 104 (in systems with multiple moving elements 100 or a single moving element) and / or microcontrollers 112. In such implementations, some or all of the microcontrollers 112 may be controlled by the master controller 106.

[0081] In some implementations, it is advantageous for the system to avoid false positives (e.g., when the movement of the element 100 is stopped because the system 10 presumes an obstacle when none is present) and false negatives (e.g., when a collision occurs but the system 10 does not detect it). Exemplary conditions that cause false positives include the element 100 being manually pushed so that its position is offset in the map, an increase in weight on the element 100 between different movements, mechanical defects, threshold parameters that are too low, etc. The controller 106 can use various techniques to overcome false positives. For example, following a false positive event, the controller 106 can erase the mapped profile and / or re-adjust threshold parameters. In general, any suitable action can cause the controller 106 to take these actions, such as the occurrence of an identified false positive, a stall occurring upon the first start since power-up in either one or both directions, a stall occurring twice in a row in either the same or opposite directions, etc.

[0082] In some implementations, rather than varying the speed based on the load, the system 10 can vary the amount of current delivered to the motor 104 based on the load (or another measured parameter, in some cases). For example, when the load on the motor 104 decreases, the current delivered to the motor 104 can be decreased, and when the load on the motor 104 increases, the current delivered to the motor 104 can be increased. This mode of operation can allow the system 10 to be energy efficient. In some cases, this mode of operation can be utilized when an abundant reserve current source is available. Monitoring the current draw can also ensure that the motor 104 and / or other electrical components do not overheat. In some implementations, the selective delivery and monitoring of the current draw is performed by a current mapping module 204, which is executed by the controller 106 (or the microcontroller 112).

[0083] FIG. 4 is a flow chart of exemplary operations performed by the current mapping module 204. As shown, many of the operations performed by the current mapping module 204 are identical to those performed by the mapping module 202. Thus, in some cases, the current mapping module 204 is a submodule of the mapping module 202. The current mapping module 204 can calculate a current profile based on the mapped profile of the operating parameters. The current profile can include an appropriate amount of current to deliver to the motor 104 along the length of the actuation. In response to the subsequent movement of the building element 100, the module 204 can deliver a current to the motor 104 according to the current profile. In general, any appropriate amount of current can be delivered, for example, no more than 101%, 103%, 105%, 110%, 115%, 120%, or 125% of the current required to prevent the motor from stalling. In other cases, the system 10 can be programmed to move a building element according to a desired movement profile (e.g., speed and acceleration), and the system 10 can determine the appropriate amount of current to deliver to the motor to accomplish the desired movement profile (e.g., based on torque demand) without using mapped current values. In some implementations, the operating parameter itself is current draw, for example, the system 10 can estimate an obstacle even if the amount of current draw is increased.

[0084] In some motors (e.g., DC motors), the voltage correlates to the speed at which the motor turns, and the current correlates to the torque the motor outputs. When a voltage is applied to the motor, the motor will try to draw the current it needs to generate the torque it needs to reach the speed matched to that voltage. In some cases, this means that at rest, the motor 104 will draw a large current to spin the rotor, and once the motor is spinning, the current draw will drop rapidly and continue to drop as it approaches steady state speed.

[0085] In some embodiments, the controller 106 (or the microcontroller 112) can execute an adaptive current sensing module 208. The adaptive current sensing module 208 is similar to the current mapping module in that both modules monitor the amount of current delivered to the motor. However, rather than comparing the measured current value to a value mapped for that location during a previous movement of the building element 100 across the length of the actuation 110 (e.g., as in the current mapping module 204), the adaptive current sensing module 208 compares the measured current value to a previously measured value at a different location during the same movement. In some cases, the adaptive current sensing module 208 compares the measured current value to a reference amount, calculated, for example, as an average of previous current measurements (e.g., all previous measurements during the movement, or a predetermined number of previous measurements, e.g., 2, 3, 5, 10, 50, 100, etc.). If the amount of current draw changes by a predetermined amount (e.g., 5%, 10%, 20%, 30%, 50%, 100%, or any other amount characteristic of the architectural element encountering an obstruction) within a predetermined amount of time (e.g., 1 microsecond, 1 millisecond, 5 milliseconds, 10 milliseconds, 0.3 seconds, 0.5 seconds, 1 second, 2 seconds, etc.) and / or a predetermined number of measurements (e.g., 1, 2, 5, 10, etc.) and / or a predetermined number of motor steps, the adaptive current sensing module 208 can take some corrective action (e.g., stopping, slowing down, and / or reversing the movement of the element 100). As one non-limiting example provided solely for purposes of illustrating the concept, if the adaptive current sensing module 208 receives a current measurement that is 20% above the average of all previous current measurements during a particular movement, the module 208 can infer that an obstruction has occurred and take some corrective action. In some cases, the adaptive current sensing module 208 can be advantageously used with non-stepping DC motors.

[0086] In some embodiments to monitor the current draw, a current sense resistor is placed on each bottom leg of the H-bridge driving the motor 104, for example as shown in FIG. 5. In such an embodiment, when the motor 104 drives in one direction, current flows through one leg, and when the motor drives in the other direction, current flows through the other leg. If the resistance of the resistor is known, as voltage equals current times resistance, the current can be calculated by measuring the voltage across the resistor. In one instance, the top of each resistor is connected to a hardware multiplexer that passes through the top of the resistor with the current flowing through it as a result of the direction the motor 104 is rotating. This output can be connected to the inverting input of an operational amplifier through another resistor, and the non-inverting input is set by a voltage digital-to-analog converter that outputs a constant voltage. The inverting input can be connected to the output through another resistor. The output can be connected to an analog-to-digital converter that converts the voltage to an integer. The microcontroller 112 or controller 106 can then act on this integer to determine the current (e.g., in milliamps) flowing through the motor 104. Many other techniques for measuring the current draw are possible and are contemplated.

[0087] All of the data processing techniques described above with respect to other operating parameters are applicable to the measurement of current draw. In some embodiments, the controller 106 (or memory accessible thereby) can store a predetermined number of current measurements (e.g., the last 5, 10, 25, 50, 100), and each time a new value is measured, the oldest value can be retracted in favor of the new value. An average of the stored values ​​can then be calculated and used as the current measurement. In some cases, the current measurement is compared to a "static high threshold." If the current measurement exceeds the static high threshold for a predetermined amount of time (e.g., milliseconds), the overcurrent detector is tripped and the microcontroller stops the motor. The static high threshold may be a value that is reached when the motor 104 is unable to reach a predetermined speed in a predetermined amount of time, indicating, for example, that an object is blocking the movement of the element 100. When the element 100 is in motion, the controller 106 can compare the current measurement to a "movement high threshold." The movement high threshold may be a static number that is lower than the static high threshold. Similar to the static situation, while the system 10 is in motion, if the current measurement exceeds the travel high threshold for a predetermined amount of time (eg, milliseconds), the overcurrent detector is tripped and the motor is stopped.

[0088] In addition to the moving high threshold and the static high threshold, the controller 106 can also maintain a reference value (e.g., a mapped profile value) to which the current measurements are compared. The reference can vary. In some cases, the reference closely follows the current measurements, but more slowly adapts to the readings over time as a moving average, and the controller 106 can compare the reference value against the instantaneous value to determine if a collision has occurred.

[0089] The reference can be updated continuously or periodically, or in some cases, not updated. An exemplary technique for updating the reference includes subtracting the reference from the current measurement, and if the difference is positive but lower than an "update threshold" for a predetermined amount of time (e.g., milliseconds), the reference updates (e.g., via a jitter filter, which may include incrementing the reference by one rather than the calculated value). In some cases, the system can distinguish between normal fluctuations (e.g., drift) in the current readings, which may be used to update the reference, and abnormal fluctuations representing fault conditions, which may not be used to update the reference. If the difference is negative for a predetermined amount of time (e.g., milliseconds), the reference can also be updated downward (e.g., via a jitter filter, which may include decrementing the reference by one). The update threshold used to update the reference can be a lower value than the threshold used to adjust (e.g., stop) the movement of the element 100.

[0090] As noted above with respect to other operational parameter measurements, in some embodiments, the current measurement may be unstable during some portion of the element's movement. For example, the measurement may be unstable during a rotational cycle of motion as the motor goes from rest to some amount of angular velocity. The current may initially spike for a few milliseconds, then drop sharply, then increase again, and when the current stabilizes downward, there may be significant noise and reading discrepancies. As another example, the measurement may be unstable during operation if the system accelerates and / or decelerates, and in some cases the additional current draw required by acceleration may be considered a collision resulting in a false positive. To combat these complications, in some cases the controller 106 may apply an algorithm to determine the stability of the current reading. In such cases, measurements that exceed a threshold may be ignored if the current reading is not determined to be stable. In such cases, the threshold may be applicable only to stable measurements.

[0091] In general, any technique can be used to determine the stability of the current measurement. As one example, the current measurement is considered stable once the following two conditions are met for a predetermined amount of time (e.g., milliseconds): (1) a threshold of too much current being delivered is not exceeded, and (2) the upward rate of change of the pulse width modulation (PWM) on the motor falls below a threshold rate value. In some cases, if the current reading is stable, but the PWM begins to increase at a rate above the threshold rate value, the current reading will again be considered unstable. In some cases, a criterion is set on the current measurement when the measurement transitions from unstable to stable, for example, to obtain the most robust and accurate detection.

[0092] In some implementations, the controller 106 ensures that the initial acceleration is slow enough to avoid a stall, and slows down the motor 104 if more torque is required to move in one direction. Additionally, if the system is blocked (e.g., due to a collision), the controller 106 can stop the motor 104 before a stall condition is reached, helping to manage torque and speed requirements. A stall condition can exist when the motor 104 cannot supply enough torque to keep the rotor spinning. When this happens, the magnetic field continues to spin inside the motor, but the rotor does not spin, which can cause loud noise.

[0093] Another aspect of the invention relates to determining the position of the building element 100 along the length of the actuation 110. Knowing the position (or approximate position) of the element 100 can be advantageous for a number of reasons, including, for example, adjusting the motion of the element 100 (e.g., slower when closer to a wall or end of the length of the actuation 110 to avoid abrupt stops that could damage the system 10 and / or cause items to fall off the element 100 due to inertial forces).

[0094] In various embodiments, system 10 can include a position tracking element 114 (see FIG. 6), and controller 106 can include a position tracking module 206 (see FIG. 2). In general, position tracking element 114 can be located at any suitable location on system 10, not just along trajectory 108 as shown in FIG.

[0095] FIG. 7 is a schematic diagram illustrating an exemplary position tracking element 114. The element 114 can include a sensor component 116 and a sensed component 118 (sometimes referred to herein as a relative position tracking element). In general, the sensed component 118 can be any element that conveys information about its location relative to the track 108 (or other suitable structural element that can serve as a fixed reference point). As an example, the sensed component 118 can include a surface with indicia that can be used to indicate location, such as a printed tape with non-repeating, discrete colored portions 118a, 118b, 118c, etc., in some cases. In order for the printed tape 118 to convey its location relative to the track 108, in some cases the printed tape 118 is mounted in a fixed relationship to the track 108. In some cases the printed tape 118 is housed within the track 108 (or a housing that contains the track 108) and can block all, substantially all, a majority, or a portion of the ambient light illuminating the printed tape 118.

[0096] In various embodiments, the sensor component 116 is configured to move relative to the sensed component 118. For example, the sensed component can be mounted in a fixed relationship to the architectural element 100 such that the sensor component 116 moves along the sensed component 118 as the element 100 moves along the track 108. In general, the sensor component 116 can be any type of sensor capable of sensing the environment (e.g., some property of the sensed component 118), such as an optical sensor, a thermal sensor, etc. In one exemplary embodiment, the sensor component 118 includes a light source 120 (e.g., a white LED with a stable color output) positioned and adapted to illuminate the printed tape 118. The sensor component can also include a color sensor 122 (e.g., an RGB color sensor), an incremental positioning system 124, a microprocessor 134, and a printed wiring board. In operation, the color sensor 122 can receive light from the light source 120 that is reflected off a particular portion of the sensed component 118 located proximate the sensor component 118 such that the color sensor 122 can determine the color of the particular portion. The colors can be communicated to the microprocessor in any suitable format, for example, with at least 4-bit, 8-bit, 16-bit, 32-bit resolution per color.

[0097] In various embodiments, the incremental positioning system 124 tracks the linear position of the sensor component 118 with a predetermined resolution, e.g., 1 mm, 2 mm, 3 mm, 5 mm, 10 mm, 25 mm, 50 mm, 100 mm. One example of the incremental positioning system 124 includes an incremental mechanical rotary encoder 126 and an infrared sensor 128 coupled with an infrared emitter 130 that reflects infrared detectable indicia 132 (e.g., white and black lines / segments). In some implementations, the microprocessor 134 tracks the position of the sensor component 116 / architectural element 100 relative to the track 108 and stores the position, e.g., in a non-volatile memory. If the system 10 is powered off, the microprocessor can recall the position of the element when the system is powered on again, even if, in some cases, the location of the element 100 changed when the system was powered off.

[0098] In some embodiments, the microprocessor 134 can store the configuration of the sensed component, e.g., the printed tape 118. For example, the microprocessor 134 can store the order of the discrete portions (e.g., non-repeating color portions) and the length of each portion. In some cases, the microprocessor 134 is preprogrammed with this information. In other cases, the microprocessor 134 performs programming functions to determine this information.

[0099] The programming function can be performed by the position tracking module 206 (see FIG. 2). FIG. 8 is a flow chart illustrating an example operation of the position tracking module 206, including the programming function. The operation can include causing the building element 100 / sensor component 116 to perform an initial movement (or multiple movements in some cases) along the length of the track 108 / sensed component 118. In general, the building element 100 / sensor component 116 can move along any length of the track 108 / sensed component 118, for example, the building element 100 / sensed component 118 can start at a first end of the track 108 / sensed component 118 and move to a second / opposite end of the track 108 / sensed component 118.

[0100] During the initial movement, the sensor component 116 can collect information, acquire properties, and store the information in a non-volatile memory regarding the sensed component 118 (relative position tracking element). In general, any measurable information can be collected and stored. In some cases, the information includes the length of each discrete portion (e.g., color portions 118a, 118b, 118c on the printed tape 118), the order of the discrete portions, and the total length of the sensed component 118. The length and total length of each discrete portion can be measured using any technique, for example, using the incremental positioning system 124. In some embodiments, the order of the discrete portions 118a, 118b, 118c can encode information about the type of system 10 that can be understood by the microprocessor 134 and / or the controller 106. For example, the order of the discrete portions can function as a barcode or a QR code. In general, any information can be communicated in this manner, such as the size of the system, the configuration of the system (e.g., furniture or other items included), desired speed profile, desired load profile, maximum speed, maximum load, power requirements, maintenance schedules, among other examples.

[0101] Knowing the nature of the sensed component 118 (either through pre-programming, programming features, etc.) can enable the determination of position even when the system 10 is started (powered on) at a central location of the track 108. For example, as shown in FIG. 8, upon starting up the system 10, the position tracking module 206 can estimate its position by identifying discrete portions (e.g., color portions) on the sensed component (printed tape) 118. For example, by knowing which color portions the sensor component 116 is close to / adjacent to and the length of the color portions, the position tracking module 206 knows that its position is somewhere within that length. Based on the estimated position, the position tracking module 206 can determine whether / type of movement is allowed. For example, movement may not be allowed in a particular direction or at a particular speed if the element 100 is located near the end of the track 108 or another object. If movement is allowed, the position tracking module 206 can move the element 100 until the sensor component 116 detects a color transition (or other discrete portion transition). In some implementations, during this movement, the incremental positioning system 124 is used to determine the distance it took to reach the color transition, although this is not required in all implementations. In response to reaching the color transition, the position tracking module 206 can determine the precise location of the element, for example, based solely on knowledge of the nature of the sensed component 118, or based on knowledge of the nature of the sensed component 118 and the distance it took to reach the color transition. Once the precise location is known, in some cases the position tracking module 206 continues to track the location using the incremental positioning system 124. This process can be repeated if any event occurs such that the position tracking module 206 loses knowledge of the precise location, for example, if the system 10 loses power, if the system 10 is manually moved, etc. In some implementations, the position tracking module 206 can only estimate the location and cannot determine the precise location.In such situations, the sensor component 116 may not include the incremental positioning system 124 .

[0102] Another aspect of the invention relates to inventive techniques for distributing electrical power to the various components of the system 10. As noted above, the movable building element 100 is often moved via a drive element 102 driven by an electric motor 104. However, the system 10 is somewhat unique in that the item (or in some cases multiple items) requiring electrical power may be movable during operation of the system 10. This creates multiple complications, difficulties of use, and potential safety hazards. For example, simply running a power cord from a wall outlet to the motor and allowing the cord to travel as the building element 100 moves may cause the cord to get caught or trapped, resulting in damage to the system 10, damage to the cord, and even a fire.

[0103] In various implementations, the system 10 can include a power distribution system that is safer and easier to use than conventional techniques. For example, as shown in FIG. 9, in some embodiments, the system 10 can include a modular power distribution assembly 136. In some cases, the modular power distribution assembly 136 forms the track 108 shown in FIG. 1. The modular power distribution assembly 136 can include at least some of the following components: a housing 138, an insulating material 140 (e.g., a polymer), at least one conductive rail 142, at least one power inlet module 144, at least one power outlet module 146, a strain relief mechanism, a mating section 148, an end cap 150, and / or a mounting mechanism. Not all embodiments feature all of these components, and some embodiments feature additional or different components.

[0104] In general, the modular power distribution assembly 136 can be mounted anywhere such that it can distribute power to at least one moveable building element 100 of the system. For example, the power distribution assembly 136 can be mounted and / or located on a floor, a wall, a ceiling, and / or another building or structural element. As described, in some cases the power distribution assembly forms or is located within the track 108 shown in FIG. 1 . For example, the power distribution assembly 136 may be installed along a wall parallel to the floor to enable horizontal movement, vertically (e.g., perpendicular to the floor) to enable vertical movement, at an angle, or in some cases in a non-linear path, depending on the path of movement desired for the element 100.

[0105] The housing 138 may have an extruded profile, which may be straight, curved, or have a form that conforms to a particular profile. The housing 138 may limit access (from humans and animals) to the conductive rails, making it suitable for use in home and office environments and avoiding the risk of electric shock or finger pinching. The housing 138 may contain an insulating liner 140 or be formed from an insulating material (e.g., a polymer). In some cases, one or more energized conductive rails 142 extend longitudinally along the housing 138 and are surrounded by the housing 138. The rails 142 may carry current to a power outlet module 146. In some embodiments, the rails 142 provide a low impedance path, e.g., less than 0.1 ohms, to a protective ground. In some cases, each rail 142 is surrounded by an insulating material / liner 140. For example, if the housing 138 is made from a conductive material, a layer of polymeric insulating material may coat each conductive rail 142 and insulate it from the housing 138. In some implementations, the housing 138 itself can be made from a conductive material and used as the conductive rail 142 .

[0106] In general, the power inlet module 144 can include any device that can transfer power to the conductive rail 142 and / or the power outlet module 146. Although only a single power inlet module 144 is shown in FIG. 9, any suitable number of power inlet modules 144 can be included. In general, the power inlet module 144 can be located anywhere along the housing 138, for example, at both ends of the housing 138. In some cases, end caps 150 are mounted on one or both ends of the housing 138 (e.g., ends within the power inlet module 144) to prevent access to the conductive rail and to ensure that the power outlet module 146 is mechanically contained, for example, for safety reasons. The power inlet module 144 can include an input connector such that the power inlet module 144 can be connected to an AC electrical system of the environment, an auxiliary AC power source, and / or an auxiliary DC power source. The power inlet module 144 can include internal routing that electrically couples the conductors of the input connector to the conductive rail 142. The power inlet module 144 may also mechanically enclose the live portion, which may be accessible on the input connector and internal routing. In some cases, the power inlet module 144 and / or the end cap 150 are replaced with a standard power outlet (e.g., based on the area in which the assembly is to be powered).

[0107] In various implementations, one or more power outlet modules 146 are movably mounted within the housing 138 to provide multiple power access points. As noted above, in some configurations, the system 10 can include multiple movable building elements 100 (e.g., two, three, four, or more). In such configurations, a separate power outlet module 146 can deliver power to each building element 100 (see FIG. 10 ). In other cases, a single power outlet module 146 can deliver power to more than one building element 100 (e.g., all of the building elements 100). In some configurations, one end of each power outlet module 146 is contained within the housing 138, for example, by inserting it into an open end of the housing 138, which is then closed with the power input module 144 and / or end cap 150. The other end of each power outlet module 146 can extend outwardly away from the housing 138. Each power outlet module 146 may include electrical coupling elements (e.g., conductive elements, printed wiring boards, individual wires, etc.) for routing power from the conductive rails 142 to the power outputs. The power outlet modules 146 may also include polymer components that insulate the electrical contacts and provide them with a means of mechanical support.

[0108] In some configurations, power cords can be used to transfer power from the power outlet modules 146 to the moveable building elements 100. For example, the power cords can be routed starting from the conductive rails 142 or from an external power supply (e.g., a wall outlet). In such configurations, each power outlet module 146 can include a strain relief mechanism to relieve strain on the cord of the power cable. For example, the strain relief mechanism can be attached to any or all of the moveable elements 100 to ensure that the power cables connected to the moveable elements 100 do not feel any of the force used to move the power outlet module 146 along the track 108. Any type of strain relief can be used, for example, a strain relief cord, a hook-and-eye device, and / or any mechanical attachment that transfers the force that moves the power outlet module 146 to the moveable element 100.

[0109] In some implementations, the power distribution assembly 136 can include a junction section 148 that can be inserted between two lengths of the housing 138 to extend the length of the power distribution system 136. For example, a power distribution assembly 136 over a given length can be assembled with multiple housings 138 and at least one junction section 148. Among other advantages, this can allow for easier shipping and assembly for assemblies over a certain length. The junction section 148 can have any configuration that allows power to be distributed from a first housing section to a second housing section. For example, each junction section 148 can include the same number of electrical contacts as the number of conductive rails 142 in the housing 138.

[0110] Any suitable mounting mechanism can be used to affix the power distribution assembly 136 to the build environment. For example, the mounting mechanism can include adhesive strips between the housing 138 and the build environment, mounting brackets between the housing 138, power inlet module 144, and / or end cap 150 and the build environment, high friction material between the housing 138 and the build environment, etc.

[0111] In some configurations, the system 10 can be moved by multiple drive elements 102 (e.g., drive wheels) located at desired locations based, for example, on the moment of inertia of the architectural element 100 and the desired movement profile. For example, one drive element 102 can be located on one side of the element 100 and another drive element 102 can be located on the other side of the element 100. In some cases, multiple drive elements 102 (e.g., multiple drive wheels) can be located on both sides of the element 100. In some embodiments, as shown in FIGS. 11A-B, the power distribution assembly 136 delivers power to only one or some of the drive elements 102, rather than all of the drive elements 102. For example, the power distribution assembly 136 may deliver power only to the motors 104 associated with the drive elements 102 on one side of the architectural element 100, rather than the other side of the element 100. In such cases, the unpowered drive element 102 can be indirectly driven by the powered drive element 102, similar to a front wheel in a rear wheel drive vehicle. In such cases, the unpowered drive element 102 can still travel along the track 108 and provide balance and / or guidance to the element 100. The sides of the element 100 need not be parallel as shown in Figures 11A-B.

[0112] In other implementations, the system 10 includes multiple power distribution assemblies 136 that deliver power to different drive elements 102. For example, as shown in Figures 12A-B, a first power distribution assembly 136a can deliver power to a motor associated with a drive element 102 on a first side of the architectural element 100, and a second power distribution assembly 136b can deliver power to a motor 104 associated with a drive element 102 on another side of the element 100. The sides of the element 100 need not be parallel as shown in Figures 12A-B. In some cases, multiple power distribution assemblies 136 can deliver power to the same drive element 102.

[0113] In some implementations, the moveable building element 100 itself can support additional power distribution assemblies 136 that may be parallel to the primary power distribution assembly 136, orthogonal to it, at another angle to it, or in a non-linear relationship to it, thus creating a multi-axis system with powered movement along each axis. In some cases, a power exit module 146 from the primary power distribution assembly may provide power input into the secondary power distribution assembly. In other cases, a cord may connect the two assemblies.

[0114] As described above, various embodiments of the system 10 include a plurality of movable building elements 100. In some cases, a first movable element 100a (e.g., a wall) can move along a first track 108a forming a first axis 152, and at least one additional movable element 100b (e.g., a bed, a desk, a couch, a closet, a shelf, etc.) can move along a second track 108b forming a second axis 154. In some cases, the second track 108b is attached to the first movable element 100a, for example, as shown in FIG. 13. In general, the first axis 152 and the second axis 154 can be arranged at any angle relative to each other, for example, parallel (FIG. 13), perpendicular, and at any other angle in any plane. In general, the first and second tracks 108a, 108b (and any additional tracks) can be arranged in any suitable configuration, for example, adjacent to one another on one side of the system 10, on an opposing side of the system 10, or both. In some cases, the motion of each moving element 100a, 100b can be independent of one another (either in the same or different directions). In other cases, the motion of each moving element 100a, 100b can be dependent on one another (either in the same or different directions). The motion of the moving elements 100a, 100b can be either in unison or out of unison.

[0115] In general, the first movable element 100a can be arranged in any relationship with the second movable element 100b. For example, the elements 100a, 100b can be horizontally adjacent (see, e.g., FIG. 10), vertically adjacent, and / or nested (see, e.g., FIGS. 13, 14A-B). In some cases, both (or all) movable elements can be driven by the same drive element 102. In other cases, the movable elements are driven by different drive elements 102. In some cases, the different drive elements are of the same type (e.g., both motors 104 are attached to drive wheels). In other cases, the different drive elements are different from each other. For example, in some configurations, the first movable element 100a can be driven by a motor 104 and the second movable element 100b can be driven by a friction drive 156. The friction drive can take any known form, including, for example, a drive wheel.

[0116] An example of this configuration is shown in Figure 15. In some cases, the friction drive 156 eliminates the need to route power to additional moving elements, allowing for ease of integration, field assembly / service, and / or lowering the cost of the system 10. Additionally, due to variability in the stall environment (e.g., floor variations, wall inconsistencies, etc.), the moving elements may be subject to inconsistencies and the friction drive 156 can provide increased resistance to such inconsistencies and unlimited travel length.

[0117] As shown in FIG. 15, the configuration can also include an adjustable mounting bracket 158. The drive wheel 156 can be rigidly coupled to the motor 104, which can be rigidly mounted to the adjustable mounting bracket 158. The adjustable mounting bracket can be adjusted with reference to the first moving element 100a (e.g., a wall chassis) during stalling or inspection to adjust the amount of force the drive wheel 156 exerts on the second moving element 100b (e.g., a furniture element), thus allowing the friction drive 156 to perform well across a wide range of manufacturing and assembly tolerances in the system and to account for wear over time. FIG. 16 shows the drive wheel 156 in contact with the second moving element 100b. In some embodiments, one of the moving elements 100a, 100b remains stationary and only the other moving element moves, for example, under any of the drives (e.g., motor drive, friction drive, etc.) described above.

[0118] Implementations of the subject matter and operations described herein can be implemented in digital electronic circuitry, including the structures disclosed herein and structural equivalents thereof, or in computer software, firmware, or hardware, or in a combination of one or more of them. Implementations of the subject matter described herein can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by or to control the operation of a data processing apparatus. Alternatively, or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to a suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be, or be included in, a computer readable storage device, a computer readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Furthermore, the computer storage medium is not a propagating signal, but the computer storage medium can be a source or destination of computer program instructions encoded within an artificially generated propagating signal. A computer storage medium can also be, or be contained within, one or more separate physical components or media (eg, multiple CDs, disks, or other storage devices).

[0119] The operations described herein may be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.

[0120] The term "data processing apparatus" encompasses all kinds of apparatus, devices, and machines for processing data, including, as examples, programmable processors, computers, systems on chips, or a plurality or combination of the foregoing. The apparatus may include special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program, such as code that constitutes a processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of these. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0121] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a single file dedicated to the program, or in multiple associated files (e.g., a file that stores one or more modules, subprograms, or portions of code), in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language resource). A computer program can be deployed to run on one computer, or on multiple computers located at one site, or distributed across multiple sites and interconnected by a communication network.

[0122] The processes and logic flows described herein can be implemented by one or more programmable processors executing one or more computer programs that perform actions by operating on input data and generating output. The processes and logic flows can also be implemented by special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit), and an apparatus can also be implemented as such.

[0123] Processors suitable for executing computer programs include, by way of example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. In general, a processor will receive instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for performing actions according to the instructions and one or more memory devices for storing instructions and data. In general, a computer will also include one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, or be operatively coupled to receive data from or transfer data to, or both. However, a computer need not have such devices. Furthermore, a computer can be embedded within another device, such as a smartphone, a smartwatch, a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name a few. Suitable devices for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, by way of example, semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices, magnetic disks, e.g., internal hard disks or removable disks, magneto-optical disks, and CD-ROMs and DVD-ROMs. The processor and memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0124] To provide interaction with a user, implementations of the subject matter described herein can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user, and a keyboard and pointing device, e.g., a mouse or trackball, by which the user may provide input to the computer. Other types of devices can be used to provide interaction with the user as well, e.g., feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback, and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, the computer can interact with the user by sending resources to and receiving resources from a device used by the user, e.g., by sending a web page to a web browser on the user's client device in response to a request received from the web browser.

[0125] Implementations of the subject matter described herein can be implemented within a computing system that includes a back-end component, e.g., as a data server, or includes a middleware component, e.g., an application server, or includes a front-end component, e.g., a client computer having a graphical user interface or web browser through which a user may interact with an implementation of the subject matter described herein, or includes any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communications network. Examples of communications networks include a local area network ("LAN"), a wide area network ("WAN"), an internetwork (e.g., the Internet), and a peer-to-peer network (e.g., an ad-hoc peer-to-peer network).

[0126] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on respective computers and having a client-server relationship to each other. In some implementations, a server transmits data (e.g., HTML pages) to a client device (e.g., for purposes of displaying the data to a user interacting with the client device and receiving user input therefrom). Data generated at the client device (e.g., the result of a user's interaction) can be received at the server from the client device.

[0127] One or more computer systems can be configured to perform particular operations or actions by having software, firmware, hardware, or a combination thereof installed on the system that, when operated, causes the system to perform the action. One or more computer programs can be configured to perform particular operations or actions by including instructions that, when executed by a data processing device, cause the device to perform an action.

[0128] Although this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather as descriptions of features specific to particular implementations of a particular invention. Certain features described herein in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation can also be implemented separately in multiple implementations or in any suitable subcombination. Furthermore, although features may be described above as acting in a combination and may be initially claimed as such, one or more features from the claimed combination may, in some cases, be deleted from the combination, and the claimed combination may also be subject to subcombinations or variations of the subcombination.

[0129] Similarly, although operations are depicted in the figures in a particular order, this should not be understood as requiring such operations to be performed in the particular order shown, or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In some situations, multitasking and parallel processing may be advantageous. Furthermore, it should be understood that the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and that the program components and systems described may generally be integrated together in a single software product or packaged into multiple software products.

[0130] Thus, particular implementations of the present subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some implementations, multitasking and parallel processing may be advantageous.

[0131] Each numerical value presented herein is considered to represent the minimum or maximum value within the range of the corresponding parameter. Thus, when added to the claims, the numerical value provides explicit support for claiming a range that may be above or below the numerical value in accordance with the teachings of this specification. All values ​​between the minimum and maximum values ​​within each numerical range presented herein are considered and explicitly supported herein, subject to the number of significant digits represented within each particular range. Absent inclusion in the claims, each numerical value presented herein is not to be considered limiting in any respect.

[0132] Unless expressly explained elsewhere in this application (e.g., use of the word "approximately" in reference to a geometric shape), as used herein, when the term "substantially" or "about" precedes a quantitative value, the present disclosure also includes the specific quantitative value itself, as well as a ±10% variation from the nominal value, unless otherwise indicated or inferred.

[0133] The terms and expressions employed herein are used as terms and expressions of description rather than of limitation, and the use of such terms and expressions is not intended to exclude any equivalents of the features or portions thereof shown and described. In addition, while certain embodiments of the present invention have been described, it will be apparent to those skilled in the art that other embodiments incorporating the concepts disclosed herein may be used without departing from the spirit and scope of the present invention. The structural features and functions of the various embodiments may be arranged in various combinations and permutations, all of which are considered to be within the scope of the disclosed invention. Unless otherwise required, the described steps in the various methods may be performed in any order and in some steps, and may be performed substantially simultaneously. Thus, the described embodiments are considered in all respects to be merely illustrative and not restrictive. Furthermore, the configurations described herein are intended to be illustrative and not limiting in any way. Similarly, physical descriptions are provided for illustrative purposes, but are not intended to be bound by or limit the claims according to any particular theory or mechanism.

Claims

[Claim 1] The invention described in this specification.