The present disclosure generally relates to electronic devices that use sensors to scan physical environments to generate three dimensional (3D) models such as 3D floor plans.
Existing scanning systems and techniques may be improved with respect to assessing and using the sensor data obtained during scanning processes to generate 3D representations such as 3D floor plans representing physical environments.
Various implementations disclosed herein include devices, systems, and methods that provide multi-room 3D floor plans. For example, a multi-room 3D floor plan may be formed by combining 3D floor plans from multiple individual room scans. A 3D floor plan is a 3D representation of a room or other physical environment that generally identifies or otherwise represents 3D positions of one or more walls, floors, ceilings, or other boundaries or regions of the environment. Some implementations disclosed herein generate a 3D floor plan that identifies or otherwise represents 3D positions of windows, doors, and/or openings within the 3D floor plan, e.g., on the walls, floors, ceilings, or other regions. Some implementations generate a 3D floor plan that generally identifies or otherwise represents 3D positions of one or more walls, floors, ceilings, or other boundaries or regions of the environment as well as the 3D positions of tables, chairs, appliances, and other objects within the environment.
A combined, multi-room 3D floor plan may be generated from multiple 3D floor plans from distinct, non-contiguous room scans. In some implementations, combining 3D floor plans utilizes a process that captures sensor data of the first room during a first scan and then, during a second scan, re-localizes in the first room and tracks the device as the device moves (e.g., as the user walks) to the second room to scan the second room. In other implementations, combining 3D floor plans is based on user input, e.g., positioning the multiple 3D floor plans relative to one another based at least in part on a user positioning graphical representations of the floor plans relative to one another on a user interface.
In some implementations, a processor performs a method by executing instructions stored on a computer readable medium. The method generates a first three-dimensional (3D) floor plan of a first room of a multi-room environment based on a first 3D representation (e.g., a first 3D point cloud or 3D mesh) of one or more boundary features (e.g., walls, doors, windows, etc.) of the first room. The first 3D representation is generated based on a first scan. The method further generates a second 3D floor plan of a second room of the multi-room environment based on a second 3D representation (e.g., a second 3D point cloud or 3D mesh) of one or more boundary features (e.g., walls, doors, windows, etc.) of the second room. The second 3D representation is generated based on a second scan that is distinct from the first scan, i.e., tracking of scanning device position may not be continuous between the two scan and thus cannot be used to positionally associate the scans with one another. The method determines a 3D positional relationship between the first 3D floor plan and the second 3D floor plan. An automatic re-localization and/or manual alignment process may be used to determine the 3D positional relationship so that the 3D floor plans can be aligned in 3D space, i.e., the same 3D coordinate system. The 3D positional relationship between the 3D floor plans may be adjusted by an improvement or optimization post process. The method generates a combined 3D floor plan based on the determined 3D positional relationship between the first 3D floor plan and the second 3D floor plan.
In accordance with some implementations, a device includes one or more processors, a non-transitory memory, and one or more programs; the one or more programs are stored in the non-transitory memory and configured to be executed by the one or more processors and the one or more programs include instructions for performing or causing performance of any of the methods described herein. In accordance with some implementations, a non-transitory computer readable storage medium has stored therein instructions, which, when executed by one or more processors of a device, cause the device to perform or cause performance of any of the methods described herein. In accordance with some implementations, a device includes: one or more processors, a non-transitory memory, and means for performing or causing performance of any of the methods described herein.
So that the present disclosure can be understood by those of ordinary skill in the art, a more detailed description may be had by reference to aspects of some illustrative implementations, some of which are shown in the accompanying drawings.
In accordance with common practice the various features illustrated in the drawings may not be drawn to scale. Accordingly, the dimensions of the various features may be arbitrarily expanded or reduced for clarity. In addition, some of the drawings may not depict all of the components of a given system, method or device. Finally, like reference numerals may be used to denote like features throughout the specification and figures.
Numerous details are described in order to provide a thorough understanding of the example implementations shown in the drawings. However, the drawings merely show some example aspects of the present disclosure and are therefore not to be considered limiting. Those of ordinary skill in the art will appreciate that other effective aspects and/or variants do not include all of the specific details described herein. Moreover, well-known systems, methods, components, devices and circuits have not been described in exhaustive detail so as not to obscure more pertinent aspects of the example implementations described herein.
The electronic device 110 includes one or more cameras, microphones, depth sensors, motion sensors, or other sensors that can be used to capture information about and evaluate the physical environment 100. The obtained sensor data may be used to generate a 3D representation, such as a 3D point cloud, a 3D mesh, or a 3D floor plan.
In one example, the user 102 moves around the physical environment 100 and device 110 captures sensor data from which one or more 3D floor plans of the physical environment 100 are generated. The device 110 may be moved to capture sensor data from different viewpoints, e.g., at various distances, viewing angles, heights, etc. The device 110 may provide information to the user 102 that facilitates the environment scanning process. For example, the device 110 may provide a view from a camera showing the content of RGB images currently being captured, e.g., a live camera feed, during the room scanning process. As another example, the device 110 may provide a view of a live 3D point cloud or a live 3D floor plan to facilitate the scanning process or otherwise provides feedback that informs the user 102 of which portions of the physical environment 100 have already been captured in sensor data and which portions of the physical environment 100 require more sensor data in order to be represented accurately in a 3D representation and/or 3D floor plan.
The device 110 performs a scan of the first room 190 to capture data from which a first 3D floor plan 300 (
In alternative implementations, a 3D mesh is generated in which points of the 3D mesh have 3D coordinates such that groups of the mesh points identify surface portions, e.g., triangles, corresponding to surfaces of the first room 190 of the physical environment 100. Such points and/or associated shapes (e.g., triangles) may be associated with color, surface normal directions, and/or semantic labels.
In the example of
The 3D point cloud 200 may be used to identify one or more boundaries and/or regions (e.g., walls, floors, ceilings, etc.) within the first room 190 of the physical environment 100. The relative positions of these surfaces may be determined relative to the physical environment 100 and/or the 3D point-based representation 200. In some implementations, a plane detection algorithm, machine learning model, or other technique is performed using sensor data and/or a 3D point-based representation (such as 3D point cloud 200). The plane detection algorithm may detect the 3D positions in a 3D coordinate system of one or more planes of physical environment 100. The detected planes may be defined by one or more boundaries, corners, or other 3D spatial parameters. The detected planes may be associated with one or more types of features, e.g., wall, ceiling, floor, table-top, counter-top, cabinet front, etc., and/or may be semantically labelled. Detected planes associated with certain features (e.g., walls, floors, ceilings, etc.) may be analyzed with respect to whether such planes include windows, doors, and openings. Similarly, the 3D point cloud 200 may be used to identify one or more boundaries or bounding boxes around one or more objects, e.g., bounding boxes corresponding to table 170 and plant 180.
The 3D point cloud 200 is used to generate first floor plan 300 (as illustrated in
A similar (but distinct) scanning process is used to generate a second floor plan 600 (as illustrated in
As described, the first 3D floor plan 300 of
Given a determined positional relationship between multiple, distinct 3D floor plans, the 3D floor plans can be combined (e.g., stitched together into a single representation) to form a single, combined 3D floor plan.
As illustrated in
In some implementations, a user interface guides the user to start the second scan in a previously-scanned room (e.g., in the first room 810), guides the user to obtain re-localization data (e.g., by walking around or moving the device to capture sensor data of the previously-scanned room), and/or notifies the user once localization is complete, e.g., with guidance to move to a second room to generate a second 3D floor plan of the second room.
As illustrated in
The re-localization and subsequent tracking of movement from the first room 810 to the second room 820 provides data than enables determining a positional relationship between the 3D floor plans generated from the first and second scans.
As illustrated in
As illustrated in
As illustrated in
In some implementations, processing logic examines walls, windows, doors, and other features of adjacent rooms and proposes one or more potential adjacent room combinations to the user and the user selects from the one or more proposals or provides input specifying a custom combination.
In some implementations, the user manually repositions one or more of the 3D floor plans 300, 600 on a user interface and need only roughly position the 3D floor plans relative to one another. Fine positioning of the 3D floor plans relative to one another may be handled automatically based on the rough relative positioning. This may reduce the amount of user input/time required and/or provide a better user experience. Automatic movements of the 3D floor plans 300, 600 may include animations, sounds (e.g., a snapping sound as the 3D floor plans are “snapped” into adjacent positions), and/or provide guidance and feedback to make the determination of a positional relationship based on user input an efficient and desirable user experience.
Merging/Improving block 1030 performs a room update at block 1032, which may move or rotate the individual 3D floor plans relative to one another, e.g., to make walls parallel and/or perpendicular, hallways straight, etc. At block 1034 the process merges merge elements (e.g., planes representing adjacent walls). This may be based on the groupings from block 1020. Merging of wall planes may assume a wall thickness. For example, wall thickness may be based on the geographic location of the house, e.g., walls in the Florida may be expected to have a thickness of X inches, etc.
At block 1034 the process also updates corners of elements of adjacent rooms to align with one another. One or more optimization processes may be used. For example, such an optimization may use constraints from the groupings and iterative rotate and/or move each of the 3D floor plans to minimize error/distance measures. Each 3D floor plan may (or may not) be treated as a rigid body during such optimizations. Such optimizations may improve alignment and reduce erroneous gaps between adjacent 3D floor plan elements in the combined 3D floor plan.
At block 1036, wall elements (e.g., windows, doors, etc.) are reprojected onto any walls that were merged at block 1034. These elements may have (prior to the wall merging) been positioned on different planes and thus the merging may leave them “floating” in space. The wall elements (e.g., doors, windows, etc.) are reprojected onto the merged wall location can address this “floating” disconnected appearance. Reprojecting may involve calculating an orthographic projection onto the new merged wall position. At block 1040, a standardization process is executed to give the combined 3D floor plan a standardized appearance.
The process 1000 may improve a combined 3D floor plan in various ways. It may remove the appearance of double walls, align corners, and align other elements so that the combined 3D floor plan has an appearance that is accurate, easy to understand, and that is otherwise consistent with user expectations.
At block 1102, the method 1100 generates a first 3D floor plan of a first room of a multi-room environment based on a first 3D representation (e.g., point cloud/mesh) of one or more boundary features (e.g., walls, doors, windows, etc.) of the first room. This first 3D representation is determined based on a first scan.
At block 1104, the method 1100 generates a second 3D floor plan of a second room of the multi-room environment based on a second 3D representation (e.g., point cloud/mesh) of one or more boundary features (e.g., walls, doors, windows, etc.) of the second room. The second 3D representation is determined based on a second scan that is distinct from the first scan. The position of the one or more scanning devices that are used for the first and second scan may not be continuous or may otherwise be unavailable for use to positionally associate the distinct scans with one another.
At block 1106, the method 1100 determines a 3D positional relationship between the first 3D floor plan and the second 3D floor plan. Such a determination may be desirable, for example, in circumstances in which scanning device position changes between scans are not available for use in positionally associating the distinct scans with one another.
Some implementations provide an automatic or semi-automatic method of determining the 3D positional relationship between the first 3D floor plan and the second 3D floor plan, e.g., as illustrated in
In some implementations, determining the 3D positional relationship between the first 3D floor plan and the second 3D floor plan comprises, during the second scanning process, re-localizing a scanning device in the first room and tracking a position of the scanning device as the scanning device moves from the first room to the second room. Determining the 3D positional relationship may involve, during the second scanning process, tracking the position of the scanning device as the scanning device moves from one story to another story of multiple stories in the multi-room environment. Such tracking may involve use of motion sensors and/or visual inertial odometry (VIO) based on images captured by the scanning device during the second scan. In some implementations, the method 1100 initiates capture of sensor data for the second scan based on determining that the scanning device is within the second room based on detecting a new room automatically and/or based on user input.
Some implementations provide a process that involve manual input (e.g., movement of representations) on a user interface to determine the 3D positional relationship between the first 3D floor plan and the second 3D floor plan, e.g., as illustrated in
In some implementations, determining the 3D positional relationship between the 3D floor plans involves determining preliminary 3D positional relationship and adjusting the preliminary 3D positional relationship based on an optimization using one or more constraints. For example, the one or more constraints may comprise one or more constraints corresponding to a difference between representations of a door between adjacent rooms, a difference between representations of a window between adjacent rooms, or a difference between representations of a wall between adjacent rooms.
At block 1108, the method generates a combined 3D floor plan based on the determined 3D positional relationship between the first 3D floor plan and the second 3D floor plan. Generating the combined 3D floor plan can improve the combined 3D floor plan as described with respect to
In some implementations, the one or more communication buses 1204 include circuitry that interconnects and controls communications between system components. In some implementations, the one or more I/O devices and sensors 1206 include at least one of an inertial measurement unit (IMU), an accelerometer, a magnetometer, a gyroscope, a thermometer, one or more physiological sensors (e.g., blood pressure monitor, heart rate monitor, blood oxygen sensor, blood glucose sensor, etc.), one or more microphones, one or more speakers, a haptics engine, one or more depth sensors (e.g., a structured light, a time-of-flight, or the like), and/or the like.
In some implementations, the one or more output device(s) 1212 include one or more displays configured to present a view of a 3D environment to the user. In some implementations, the one or more displays 1212 correspond to holographic, digital light processing (DLP), liquid-crystal display (LCD), liquid-crystal on silicon (LCoS), organic light-emitting field-effect transitory (OLET), organic light-emitting diode (OLED), surface-conduction electron-emitter display (SED), field-emission display (FED), quantum-dot light-emitting diode (QD-LED), micro-electromechanical system (MEMS), and/or the like display types. In some implementations, the one or more displays correspond to diffractive, reflective, polarized, holographic, etc. waveguide displays. In one example, the device 1200 includes a single display. In another example, the device 1200 includes a display for each eye of the user.
In some implementations, the one or more output device(s) 1212 include one or more audio producing devices. In some implementations, the one or more output device(s) 1212 include one or more speakers, surround sound speakers, speaker-arrays, or headphones that are used to produce spatialized sound, e.g., 3D audio effects. Such devices may virtually place sound sources in a 3D environment, including behind, above, or below one or more listeners. The one or more output device(s) 1212 may additionally or alternatively be configured to generate haptics.
In some implementations, the one or more image sensor systems 1214 are configured to obtain image data that corresponds to at least a portion of a physical environment. For example, the one or more image sensor systems 1214 may include one or more RGB cameras (e.g., with a complimentary metal-oxide-semiconductor (CMOS) image sensor or a charge-coupled device (CCD) image sensor), monochrome cameras, IR cameras, depth cameras, event-based cameras, and/or the like. In various implementations, the one or more image sensor systems 1214 further include illumination sources that emit light, such as a flash. In various implementations, the one or more image sensor systems 1214 further include an on-camera image signal processor (ISP) configured to execute a plurality of processing operations on the image data.
The memory 1220 includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices. In some implementations, the memory 1220 includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. The memory 1220 optionally includes one or more storage devices remotely located from the one or more processing units 1202. The memory 1220 comprises a non-transitory computer readable storage medium.
In some implementations, the memory 1220 or the non-transitory computer readable storage medium of the memory 1220 stores an optional operating system 1230 and one or more instruction set(s) 1240. The operating system 1230 includes procedures for handling various basic system services and for performing hardware dependent tasks. In some implementations, the instruction set(s) 1240 include executable software defined by binary information stored in the form of electrical charge. In some implementations, the instruction set(s) 1240 are software that is executable by the one or more processing units 1202 to carry out one or more of the techniques described herein.
The instruction set(s) 1240 include a floor plan instruction set 1242 configured to, upon execution, obtain sensor data, provide views/representations, select sets of sensor data, and/or generate 3D point clouds, 3D meshes, 3D floor plans, and/or other 3D representations of physical environments as described herein. The instruction set(s) 1240 further include a positional relationship instruction set 1244 configured to determine positional relationships between multiple 3D floor plans as described herein. The instruction set(s) 1240 may be embodied as a single software executable or multiple software executables.
Although the instruction set(s) 1240 are shown as residing on a single device, it should be understood that in other implementations, any combination of the elements may be located in separate computing devices. Moreover, the figure is intended more as functional description of the various features which are present in a particular implementation as opposed to a structural schematic of the implementations described herein. As recognized by those of ordinary skill in the art, items shown separately could be combined and some items could be separated. The actual number of instructions sets and how features are allocated among them may vary from one implementation to another and may depend in part on the particular combination of hardware, software, and/or firmware chosen for a particular implementation.
It will be appreciated that the implementations described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope includes both combinations and sub combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art.
As described above, one aspect of the present technology is the gathering and use of sensor data that may include user data to improve a user's experience of an electronic device. The present disclosure contemplates that in some instances, this gathered data may include personal information data that uniquely identifies a specific person or can be used to identify interests, traits, or tendencies of a specific person. Such personal information data can include movement data, physiological data, demographic data, location-based data, telephone numbers, email addresses, home addresses, device characteristics of personal devices, or any other personal information.
The present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used to improve the content viewing experience. Accordingly, use of such personal information data may enable calculated control of the electronic device. Further, other uses for personal information data that benefit the user are also contemplated by the present disclosure.
The present disclosure further contemplates that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information and/or physiological data will comply with well-established privacy policies and/or privacy practices. In particular, such entities should implement and consistently use privacy policies and practices that are generally recognized as meeting or exceeding industry or governmental requirements for maintaining personal information data private and secure. For example, personal information from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of those legitimate uses. Further, such collection should occur only after receiving the informed consent of the users. Additionally, such entities would take any needed steps for safeguarding and securing access to such personal information data and ensuring that others with access to the personal information data adhere to their privacy policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices.
Despite the foregoing, the present disclosure also contemplates implementations in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware or software elements can be provided to prevent or block access to such personal information data. For example, in the case of user-tailored content delivery services, the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services. In another example, users can select not to provide personal information data for targeted content delivery services. In yet another example, users can select to not provide personal information, but permit the transfer of anonymous information for the purpose of improving the functioning of the device.
Therefore, although the present disclosure broadly covers use of personal information data to implement one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the need for accessing such personal information data. That is, the various embodiments of the present technology are not rendered inoperable due to the lack of all or a portion of such personal information data. For example, content can be selected and delivered to users by inferring preferences or settings based on non-personal information data or a bare minimum amount of personal information, such as the content being requested by the device associated with a user, other non-personal information available to the content delivery services, or publicly available information.
In some embodiments, data is stored using a public/private key system that only allows the owner of the data to decrypt the stored data. In some other implementations, the data may be stored anonymously (e.g., without identifying and/or personal information about the user, such as a legal name, username, time and location data, or the like). In this way, other users, hackers, or third parties cannot determine the identity of the user associated with the stored data. In some implementations, a user may access their stored data from a user device that is different than the one used to upload the stored data. In these instances, the user may be required to provide login credentials to access their stored data.
Numerous specific details are set forth herein to provide a thorough understanding of the claimed subject matter. However, those skilled in the art will understand that the claimed subject matter may be practiced without these specific details. In other instances, methods apparatuses, or systems that would be known by one of ordinary skill have not been described in detail so as not to obscure claimed subject matter.
Unless specifically stated otherwise, it is appreciated that throughout this specification discussions utilizing the terms such as “processing,” “computing,” “calculating,” “determining,” and “identifying” or the like refer to actions or processes of a computing device, such as one or more computers or a similar electronic computing device or devices, that manipulate or transform data represented as physical electronic or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the computing platform.
The system or systems discussed herein are not limited to any particular hardware architecture or configuration. A computing device can include any suitable arrangement of components that provides a result conditioned on one or more inputs. Suitable computing devices include multipurpose microprocessor-based computer systems accessing stored software that programs or configures the computing system from a general-purpose computing apparatus to a specialized computing apparatus implementing one or more implementations of the present subject matter. Any suitable programming, scripting, or other type of language or combinations of languages may be used to implement the teachings contained herein in software to be used in programming or configuring a computing device.
Implementations of the methods disclosed herein may be performed in the operation of such computing devices. The order of the blocks presented in the examples above can be varied for example, blocks can be re-ordered, combined, and/or broken into sub-blocks. Certain blocks or processes can be performed in parallel.
The use of “adapted to” or “configured to” herein is meant as open and inclusive language that does not foreclose devices adapted to or configured to perform additional tasks or steps. Additionally, the use of “based on” is meant to be open and inclusive, in that a process, step, calculation, or other action “based on” one or more recited conditions or values may, in practice, be based on additional conditions or value beyond those recited. Headings, lists, and numbering included herein are for ease of explanation only and are not meant to be limiting.
It will also be understood that, although the terms “first,” “second,” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first node could be termed a second node, and, similarly, a second node could be termed a first node, which changing the meaning of the description, so long as all occurrences of the “first node” are renamed consistently and all occurrences of the “second node” are renamed consistently. The first node and the second node are both nodes, but they are not the same node.
The terminology used herein is for the purpose of describing particular implementations only and is not intended to be limiting of the claims. As used in the description of the implementations and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting,” that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true]” or “if [a stated condition precedent is true]” or “when [a stated condition precedent is true]” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
The foregoing description and summary of the invention are to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined only from the detailed description of illustrative implementations but according to the full breadth permitted by patent laws. It is to be understood that the implementations shown and described herein are only illustrative of the principles of the present invention and that various modification may be implemented by those skilled in the art without departing from the scope and spirit of the invention.
This application claims the benefit of U.S. Provisional Application Ser. No. 63/348,720 filed Jun. 3, 2022, which is incorporated herein in its entirety.
Number | Date | Country | |
---|---|---|---|
63348720 | Jun 2022 | US |