Object modeling

Technologies are generally described for a system and method effective to generate a model of a first object. In some examples, the method includes receiving location data relating to a location of a second object and orientation data relating to an orientation and rotational movement of the second object. In some examples, the method includes calculating line of sight data relating to a line of sight of a laser rangefinder in the second object. In some examples, the method includes receiving distance data relating to a distance between the second object and at least one point on the first object. In some examples, the method includes calculating an image data point relating to the first object, the image data point may be based on the location data, the line of sight data, and the distance data. In some examples, the model may be based on the image data point.

CROSS REFERENCE TO RELATED APPLICATION

This application is a U.S. National Stage filing under 35 U.S.C. §371 of International Application No. PCT/CN2010/077644 filed Oct. 11, 2010, the entirety of which is hereby incorporated by reference.

BACKGROUND

In modeling systems, a scanning device can be configured to scan a real world object and detect image data relating to the object. The image data may be used by a processor to construct a digital model of the object. The model can be used as a virtual representation of the real world object.

SUMMARY

In an example, a method for generating a model of a first object is described. In some examples, the method includes receiving, at a processor, location data relating to a location of a second object. In some examples, the method includes receiving, at the processor, orientation data. In some examples, the orientation data relates to an orientation of the second object and the orientation data relates to a rotational movement of the second object. In some examples, the method includes calculating, by the processor, line of sight data. In some examples, the line of sight data relates to a line of sight of a laser rangefinder disposed in the second object. In some examples, the line of sight data is based on the orientation data. In some examples, the method includes receiving, at the processor, distance data relating to a distance between the second object and at least one point on the first object. In some examples, the method includes calculating, by the processor, an image data point relating to the first object. In some examples, the image data point is based on the location data, the line of sight data, and the distance data. In some examples, the method includes generating, by the processor, the model based on the image data point.

In an example, a system effective to generate a model of a first object is described. In some examples, the system includes a second object and a processor. In some examples, the second object is effective to calculate location data relating to a location of the second object. In some examples, the second object is effective to calculate orientation data relating to an orientation of the second object. In some examples, the orientation data relates to a rotational movement of the second object. In some examples, the second object is effective to calculate distance data relating to a distance between the second object and at least one point on the first object. In some examples, the processor is effective to receive the location data, the orientation data, and the distance data. In some examples, the processor is effective to calculate line of site data relating to a line of sight of a laser rangefinder disposed in the second object. In some examples, the line of sight data is based on the orientation data. In some examples, the processor is effective to calculate an image data point of the first object based on the location data, the line of sight data, and the distance data. In some examples, the processor is effective to generate the model based on the image data point.

In an example, a first object effective to calculate image data relating to a second object is described. In some examples, the first object includes a global positioning system module. In some examples, the global positioning system module is effective to calculate location data relating to a location of the first object. In some examples, the first object includes a laser rangefinder. In some examples, the laser rangefinder is effective to calculate distance data relating to a distance between the first object and at least one point on the second object. In some examples, the first object includes an accelerometer. In some examples, the accelerometer is effective to calculate orientation data relating to an orientation of the first object. In some examples, the orientation data is related to a line of sight of the laser rangefinder and a rotational movement of the first object. In some examples, the first object includes a memory in communication with the global positioning system module, the laser rangefinder, and the accelerometer. In some examples, the memory is effective to receive and store the location data, the distance data, and the orientation data.

all arranged according to at least some embodiments described herein.

DETAILED DESCRIPTION

This disclosure is generally drawn, inter alia, to methods, apparatus, systems, devices, and computer program products related to object modeling.

Briefly stated, technologies are generally described for a system and method effective to generate a model of a first object. In some examples, the method includes receiving location data relating to a location of a second object and orientation data relating to an orientation and rotational movement of the second object. In some examples, the method includes calculating line of sight data relating to a line of sight of a laser rangefinder in the second object. In some examples, the method includes receiving distance data relating to a distance between the second object and at least one point on the first object. In some examples, the method includes calculating an image data point relating to the first object, the image data point may be based on the location data, the line of sight data, and the distance data. In some examples, the model may be based on the image data point.

FIG. 1illustrates some example systems that can be utilized to implement object modeling arranged in accordance with at least some embodiments described herein. In some examples, a system100may include an object106, a processor108, a memory130and/or a display104all in communication through one or more networks118. As discussed in more detail below, in some examples, object106may be thrown by a user102, as illustrated by a path132, near an object114and/or an object116. In some examples, object106may be configured to calculate image data112relating to objects114,116. Object106may be configured to send image data112to processor108. Processor108, based on instructions132in memory130, may be configured to process image data112and generate a model138of object114and/or object116. Model138may be stored in memory130and/or displayed as an image110on a display104.

FIG. 2illustrates some example systems that can be utilized to implement object modeling arranged in accordance with at least some embodiments described herein. The system ofFIG. 2is substantially similar to system100of FIG.1, with additional details. Those components inFIG. 2that are labeled identically to components ofFIG. 1will not be described again for the purposes of clarity.

In some examples, object106may generally be in the shape of a sphere, such as a ball, though any three dimensional object could be used. In an example, object106could be shaped and sized so that user102can throw object106with one hand. In some examples, object106may include at least one laser rangefinder122,124,126,130, an accelerometer128, a global positioning system module120, a processor134and/or a memory136all in communication. In an example, four laser rangefinders122,124,126,130may be disposed in object106to form a tetrahedron.

As mentioned above, in some examples, object106may be thrown by user102through path132. Object106may start at a starting point140. In an example, at starting point140, global positioning module120may be configured to calculate a location of starting point140. For example, global positioning system120may be configured to calculate a latitude, longitude and height of starting point140.

In an example, accelerometer128may be configured to calculate an orientation of object106at starting point140. For example, accelerometer128may be configured to calculate a direction from where the Earth's gravitational force acts on object106. In the example, accelerometer128further may be provided with locations of laser rangefinders122,124,126,130disposed in object106. Based on the location of laser rangefinders122,124,126,130disposed in object106and the direction of the Earth's gravitational force, accelerometer128may be configured to calculate an initial orientation of object106at starting point140. The initial orientation may be used to calculate respective lines of sight of laser rangefinders122,124,126and/or130.

In some examples, when object106is thrown, accelerometer128may be configured to detect rotational movements of object106. In some examples, based on the initial orientation and the detected rotational movements of object106, accelerometer128may be configured to determine orientation data146. Orientation data146may relate to an orientation of object106at any point along path132and may relate to respective lines of sight of laser rangefinders122,124,126and/or130. Accelerometer128may be configured to send orientation data146to processor134and/or memory136. In some examples, accelerometer128may be configured to determine location data144relating to a height of object106along path132based on a height at starting point140of object106and acceleration detected by accelerometer128. In some examples, accelerometer128may be configured to send location data144to processor134and/or memory136.

In some examples, global positioning system module120may be configured to calculate location data144relating to a location of object106at points along path132. In some examples, location data144may include a latitude, longitude, and/or height of object106at points along path132. In some examples, global positioning system module120may be configured to send location data144to processor134and/or memory136.

In some examples, laser rangefinders122,124,126,130may be configured to emit a laser beam along a line of sight and detect a reflection of the laser beam from points in objects114,116. Based on the reflections, laser rangefinders122,124,126,130may be configured to determine distance data142relating to a distance between object106and points in objects114,116capable of reflecting the laser beam. In some examples, laser rangefinders122,124,126,130may be configured to determine distance data142at points along path132. In some examples, laser rangefinders122,124,126and/or130may be configured to determine distance data142for distances below a defined threshold. For example, object106may be configured to determine distance data142for objects located less than the threshold distance from object106.

In some examples, processor134and/or memory136may be configured to receive image data112including distance data142, location data144and/or orientation data146. In some examples, processor108may be configured to receive image data112from processor134and/or memory136. In an example, processor108may be configured to retrieve image data112stored in memory136. In an example, processor134may be configured to transmit image data112to processor108such as through antenna148and/or by WI-FI or other wireless communication.

In some examples, processor108or processor134may be configured to calculate respective a lines of sight of laser rangefinders122,124,126,130based on orientation data146. In an example, processor108and/or processor134may be configured to process image data112to generate model138. For example, processor108or processor134may be configured to use instructions132in memory130or instructions133in memory136to process image data112to generate model138. Image data112may represent a cloud of digitized three-dimension points in object114or116. Processor108or processor134may be configured to use these digitized points to calculate or estimate surfaces or curves of object114or116. Model138may then be generated based on these surfaces or curves.

In some examples, as object106moves through path132, object106may move translationally and rotationally with respect to objects114,116. During this movement, lines of sight of laser rangefinders122,124,126and/or130may change. The laser rangefinders may receive reflections and calculate distance data142from multiple points in objects114,116. In some examples, processor108or processor134may be configured to calculate a sparse image data point cloud, with relatively few image data points, for objects114,116for each throw of object106. Multiple throws may be used to increase a density of the point cloud which may increase an accuracy of model138.

Among other possible benefits, a system in accordance with this disclosure may be used to generate a model of a building. The system may be used even in situations where modeling would otherwise be difficult such as in a battlefield or where large equipment used to scan tall buildings may not be easily accessible. A system in accordance with the disclosure may provide a quick, easy and/or portable method to calculate an image data point cloud of an object. The cloud may be used to generate an object model. Objects that may be difficult to model using other methods, such as a roof, or that are difficult to directly see by a user, can be modeled using the described system.

FIG. 3depicts a flow diagram for example processes for implementing object modeling in accordance with at least some embodiments described herein. The process inFIG. 3could be implemented using, for example, system100discussed above. An example process may include one or more operations, actions, or functions as illustrated by one or more of blocks S2, S4, S6, S8, S10and/or S12. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. Processing may begin at block S2.

At block S2, to model a first object, a processor may be configured to receive location data relating to a location of a second object. Block S2can be followed by block S4.

At block S4, the processor may be configured to receive orientation data. In some examples, the orientation data relates to an orientation of the second object and the orientation data relates to a rotational movement of the second object. Block S4can be followed by block S6.

At block S6, the processor may be configured to calculate line of sight data. In some examples, the line of sight data relates to a line of sight of a laser rangefinder disposed in the second object. In some examples, the line of sight data may be based on the orientation data. Block S6can be followed by block S8.

At block S8, the processor may be configured to receive distance data relating to a distance between the second object and at least one point on the first object. Block S8can be followed by block S10.

At block S10, the processor may be configured to calculate an image data point relating to the first object. In some examples, the image data point may be based on the location data, the line of sight data, and the distance data. Block S10can be followed by block S12. At block S12, the processor may be configured to generate the model based on the image data point.

FIG. 4illustrates computer program products for implementing object modeling arranged according to at least some embodiments described herein. Program product300may include a signal bearing medium302. Signal bearing medium302may include one or more instructions304that, when executed by, for example, a processor, may provide the functionality described above with respect toFIGS. 1-3. Thus, for example, referring to system100, one or more of processors134and/or108may undertake one or more of the blocks shown inFIG. 4in response to instructions304conveyed to the system100by medium302.

In some implementations, signal bearing medium302may encompass a computer-readable medium306, such as, but not limited to, a hard disk drive, a Compact Disc (CD), a Digital Versatile Disk (DVD), a digital tape, memory, etc. In some implementations, signal bearing medium302may encompass a recordable medium308, such as, but not limited to, memory, read/write (R/W) CDs, R/W DVDs, etc. In some implementations, signal bearing medium302may encompass a communications medium310, such as, but not limited to, a digital and/or an analog communication medium (e.g., a fiber optic cable, a waveguide, a wired communications link, a wireless communication link, etc.). Thus, for example, program product300may be conveyed to one or more modules of the system100by an RF signal bearing medium302, where the signal bearing medium302is conveyed by a wireless communications medium310(e.g., a wireless communications medium conforming with the IEEE 802.11 standard).

FIG. 5is a block diagram illustrating an example computing device that is arranged to implement object modeling arranged according to at least some embodiments described herein. In a very basic configuration402, computing device400typically includes one or more processors404and a system memory406. A memory bus408may be used for communicating between processor404and system memory406.

Depending on the desired configuration, processor404may be of any type including but not limited to a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. Processor404may include one more levels of caching, such as a level one cache410and a level two cache412, a processor core414, and registers416. An example processor core414may include an arithmetic logic unit (ALU), a floating point unit (FPLT), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller418may also be used with processor404, or in some implementations memory controller418may be an internal part of processor404.

Depending on the desired configuration, system memory406may be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. System memory406may include an operating system420, one or more applications422, and program data424.

Application422may include an object modeling algorithm426that is arranged to perform the functions as described herein including those described previously with respect toFIGS. 1-4. Program data424may include object modeling data428that may be useful for modeling objects as is described herein. In some embodiments, application422may be arranged to operate with program data424on operating system420such that modeling of objects may be provided. This described basic configuration402is illustrated inFIG. 5by those components within the inner dashed line.

Computing device400may have additional features or functionality, and additional interfaces to facilitate communications between basic configuration402and any required devices and interfaces. For example, a bus/interface controller430may be used to facilitate communications between basic configuration402and one or more data storage devices432via a storage interface bus434. Data storage devices432may be removable storage devices436, non-removable storage devices438, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard-disk drives (HDD), optical disc drives such as compact disc (CD) drives or digital versatile disc (DVD) drives, solid state drives (SSD), and tape drives to name a few. Example computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data.

System memory406, removable storage devices436and non-removable storage devices438are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile discs (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed by computing device400. Any such computer storage media may be part of computing device400.

Computing device400may also include an interface bus440for facilitating communication from various interface devices (e.g., output devices442, peripheral interfaces444, and communication devices446) to basic configuration402via bus/interface controller430. Example output devices442include a graphics processing unit448and an audio processing unit450, which may be configured to communicate to various external devices such as a display or speakers via one or more A/V ports452. Example peripheral interfaces444include a serial interface controller454or a parallel interface controller456, which may be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I/O ports458. An example communication device446includes a network controller460, which may be arranged to facilitate communications with one or more other computing devices462over a network communication link via one or more communication ports464.