US20020152006A1 - Programmable smart membranes and methods therefor - Google Patents
Programmable smart membranes and methods therefor Download PDFInfo
- Publication number
- US20020152006A1 US20020152006A1 US09/835,323 US83532301A US2002152006A1 US 20020152006 A1 US20020152006 A1 US 20020152006A1 US 83532301 A US83532301 A US 83532301A US 2002152006 A1 US2002152006 A1 US 2002152006A1
- Authority
- US
- United States
- Prior art keywords
- membrane
- function
- module
- module units
- recited
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/002—Biomolecular computers, i.e. using biomolecules, proteins, cells
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S977/00—Nanotechnology
- Y10S977/70—Nanostructure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S977/00—Nanotechnology
- Y10S977/902—Specified use of nanostructure
- Y10S977/962—Specified use of nanostructure for carrying or transporting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10T—TECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
- Y10T403/00—Joints and connections
- Y10T403/34—Branched
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10T—TECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
- Y10T403/00—Joints and connections
- Y10T403/34—Branched
- Y10T403/341—Three or more radiating members
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10T—TECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
- Y10T403/00—Joints and connections
- Y10T403/34—Branched
- Y10T403/341—Three or more radiating members
- Y10T403/342—Polyhedral
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10T—TECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
- Y10T403/00—Joints and connections
- Y10T403/34—Branched
- Y10T403/341—Three or more radiating members
- Y10T403/345—Coplanar
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10T—TECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
- Y10T403/00—Joints and connections
- Y10T403/34—Branched
- Y10T403/347—Polyhedral
Definitions
- This invention is directed to apparatus and methods relating to programmable smart membranes and methods therefor.
- micromachined sorters include micromachined sorters.
- U.S. Pat. No. 5,655,665 discloses a micromachined magnetic particle manipulator and separator for magnetic particles suspended in fluid.
- micromachined sorter is disclosed in U.S. Pat. No. 5,893,974, wherein a micro scale passive filter is disclosed having sufficiently small holes to permit the passage of small desired biomolecules and at the same time prevent the passage of all larger molecules such as antibodies.
- Another related art micromachined sorter includes the passive particle sorter disclosed by M. Koch, C. Schabmueller, A. G. R. Evans, A. Brunnschweiler, “A Micromachined Particle Sorter: Principle and Technology”, Tech. Digest, Eurosensors XII, Southampton, UK, Sep. 13-16, 1998.
- Nanometer scale membranes include nanometer scale membranes.
- Yoshihiro Ito “Signal-responsive Gating by a Polyelectrolyte Pelage on a Nanoporous Membrane”, Nanotechnology, pp 205-207, Vol. 9 No. 3, September 1998, discloses a nanometer scale active membrane wherein the rate of water permeation through the membrane is controlled by pH levels and ionic strength.
- Drexler discloses a design for a unidirectional active molecule sorter capable of transporting specific molecules across a barrier. Drexler mentions the possibility of a version of this design which can change the specificity of the transported molecules by using an elastic deformation of the receptor or altering the local charge distribution around the receptor.
- the invention provides a programmable smart membrane and methods therefor that overcome the deficiencies and shortfalls of the prior art.
- the invention provides a programmable smart membrane that is capable of being programmed so as to reject, transport, or absorb objects depending on features of the objects.
- the invention separately provides the control software for a programmable smart membrane.
- the invention separately provides a programmable smart membrane that separates two or more regions.
- the invention separately provides a programmable smart membrane that separates a region and provides one-way filtering into or out of that region.
- the invention separately provides a programmable smart membrane that separates a region and provides two-way filtering into and out of that region by transporting objects in both directions through the membrane.
- the invention separately provides a programmable smart membrane that is planar.
- the invention separately provides a programmable smart membrane that separates three-dimensional regions.
- the invention separately provides a programmable smart membrane that works with a single object at a time.
- the invention separately provides a programmable smart membrane that works with multiple objects simultaneously.
- the invention separately provides a programmable smart membrane that is programmable and reprogrammable to reject, transport, or absorb objects based on a diverse set of properties of the objects.
- the invention separately provides a programmable smart membrane that has diverse applications.
- the invention separately provides a programmable smart membrane that sorts parts on a macro scale level.
- the invention separately provides a programmable smart membrane that purifies substances and augments biochemical processes on a nanometer scale level.
- the invention separately provides control software for a programmable smart membrane that includes both identical and non-identical module units.
- the invention separately provides a control software for a programmable smart membrane that is generated by evolutionary techniques.
- the invention separately provides decentralized control software for a programmable smart membrane.
- the invention separately provides control software for a programmable smart membrane that scales with the number of module units in the membrane and the number of objects to be filtered, both in sequence and simultaneously.
- the invention separately provides control software for a programmable smart membrane which is functional under various configurations of its modules and the objects to be filtered.
- the invention separately provides a programmable smart membrane that includes a plurality of sliding robotic modules.
- the invention separately provides a programmable smart membrane that includes a plurality of rotating robotic modules.
- the invention separately provides a programmable smart membrane that includes a plurality of compressible robotic modules.
- the invention separately provides a programmable smart membrane that uses control software found using a fitness function.
- the invention separately provides a programmable smart membrane that can sort, filter, and/or absorb objects based on at least one of the following properties of the objects: color; size; shape; temperature; density; weight; stiffness; elasticity; charge; force; reflectivity; magnetic flux; conductivity; frictionality; compressibility; movement of the objects being filtered; communication with the object; the way any of the above attributes change over time; and the way any of the above attributes vary across the object.
- the invention separately provides a programmable smart membrane that continues to perform a desired task in the presence of various failures or noise in or inaccuracy of sensors, motors, power, and changing or unknown environmental conditions.
- the invention separately provides a programmable smart membrane that continues to perform a desired task in spite of the failure of a motor in one or several of the module units.
- the invention separately provides a programmable smart membrane that continues to perform a desired task in spite of the failure of a sensor in one or several of the module units.
- the invention separately provides a programmable smart membrane that continues to perform a desired task in spite of power loss in one or several of the module units.
- the invention separately provides a programmable smart membrane that continues to perform a desired task in spite of inaccurate sensor readings by sensors in one or several of the module units.
- the invention separately provides a programmable smart membrane, including 2D sliding robots, that sorts objects based on color.
- FIGS. 1 A- 1 C are schematics of an exemplary embodiment of a smart membrane according to the invention that filters objects
- FIGS. 2 A- 2 C are schematics of another exemplary embodiment of a smart membrane according to the invention that filters objects bi-directionally;
- FIGS. 3 A- 3 C are schematics of another exemplary embodiment of a smart membrane according to the invention that sorts objects
- FIGS. 4 A- 4 C are schematics of another exemplary embodiment of a smart membrane according to the invention that absorbs objects
- FIG. 5 is a block diagram of one exemplary embodiment of a module unit of an exemplary smart membrane according to the invention, wherein a module control circuit is disposed within the module unit;
- FIG. 6 is a block diagram of another exemplary embodiment of a module unit of an exemplary smart membrane according to the invention, wherein a module control circuit is not disposed within the module unit;
- FIG. 7 is a schematic of an exemplary embodiment of a modular robotic smart membrane according to the invention.
- FIG. 8 is a flowchart of one exemplary embodiment for constructing a software program for a module unit of a smart membrane, according to the invention.
- FIG. 9 is a schematic of another exemplary embodiment of a modular robotic smart membrane according to the invention.
- FIGS. 10 A- 10 C are schematics displaying a single movement of exemplary robotic modules
- FIGS. 11 A- 11 B are schematics displaying a line movement of exemplary robotic modules
- FIGS. 12 A- 12 C are schematics displaying the smart membrane of FIG. 9 in an initial stage, an intermediary stage and a subsequent stage of filtering an object;
- FIG. 13 is a schematic of another exemplary embodiment of modular robotic smart membrane according to the invention.
- the invention is a programmable membrane and methods therefor that overcome the deficiencies and short falls of the related art.
- the invention includes a smart membrane that can be programmed to reject, transport, and/or absorb items depending on features or attributes of the items.
- the smart membrane of the invention includes a plurality of module units.
- the overall smart membrane is self-reconfigurable in that it can reconfigure without any external aid.
- Each module unit performs functions based on information about its environment.
- Each module unit communicates with and moves in relation to its neighboring module units in order to accomplish an overall task for the entire membrane, such as filtering.
- the function performed by the module units are based on a control program/method.
- FIGS. 1 A- 1 C display an exemplary embodiment of a smart membrane 100 according to the invention.
- the smart membrane 100 includes a plurality of module units 110 .
- the smart membrane 100 in this exemplary embodiment is functioning as a one-way filter. It should be appreciated that in other various exemplary embodiments, a smart membrane according to the invention can also function to filter multi-directionally, and sort and capture/absorb objects, as shown in FIGS. 2 A- 2 C, 3 A- 3 C and 4 A- 4 C, respectively.
- the smart membrane 100 filters objects to allow objects with a first attribute 120 to pass the membrane 100 and to stop objects with a second attribute 130 from passing the membrane 100 .
- Objects with the first attribute 120 are displayed as triangles and objects with the second attribute 130 are displayed as circles for discussion purposes only.
- FIG. 1A displays an initial stage of the filtering
- FIG. 1B displays an intermediate stage of the filtering
- FIG. 1C displays a final stage of the filtering.
- temporary transport channels 140 are created by actions of the module units 110 .
- the temporary channels 140 allow the objects 120 and 130 to pass through the membrane 100 .
- the module units 110 are identical. However, it should be appreciated that in other various exemplary embodiments, the module units 110 are not all identical.
- the module units 110 operate based on identical sets of instructions or methods. However, it should be understood that in other various exemplary embodiments, less than all of the module units 110 operate based on the identical method.
- Each of the module units 110 obtain information about the environment around the module unit.
- the information is local information.
- the local information is information about the immediate environment around a module unit.
- the information is global information from all of the module units, i.e. the membrane's environment.
- the method of obtaining the information can vary based on each application of the membrane.
- the information is obtained by a physical touching between the module and the environment, which may include neighboring module units.
- the information is obtained by an electrical connection between a module unit and the environment, which may include neighboring module units.
- the information is obtained by sensors.
- the sensors may be any known or later developed sensors or sensing devices and/or methods.
- the sensors are disposed on and/or in the module units.
- the sensors are for detecting the objects 120 and 130 and/or the bounds of the environment for the membrane 100 .
- the sensors are infrared sensors.
- the information is obtained by a module unit communicating with the environment.
- the module units communicate with one another.
- the module units only communicate with immediately adjacent module units.
- the module units communicate with the objects 120 and 130 and/or the bounds of the environment. Any known or later developed methods and/or devices for communication may be used.
- the communication is conducted by wireless communication.
- the module units may include only sensors, communication devices or both. It should also be appreciated that the sensors and the communication devices may be combined into a single device. Further, it should be appreciated that in various exemplary embodiments, the information obtained via devices for sensing and communicating may include such properties of the objects as, but not limited to: color; size; shape; temperature; density; weight; stiffness; elasticity; charge; force; reflectivity; magnetic flux; conductivity; frictionality; compressibility; movement; communication with the objects; the way any of the above attributes change over time; and the way any of the above attributes vary across the object.
- the information obtained by the module units is processed based on the control method that the module units 110 are to follow for their respective functions.
- the processing of the information results in function instructions for the respective module unit 110 .
- the function instructions are instructions for the module unit 110 to perform a particular function or functions.
- the function instructions also include a non-function instruction, which instructs a module unit 110 not to perform any function.
- the function instructions are movement, communication, and internal state change instructions.
- the function instructions could include a variety of actions/functions.
- the functions include, but are not limited to: to communicate with the environment, to connect with another module unit, to not move, and/or to change an internal state of the module unit.
- the function instructions are effector instructions for the respective module unit 110 .
- a module unit having a faceplate for latching may attach to or detach from a neighboring module unit, for example by latching or unlatching its faceplate to the faceplate of an adjacent module unit.
- the function instructions are communication instructions for the respective module unit 110 .
- module units may send and receive messages to other module units. These messages can include the sharing of any type of information, requests for information, etc.
- the function instructions are instructions for changing the internal state of a module unit, including but not limited to changing the contents of an internal memory for the respective module unit 110 , such as, storing the results of calculations, sensor readings, or planned actions for future reference.
- the movement of each module unit is limited to a set of predefined limitations.
- the module units may have physical structures that limit the movement of the module units 110 .
- the movement limitations may be set in an attempt to keep the module units together as a group.
- An example of a specific movement limitation is that a module unit can only move when it is adjacent to at least one other module unit.
- the method that the individual module units 110 are following will determine how the module units 110 behave collectively.
- the control method in various exemplary embodiments is a computer program.
- the computer program is developed using genetic programming techniques, such as but not limited to, the automatic control program generation techniques disclosed in copending U.S. patent application Ser. No. 09/611,395, filed Jul. 7, 2000, which is incorporated herein by reference in its entirety.
- the first and second attributes of objects 120 and 130 may be any type of attribute that can be acquired or learned by the module units 110 through their information obtaining methods and devices. It should also be appreciated that each object may have multiple attributes and that an attribute can change over time and across the actual object. In various exemplary embodiments, the attributes are, but are not limited to, any of the following: color; size; shape; temperature; density; weight; stiffness; elasticity; charge; force; reflectivity; magnetic flux; conductivity; frictionality; compressibility; movement of the objects; communication with the object; the way any of the above attributes change over time; and the way any of the above attributes vary across the object.
- the membrane 100 includes a mechanism, not shown, for activating and deactivating the membrane 100 .
- the activation mechanism is an “on/off” switch for the membrane 100 .
- the mechanism is activated through known or later developed wireless communication methods and devices.
- the activation mechanism is disposed on the membrane 100 or the module units 110 so that a user can manually activate the mechanism.
- the activation mechanism includes a plurality of devices that activate individual module units 110 .
- FIGS. 2 A- 2 C display an exemplary embodiment of a smart membrane 200 according to the invention.
- the smart membrane 200 includes a plurality of module units 210 .
- the smart membrane 200 in this exemplary embodiment is functioning as a bi-directional filter for objects 220 and 230 .
- the membrane 200 is identical to the membrane 100 except that the membrane 200 is functioning as a bi-directional filter.
- the objects 220 and 230 approach the membrane 200 from two directions and the membrane 200 filters the objects 220 and 230 based on attributes of the objects, such that the objects 220 are filtered to be below the membrane 200 and the objects 230 are filtered to be above the membrane.
- the objects 220 and 230 are identical to the objects 120 and 130 .
- FIG. 2A displays an initial stage of the filtering
- FIG. 2B displays an intermediate stage of the filtering
- FIG. 2C displays a final stage of the filtering.
- temporary transport channels 240 are created by the functions/actions of the module units 210 .
- the temporary channels 240 allow the objects 220 and 230 to pass through the membrane 200 .
- FIGS. 3 A- 3 C display an exemplary embodiment of a smart membrane 300 according to the invention.
- the smart membrane 300 includes a plurality of module units 310 .
- the smart membrane 300 in this exemplary embodiment is functioning as a sorter for objects 320 and 330 .
- the membrane 300 is identical to the membrane 100 except that the membrane 300 is functioning as a sorter.
- the objects 320 and 330 approach the membrane 300 from one direction (the top of the membrane 300 ) and the membrane 300 sorts the objects 320 and 330 based on attributes of the objects, such that the objects 320 are sorted to be one first side of a region below the membrane 300 and the objects 330 are sorted to be a second side of the region below the membrane.
- FIG. 3A displays an initial stage of the sorting
- FIG. 3B displays an intermediate stage of the sorting
- FIG. 3C displays a final stage of the sorting.
- temporary transport channels 340 are created by the functions/actions of the module units 310 .
- the temporary channels 340 allow the objects 320 and 330 to pass through the membrane 300 .
- FIGS. 4 A- 4 C display an exemplary embodiment of a smart membrane 400 according to the invention.
- the smart membrane 400 includes a plurality of module units 410 .
- the smart membrane 400 in this exemplary embodiment is functioning as an absorber for absorbing either objects 420 or 430 based on one or more attributes of the objects.
- the membrane 400 is identical to the membrane 100 except that the membrane 400 is functioning as an absorber.
- the objects 420 and 430 approach the membrane 400 from above the membrane 400 .
- the membrane 400 absorbs only the objects having a predetermined attribute or attributes. In this embodiment, the objects 420 have the appropriate predetermined attribute, whereas the objects 430 do not.
- the membrane 400 absorbs the objects 420 and keeps the objects 430 out of the membrane based on the attributes of the respective objects. It should also be appreciated that the objects 420 and 430 are identical to the objects 120 and 130 .
- FIG. 4A displays an initial stage of the absorbing
- FIG. 4B displays an intermediate stage of the absorbing
- FIG. 4C displays a final stage of the absorbing.
- temporary transport channels 440 are created by the functions/actions of the module units 410 . The temporary channels 440 allow the objects 420 and 430 to pass into the membrane 400 .
- FIG. 5 is a block diagram of an exemplary embodiment of a module unit 500 for an exemplary smart membrane according to the invention.
- the module unit 500 includes a module control circuit, routine or manager 510 , a memory 520 , a sensor 530 , a communication circuit 540 and a function circuit, routine or manager 550 , each connected to a signal/data bus 512 .
- the sensor 530 includes at least one sensor for obtaining information about the environment around the module unit 500 , as discussed above.
- the information obtained by the sensor 530 is provided to the module control circuit, routine or manager 510 .
- the sensed information is stored in the memory 520 , such that the sensed information can be subsequently recalled for evaluation or the like.
- the communication circuit, routine or manager 540 controls the communication of the module unit 500 to obtain information about the environment around the module unit 500 , as discussed above.
- the communication circuit, routine or manager 540 in various exemplary embodiments, includes obtaining a new method for the module control circuit, routine or manager 510 to use for controlling the module unit.
- the information obtained by the communication circuit, routine or manager 540 is provided to the module control circuit, routine or manager 510 .
- the communication information is stored in the memory 520 , such that the communication information can be subsequently recalled for evaluation or the like.
- the communication circuit 540 and the sensor 530 can be elements integrated into a single device.
- the module control circuit, routine or manager 510 includes the method for controlling the functions of the module unit 500 .
- the module control circuit, routine or manager 510 executes the control method and generates function instructions based on the information obtained by the sensor 530 and the communication circuit, routine or manger 540 .
- the information obtained by the sensor 530 and the communication circuit, routine or manager 540 is information that is local to the module unit 500 .
- the function instructions are provided to the function circuit, routine or manager 550 .
- the function instructions are stored in the memory 520 , such that the function instructions can be subsequently recalled for evaluation or the like.
- the function circuit, routine or manager 550 performs functions based on the function instructions from the module control circuit, routine or manager 510 .
- the function circuit, routine or manager 550 controls movement motors disposed on and/or in the module unit 500 based on the function instructions.
- the memory 520 can be implemented using any appropriate combination of alterable, volatile, or non-volatile memory or non-alterable, or fixed memory.
- the alterable memory whether volatile, or non-volatile, can be implemented using any one or more of static or dynamic RAM, a floppy disk and disk drive, a writable or rewritable optical disk and disk drive, a hard drive, flash memory or the like.
- the non-alterable or fixed memory can be implemented using any one or more of ROM, PROM, EPROM, EEPROM, an optical ROM disk, such as a CD-ROM or DVD-ROM disk, and disk drive or the like.
- the memory 520 can store any information obtained by the sensor 530 or the communication circuit, routine or manager 540 , any information generated by the function circuit, routine or manager 550 or the function instruction from the module control circuit routine or manager 510 .
- the data bus 512 connecting the memory 520 to the module control unit 510 can be a wired or wireless link to a network (not shown).
- the network can be a local area network, and intranet, or any other distributed processing and storage network.
- each of the circuits, routines or managers shown in FIG. 5 can be implemented as portions of a suitably programmed general purpose computer.
- each of the circuits, routines or managers shown in FIG. 5 can be implemented as physically distinct hardware circuits, routines or managers within an ASIC, or using a FPGA, a PDL, a PLA or a PAL, or using discrete logic elements or discrete circuit, routine or manager elements.
- the particular form of each of the circuits, routines or managers shown in FIG. 5 is a design choice.
- FIG. 6 is a block diagram of an exemplary embodiment of a module unit 600 for an exemplary smart membrane according to the invention.
- the module unit 600 includes an I/O interface 620 , a modular unit controller 630 , a memory 640 , a sensor 650 , a communication circuit 660 and a function circuit, routine or manager 670 , each connected to a signal/data bus 612 .
- the I/O interface 620 is connected to a module controller circuit, routine or manager 610 by a link 612 .
- the link 612 can be any known or later developed device or system that can connect the module controller circuit, routine or manager 610 to the module unit 600 , including a direct cable connection, a connection over a wide area network or a local area network, a connection over an intranet, a connection over the Internet, or a connection over any other distributed processing network or system.
- the link 612 can be any known or later developed connection system or structure.
- the sensor 650 includes at least one sensor for obtaining information about the environment around the module unit 600 , as discussed above.
- the information obtained by the sensor 650 is provided to the module controller circuit, routine or manager 610 via the I/O interface 620 , under the control of the modular unit controller 630 .
- the sensed information is stored in the memory 640 , under the control of the modular unit controller 630 such that the sensed information can be subsequently recalled for evaluation or the like.
- the communication circuit, routine or manager 660 controls the communication of the module unit 600 to obtain information about the environment around the module unit 600 , as discussed above.
- the information obtained by the communication circuit, routine or manager 660 is provided to the module controller circuit, routine or manager via the I/O interface 620 under the control of the modular unit controller 630 .
- the communication information is stored in the memory 640 under the control of the controller, such that the communication information can be subsequently recalled for evaluation or the like.
- the communication circuit, routine or manager 660 and the sensor 650 can be elements integrated into a single device.
- the module controller circuit, routine or manager 610 includes the method for controlling the functions of the module unit 600 .
- the module controller circuit, routine or manager 610 is disposed outside the module unit 600 .
- the module controller circuit, routine or manager 610 is remotely located from the module unit 600 .
- the module controller circuit, routine or manager 610 executes the control method and generates function instructions based on the information obtained by the sensor 650 and the communication circuit, routine or manger 660 and thus provides a decentralized control of the module unit 600 .
- the module controller circuit, routine or manager 610 executes the control method and generates function instructions based on the information obtained by the sensor 650 and the communication circuit, routine or manger 660 as well as information obtained by other module units, and thus provides a centralized control of the module unit 600 .
- the function instructions are provided to the function circuit, routine or manager 670 via the I/O interface 620 .
- the function instructions are stored in the memory 640 via the I/O interface, such that the function instructions can be subsequently recalled for evaluation or the like.
- the function circuit, routine or manager 670 performs functions based on the function instructions from the module controller circuit, routine or manager 610 .
- the function circuit, routine or manager 670 controls movement motors disposed on and/or in the module unit 600 based on the function instructions.
- the memory 640 can be implemented using any appropriate combination of alterable, volatile, or non-volatile memory or non-alterable, or fixed memory.
- the alterable memory whether volatile, or non-volatile, can be implemented using any one or more of static or dynamic RAM, a floppy disk and disk drive, a writable or rewritable optical disk and disk drive, a hard drive, flash memory or the like.
- the non-alterable or fixed memory can be implemented using any one or more of ROM, PROM, EPROM, EEPROM, an optical ROM disk, such as a CD-ROM or DVD-ROM disk, and disk drive or the like.
- the memory 640 can store any information obtained by the sensor 650 or the communication circuit, routine or manager 660 , information generated by the function circuit, routine or manager 670 or the function instructions from module controller circuit, routine or manager 610 .
- the data bus 602 connecting the memory 640 to the modular unit controller 630 can be a wired or wireless link to a network (not shown).
- the network can be a local area network, and intranet, or any other distributed processing and storage network.
- each of the circuits, routines or managers shown in FIG. 6, can be implemented as portions of a suitably programmed general purpose computer.
- each of the circuits, routines or managers shown in FIG. 6 can be implemented as physically distinct hardware circuits, routines or managers within an ASIC, or using a FPGA, a PDL, a PLA or a PAL, or using discrete logic elements or discrete circuit, routine or manager elements.
- the particular form of each of the circuits, routines or managers shown in FIG. 6 is a design choice.
- a smart membrane of the invention may take on various embodiments and should not be limited to the following exemplary embodiments.
- Various exemplary embodiments of a smart membrane of the invention include making the membrane a modular robot.
- a modular robotic smart membrane is a self-reconfigurable modular robotic device capable of active filtering, sorting, absorbing, or the like, of objects based on a diverse set of properties or attributes, such as but not limited to color, size, or shape, or any other attribute that may be sensed or measured.
- a modular robotic smart membrane, of the invention includes a plurality of robot modules or modular hardware.
- a self-reconfigurable modular robot is a robot that is composed of many modules, where each module has its own power, motors, computation, memory, and sensors. The modules have motors and catches that enable them to attach to and detach from each other in order to move and perform tasks or functions. Individual modules on their own can do little, but the robot, using just the capabilities of the individual modules, can reconfigure itself to perform different tasks as needed.
- the robot modules are identical components.
- modular robot control software which controls the modular robot, be completely decentralized and completely autonomous, so that the tasks can be performed without reference to a central controller, whether human or machine.
- the modular robot control software is created using genetic programming.
- the control software can be created by a number of different techniques and it may also be predetermined or provided.
- a smart membrane can be implemented using any of the self-reconfigurable modular robots, including the types of self-reconfigurable modular robots listed below.
- One type of self-reconfigurable modular robot is the compressible modular robots, such as the Crystalline Robots developed at Dartmouth, which consist of cubical modules that can slide past each other. Movement of these robots is possible only through motors that contact the cubes by a factor of two in one or another direction. Both 2D and 3D versions are possible.
- Another type of self-reconfigurable modular robot includes rotating modular robots, like Xerox PARC's Proteo robot, in which the modules rotate with respect to each other through hinges at the vertices (2D) or edges (3D) of the modules.
- the individual modules can be different shapes, like squares or hexagons in 2D, or cubes or rhombic dodecahedrons, as were used in Proteo, in 3D.
- Another type of self-reconfigurable modular robot includes prismatic joint modular robots, like Xerox PARC's Polybot, whose modules are cubes which can contract into wedges, as well as attach and detach from each other.
- the configurations of the modules consist of long strings, occasionally attached to others, forming snake-, spider-, and tank-tread-shaped robots for instance.
- One type of self-reconfigurable modular robot includes rotating joint modular robots, like USC's ISI's Spider Link robots, which can rotate with respect to each other. Again, the configurations of the modules consist of long strings, occasionally attached to others.
- Another type of self-reconfigurable modular robot includes bi-unit modular robots, like CMU's I-cubes and Dartmouth's Molecule Robots, which consist of two types of modules, cubes and links, which can attach to, detach from, and rotate with respect to each other.
- bi-unit modular robots like CMU's I-cubes and Dartmouth's Molecule Robots, which consist of two types of modules, cubes and links, which can attach to, detach from, and rotate with respect to each other.
- FIG. 7 displays a schematic illustration of an exemplary embodiment of a smart membrane 700 , which is a modular robot.
- the membrane 700 includes a plurality of robot modules 710 .
- the smart membrane 700 sorts foreign objects 720 and 730 by shape.
- the objects 720 are square and the objects 730 are circular.
- the membrane 700 is disposed in a world 740 that includes a plurality of walls 742 .
- the overall objective or function of the membrane 700 is to allow the square objects 720 to pass through the membrane 700 and to prevent the circular objects 730 from passing through the membrane 700 .
- Both the square and the circular foreign objects 720 and 730 come into contact with the membrane 700 from above the membrane, on a first side 702 of the membrane 700 .
- the membrane 700 configures itself so as to allow square objects 720 to pass through to the bottom of the world 740 , and so as to prevent round objects 730 from passing through a second side 704 of the membrane 700 .
- the filtering capabilities of the smart membrane 700 emerge from the simple motions of its constituent robot modules 710 .
- the modules 710 are controlled by a central processing unit, not shown, that determines the move that each module 710 needs to make in order to achieve the desired global behavior of the membrane 700 . This information is then propagated to the relevant modules.
- the central processing unit may be any known or later developed processing device.
- control of the membrane 700 is based on a distributed control paradigm.
- each module 710 has its own processor and uses the information provided by its sensors and interactions with other modules to determine the next move it will make.
- each module 710 is running the same control program, and the correct global filtering behavior of the membrane emerges from the behavior of the individual modules 710 determined by this program, their sensor readings, and communication with other modules 710 .
- control program can be generated from genetic programming methods, including but not limited to the methods disclosed in the incorporated U.S. patent application Ser. No. 09/611,395, filed Jul. 7, 2000.
- control program can be provided by any known or later developed learning programming technique.
- the control program can also be any predefined program.
- Genetic programming is an evolutionary computing technique that is able to generate a computer program that solves a problem when given a high level description of the problem to be solved.
- a description of genetic programming is found in John R. Koza, “Genetic Programming: On the Programming of Computers by Means of a Natural Selection”, Cambridge, Mass.: MIT Press 1992, which is herein incorporated by reference in its entirety.
- control program is generated by genetic programming.
- genetic programming it is necessary to provide the algorithm with an objective function for the problem to be solved, a set of primitive functions with which to build the programs, a few parameters, and for each primitive function, the return type, the number of arguments and the type of arguments.
- the genetic programming method begins by generating a population of grammatically legal random programs in the target language.
- the fitness of each program in the population is determined by executing each program and measuring how that program scores on the objective function.
- the existing population of computer programs is used to create a new population of computer programs using genetic operators.
- the genetic operators are applied in proportion to the fitness of the computer programs so that more fit programs are used more often to create new computer programs. That is, more fit programs are selected more often to be “parents” for the creation of new computer programs in the next generation.
- the genetic operations used are a crossover operation, a mutation operation and a cloning operation.
- the crossover operation takes parse tree representations of two fitness selected “parent” computer programs and creates two new “child” programs by exchanging a randomly selected subtree between the two parents.
- the mutation operation takes a parse tree representation of one fitness selected computer program, randomly selects one of its subtrees, and replaces that subtree with a new randomly created subtree.
- the cloning operation takes one fitness selected computer program and creates a copy of it for inclusion in a new population of programs.
- computing the fitness function involves running the evolved computer program on each module unit to control a simulation of the modular robotic smart membrane in a simulated world.
- the computed value of the objective function is a measure of how well the modular robot performed on the goal task.
- the fitness function might measure how many foreign objects are correctly sorted across the membrane. It should be appreciated that there may be many features of each program that the fitness function measures.
- the programs are compared to determine which program has the best solution for the goal based on the evaluated features. Further, it should be appreciated that any known or later developed method of multi-objective optimization may be used to determine the best program for the desired goal.
- a fitness function (or objective function) must be provided to the genetic programming system for the specific task or goal that is being solved.
- the function is usually defined so that the better an individual performs, the lower its fitness value.
- An example of a fitness function is the number of bad objects that are mistakenly accepted plus the number of good objects that are mistakenly rejected by the membrane.
- the fitness function can also include penalties for things like the time taken to solve the problem, the amount of power used to solve the problem, etc.
- Each decentralized controller in each of the modules is evaluated by running a simulation of the modular robot in a world, where each module is controlled by its own copy of the decentralized controller under evaluation.
- the simulation tracks the state of the world, including all walls and objects, and the location of each robot module in the world.
- each of the robot modules is executed one at a time. In another embodiment, all of the robot modules are executed concurrently. The simulation is run for either a pre-specified maximum number of turns, or for a pre-specified maximum amount of computer time, or until some other predefined stopping condition becomes true.
- the primitive functions from which the evolved computer programs are constructed are provided to the genetic programming system.
- a designer provides the primitive functions.
- another computer program provides the primitive functions. It should be appreciated that there are other numerous ways that the primitive functions could be provided, including, but not limited to a program that queries the modules to determine the functions of the module and generates the primitive functions on the results of the query.
- implementations for each primitive function are supplied to the genetic programming system.
- the return type and parameter types of each primitive function are also given.
- Examples of primitive functions are arithmetic functions, Boolean functions, looping constructs, conditional functions, etc. Primitive functions for accessing the robot module's sensors, internal states, and motors are also used in various exemplary embodiments.
- the language for the evolved computer programs is defined.
- the language is defined by supplying an explicit BNF grammar for the language.
- the language can also be defined by specifying the return type and parameter types for each of the primitive functions in the language. In this case, the type specifications for the entire set of primitive functions together create an implicit grammar definition for the language.
- the parameters that are supplied to the genetic programming system include:
- the method outputs a program that will be run in each of the modules and will enable the entire programmable smart membrane to achieve the desired sorting behavior.
- modular robotic smart membranes according to the invention.
- modular robotic smart membranes according to this invention may include numerous other embodiments.
- FIG. 8 displays a flowchart for an exemplary embodiment of a method for generating a control program according to the invention. It should be appreciated that FIG. 8 illustrates specific functions of an embodiment of the present invention, but that in alternate embodiments, more or fewer functions may be used. In an embodiment of the present invention, steps/functions set forth in FIG. 8 may represent software programs, software objects, software functions, software subroutines, code fragments, hardware operations, user operations, singly or in combination.
- the method begins at step S 800 and proceeds to step S 805 , wherein a plurality of software functions are obtained as described herein.
- step S 810 a set of the plurality of software functions are randomly selected to provide a first plurality of software programs for solving a problem as described herein.
- a fitness function is used to evaluate the first plurality of software programs by calculating respective fitness function values as described herein.
- a fitness function is provided by a user.
- a second plurality of software programs is selected from the first plurality of software programs based on the first plurality of software programs respective fitness function values, as described herein.
- the second plurality of software programs includes duplicate software programs of the first plurality of software programs.
- the second plurality of software programs are modified by genetic operations, such as crossover, mutation and cloning, singly or in combination, as described herein.
- step S 830 a decision is made whether another plurality of programs are to be constructed, or a new generation or population is to be formed.
- step S 815 the method proceeds back to step S 815 , where steps S 815 through S 825 are repeated. Otherwise, the method proceeds to step S 835 , wherein the software program for a module which has the lowest fitness function is selected as the control program, as described herein.
- FIG. 9 displays a schematic of an exemplary embodiment of a modular robotic smart membrane 900 that includes a plurality of robot modules 910 .
- the membrane 900 filters objects based on color.
- Objects 920 have a first color and objects 930 have a second color.
- the second color can be any color other than the first color.
- the second color for all of the objects 930 does not have to be the same color.
- the objects 920 , 930 are the size of a single robot module 910 .
- the objects 920 , 930 may be larger or smaller than a single robot module 910 .
- the objects 920 , 930 are placed on top of the smart membrane 900 .
- the membrane 900 will reconfigure itself so that the objects 930 with the second color remain above the membrane 900 and the objects 920 with the first color are moved to the bottom of the world 940 .
- the membrane 900 is required to end up, after filtering, close to its initial position, though the individual modules 910 within the membrane do not need to end up close to their original positions.
- the simulated world 940 used for evolving the control software for the modular robotic smart membrane 900 is square with 10 units on a side.
- the wall units are the same size as the module units 910 .
- the size of the wall units may vary.
- each robot module 910 is in the shape of a square that occupies one grid location in the world 940 .
- the state of a robot module includes its location in the world, the values of the most recent messages received from adjacent robot modules in each of eight directions, the values of its registers, the current values of the sensors, and the facing direction of the module.
- directions are encoded as real values in [0.0, 1.0), where direction 0.0 is a positive x axis of a robot module 910 and direction values increase going around counter clockwise.
- the direction values used by each robot module 910 are local to a frame of reference 912 of each module 910 .
- the direction that a robot module 910 is facing is always direction 0.0 where direction 0.25 is 90 degrees to the left of where it is facing, etc.
- the direction values are not discrete, but rather continuous.
- Each module has eight sensors of each type, pointing in different directions.
- the values of the sensors are given in units of intensity in [0.0, 1.0], where the intensity is the inverse of the distance to the thing sensed, 0.0 means that the thing was not sensed at all, and 1.0 means that the thing was sensed in the immediately adjacent grid location.
- the robot modules 910 are able to move relative to one another.
- the modules 910 move in four directions: east, north, west, and south.
- an individual robot module 910 moves by sliding against an adjacent robot module 910 .
- a robot module 910 moves by pushing itself along another robot module 910 that is adjacent to it at 90 degrees from a direction of motion.
- a robot module 910 can pull against another robot module that is diagonally adjacent to it in the direction of motion. Modules with this type of movement have been implemented at Johns Hopkins University. See Amit Pamecha, Imme Ebert-Uphoff, Gregory S.
- the robot modules 910 initiate different types of moves to reconfigure the membrane 900 .
- the movement types of the modules 910 include a single move and a line move.
- FIGS. 10 A- 10 C display, in three separate steps, a single move over time for two modules 910 a and 910 b, respectively.
- the single move is the movement of a single module.
- the single move is successful if the moving robot module 910 is moving into an empty grid location identified as “x” and “y”.
- FIGS. 11 A- 11 B display, in two steps, a line move over time of a line of robot modules 910 c.
- the line move is the movement of the entire line of robot modules 910 c.
- the line movement is successful if the front-most module 910 d in the line is moving into an empty grid location, identified as “w”.
- a line move can be initiated by any robot module 910 in a line of robot modules.
- the objects 920 and 930 are inactive modules that are the same size as the robot modules 910 .
- the objects do not have to be the same size and may also vary in size.
- the robot modules 910 can push and pull these inactive modules just as they can with other robot modules.
- the fitness for each individual program is calculated as a weighted average of fitness over 24 simulated worlds. It should be appreciated that in other various exemplary embodiments, the fitness of an individual program may be based on a single simulated world.
- each simulation world is initialized with the modules of the smart membrane arranged in a vertically centered rectangle extending 8 units from the left wall 946 to the right wall 948 .
- the membrane 900 includes a height of three modules 910 ; in the other twelve, the membrane 900 includes a height of four modules 910 .
- Each module 910 has a facing direction.
- the facing direction of each of the modules 910 , and the order in which the programs of the modules 910 are executed, is determined randomly for each world. It should be appreciated that these factors may be predefined or preset.
- Each simulated world used to measure fitness also includes an object, either an object 920 with the first color or an object 930 with the second color, to be filtered, which is placed on top of the membrane 900 .
- the goal of the membrane 900 is to filter the objects so that objects 930 with the second color remain above the membrane 900 , while the objects 920 with the first color are transported through the membrane 900 to end up below the membrane 900 .
- a representative sample of possible horizontal positions for the objects is contained in the 24 fitness worlds.
- the object that appears initially above the membrane is an object 930 with the second color, in which case the object 930 does not need to be moved at all.
- the object that appears initially above the membrane is an object 920 with the first color, and the membrane 900 should transport the object 920 through the membrane 900 to the other side.
- the program In order to evaluate the fitness of an individual program for a particular world, the program is installed on each module in the simulation world. Then the robot modules 910 execute the program one at a time, in turn. In this exemplary embodiment, the order of execution of the program by the individual modules 910 is selected randomly for that particular world. The sequence of all robot module program executions is a simulation “turn.” In this exemplary embodiment, the fitness of a particular program is determined by averaging the value given by the fitness after each of ten simulation turns. In this embodiment, lower fitness values are better, and make it more likely that this individual program will have offspring in the next generation of evolution.
- the fitness value is a weighted sum of two measurements.
- the first measurement is the location of the object 920 or 930 relative to the membrane 900 .
- the second measurement is the current absolute position of the membrane 900 . It should be appreciated, that in other various exemplary embodiments, the fitness value may be based on more or less measurements.
- the first measurement is determined by the average offset in the vertical dimension of the modules 910 from the object 920 or 930 , as a fraction of the least desirable displacement. For example, when the object is an object 920 with the first color, this term can be minimized by reconfiguring so that the object 920 ends up below all of the membrane modules 910 . This term has the effect of making sure that each object ends up in the appropriate final position.
- the second measurement is determined by the average absolute displacement of each module 910 from the horizontal central axis 950 of the starting position of the membrane 900 . This measurement penalizes the program for failing to keep the original structure and position of the membrane 900 intact, while the object 920 or 930 is being filtered.
- each decentralized controller program generated during the evolutionary process is a legal instance of the language defined by the BNF grammar given below.
- the start symbol is ⁇ program>.
- This function sends the real valued message message from the sending module to an adjacent module (if any) in the direction direction, relative to the frame of reference of the sending module.
- the direction is interpreted mod 1 , and then rounded to the nearest eighth to indicate one of the eight adjacent grid locations.
- This function returns the value of the message sent.
- This function reads the real valued message from the adjacent module (if any) that is location at the relative direction direction from the sending module.
- the direction is interpreted mod 1 , and then rounded to the nearest eighth to indicate one of the eight adjacent grid locations.
- This function returns the value of the message read.
- This function rotates the robot module by the amount direction. This does not physically move the module, it just resets the internal state of the robot module's internal facing direction. This function returns the value of direction.
- This function sets the value of the robot module's register numbered index to value. This function returns value.
- This function gets the current value of the robot module's register numbered index. This function returns the value of the register.
- This function reads the intensity value of the self sensor. Intensity is the inverse of the distance to the closest robot module at the relative direction direction. The intensity is zero if there is no robot module in that direction. This function returns the intensity value.
- This function reads the intensity value of the wall sensor. Intensity is the inverse of the distance to the wall or obstacle in the relative direction direction. The intensity is zero if there is no wall or obstacle in that direction. This function returns the intensity value.
- This function reads the intensity value of the external object sensor. Intensity is the inverse of the distance to external object in the relative direction direction. The intensity is zero if there is no external object in that direction. This function returns the intensity value.
- This function returns the current value of the “turn” variable for the simulation.
- the “turn” variable is set to zero at the beginning of the simulation and is incremented each time all of the robot modules are executed.
- This function evaluates both operands, and returns operand 1 divided by operand 2 . If operand 2 is zero, then this function returns 1.
- This function evaluates both operands, and returns the real valued remainder of operand 1 divided by operand 2 . If operand 2 is zero, then this function returns 1.
- This function evaluates the Boolean condition. If condition is true, then expression 1 is evaluated and its value is returned. If condition is false, then expression 2 is evaluated and its value is returned.
- This function evaluates expression 1 and expression 2 , returning the result of expression 2 .
- This function causes an entire line of robot modules to move in the relative direction direction if they can move.
- the line of robot modules to move is the line of modules collinear with the current robot module in the relative direction direction of the current robot module.
- the line of modules can move if and only if the front-most robot module in the line is not blocked by an immovable wall or obstacle and if there is another robot module adjacent to the line that it can push or pull against. This function returns true if the line of modules is able to move, and returns false otherwise.
- This function causes the current robot module to move in the relative direction direction if it can move.
- the module can move if and only if it is not blocked by any other object, and if there is another robot module adjacent to it that it can push/pull against.
- This function returns true if the line of modules is able to move, and returns false otherwise.
- This function evaluates both operands and returns true if and only if both of the operands are true, and returns false otherwise.
- This function evaluates both operands and returns true if operand 1 is less than operand 2 , and returns false otherwise.
- This function returns true if there is a first color object immediately next to this module in direction direction, and returns false otherwise.
- FIGS. 12 A- 12 C A working solution for the control program for this embodiment emerged in generation 32 of the evaluation/run.
- the solution was composed of 49 primitive function references and 32 real valued constants.
- the behavior of this solution is shown in FIGS. 12 A- 12 C for a single initial world condition at three points in time, namely at an initial stage, an intermediate stage and a subsequent stage, respectively, during the simulation.
- a temporary transport channel 980 is formed by the movements of the modular units.
- a string representation of the control program is given here:
- this program was evolved for an exemplary embodiment including a 10 ⁇ 10 world, with membrane heights of 3 and 4, and one object filtered at a time
- the software scales so that it works for membranes of other exemplary embodiments consisting of hundreds of modules arranged in rectangles of greatly varying heights and widths.
- the software also successfully filters multiple objects at once.
- the program functioned successfully when installed on each of 496 robot modules 1210 of a membrane 1200 , in a 64 ⁇ 64 world 1240 , with a membrane height of eight modules and six objects to be filtered (three second color objects 1230 and three first color objects 1220 spaced evenly along the top of the membrane.
- FIG. 13 displays a schematic representation of this exemplary embodiment after the filtering was completed.
- a smart membrane can be programmed to be actively moving while performing its desired function or while waiting for objects to come into contact with it.
- the module units of a smart membrane may be programmed to cause the top surface of the membrane to be agitated so that it rises and falls in an effort to come into contact with objects to be filtered, sorted or absorbed.
- the agitated movement is a sinusoidal wave motion.
- a smart membrane of the invention is applicable to other uses such as assembling and disassembling objects.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Nanotechnology (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Crystallography & Structural Chemistry (AREA)
- Organic Chemistry (AREA)
- Manipulator (AREA)
- Micromachines (AREA)
Abstract
Description
- 1. Field of Invention
- This invention is directed to apparatus and methods relating to programmable smart membranes and methods therefor.
- 2. Description of Related Art
- Some related art devices include micromachined sorters. For example, U.S. Pat. No. 5,655,665, discloses a micromachined magnetic particle manipulator and separator for magnetic particles suspended in fluid.
- Another micromachined sorter is disclosed in U.S. Pat. No. 5,893,974, wherein a micro scale passive filter is disclosed having sufficiently small holes to permit the passage of small desired biomolecules and at the same time prevent the passage of all larger molecules such as antibodies.
- Another related art micromachined sorter includes the passive particle sorter disclosed by M. Koch, C. Schabmueller, A. G. R. Evans, A. Brunnschweiler, “A Micromachined Particle Sorter: Principle and Technology”, Tech. Digest, Eurosensors XII, Southampton, UK, Sep. 13-16, 1998.
- However, these related art micromachined sorters can only sort particles by predefined features or are static/passive and thus are non-programmable.
- Other related art devices include nanometer scale membranes. For example, Yoshihiro Ito, “Signal-responsive Gating by a Polyelectrolyte Pelage on a Nanoporous Membrane”, Nanotechnology, pp 205-207, Vol. 9 No. 3, September 1998, discloses a nanometer scale active membrane wherein the rate of water permeation through the membrane is controlled by pH levels and ionic strength.
- Another nanometer scale membrane is disclosed in K. Eric Drexler, “Nanosystem: Molecular Machinery, Manufacturing, and Computation, John Wiley & Sons, Inc., 1992. Drexler discloses a design for a unidirectional active molecule sorter capable of transporting specific molecules across a barrier. Drexler mentions the possibility of a version of this design which can change the specificity of the transported molecules by using an elastic deformation of the receptor or altering the local charge distribution around the receptor.
- Another related art nanometer scale membrane with poricity controlled by electroactive polymer actuators is described in Toribio F. Otero, Univ. del Pais Vasco, and San Sebastian, “EAP as Multifunctional and Biomimetic Materials”, in Smart Structures and Materials 1999: Electroactive Polymer Actuators and Devices, edited by Yoseph Bar-Cohen, pp.26-34, 1999.
- However, all of the related art nanometer scale membranes have filtering functions that are preset and which cannot be subsequently altered.
- Related art control methods and techniques include the system disclosed in U.S. Pat. No. 6,011,372, which is a unified modular system of drives and controls for mobile robotic applications. However, the robot of this modular system is not modular and the control of the robot is hierarchical.
- The invention provides a programmable smart membrane and methods therefor that overcome the deficiencies and shortfalls of the prior art.
- The invention provides a programmable smart membrane that is capable of being programmed so as to reject, transport, or absorb objects depending on features of the objects.
- The invention separately provides the control software for a programmable smart membrane.
- The invention separately provides a programmable smart membrane that separates two or more regions.
- The invention separately provides a programmable smart membrane that separates a region and provides one-way filtering into or out of that region.
- The invention separately provides a programmable smart membrane that separates a region and provides two-way filtering into and out of that region by transporting objects in both directions through the membrane.
- The invention separately provides a programmable smart membrane that is planar.
- The invention separately provides a programmable smart membrane that separates three-dimensional regions.
- The invention separately provides a programmable smart membrane that works with a single object at a time.
- The invention separately provides a programmable smart membrane that works with multiple objects simultaneously.
- The invention separately provides a programmable smart membrane that is programmable and reprogrammable to reject, transport, or absorb objects based on a diverse set of properties of the objects.
- The invention separately provides a programmable smart membrane that has diverse applications.
- The invention separately provides a programmable smart membrane that sorts parts on a macro scale level.
- The invention separately provides a programmable smart membrane that purifies substances and augments biochemical processes on a nanometer scale level.
- The invention separately provides control software for a programmable smart membrane that includes both identical and non-identical module units.
- The invention separately provides a control software for a programmable smart membrane that is generated by evolutionary techniques.
- The invention separately provides decentralized control software for a programmable smart membrane.
- The invention separately provides control software for a programmable smart membrane that scales with the number of module units in the membrane and the number of objects to be filtered, both in sequence and simultaneously.
- The invention separately provides control software for a programmable smart membrane which is functional under various configurations of its modules and the objects to be filtered.
- The invention separately provides a programmable smart membrane that includes a plurality of sliding robotic modules.
- The invention separately provides a programmable smart membrane that includes a plurality of rotating robotic modules.
- The invention separately provides a programmable smart membrane that includes a plurality of compressible robotic modules.
- The invention separately provides a programmable smart membrane that uses control software found using a fitness function.
- The invention separately provides a programmable smart membrane that can sort, filter, and/or absorb objects based on at least one of the following properties of the objects: color; size; shape; temperature; density; weight; stiffness; elasticity; charge; force; reflectivity; magnetic flux; conductivity; frictionality; compressibility; movement of the objects being filtered; communication with the object; the way any of the above attributes change over time; and the way any of the above attributes vary across the object.
- The invention separately provides a programmable smart membrane that continues to perform a desired task in the presence of various failures or noise in or inaccuracy of sensors, motors, power, and changing or unknown environmental conditions.
- The invention separately provides a programmable smart membrane that continues to perform a desired task in spite of the failure of a motor in one or several of the module units.
- The invention separately provides a programmable smart membrane that continues to perform a desired task in spite of the failure of a sensor in one or several of the module units.
- The invention separately provides a programmable smart membrane that continues to perform a desired task in spite of power loss in one or several of the module units.
- The invention separately provides a programmable smart membrane that continues to perform a desired task in spite of inaccurate sensor readings by sensors in one or several of the module units.
- The invention separately provides a programmable smart membrane, including 2D sliding robots, that sorts objects based on color.
- These and other features and advantages of this invention are described in, or are apparent from, the following detailed description of various exemplary embodiments of the systems and methods according to this invention.
- Various exemplary embodiments of this invention will be described in detail, with reference to the following figures, wherein:
- FIGS.1A-1C are schematics of an exemplary embodiment of a smart membrane according to the invention that filters objects;
- FIGS.2A-2C are schematics of another exemplary embodiment of a smart membrane according to the invention that filters objects bi-directionally;
- FIGS.3A-3C are schematics of another exemplary embodiment of a smart membrane according to the invention that sorts objects;
- FIGS.4A-4C are schematics of another exemplary embodiment of a smart membrane according to the invention that absorbs objects;
- FIG. 5 is a block diagram of one exemplary embodiment of a module unit of an exemplary smart membrane according to the invention, wherein a module control circuit is disposed within the module unit;
- FIG. 6 is a block diagram of another exemplary embodiment of a module unit of an exemplary smart membrane according to the invention, wherein a module control circuit is not disposed within the module unit;
- FIG. 7 is a schematic of an exemplary embodiment of a modular robotic smart membrane according to the invention;
- FIG. 8 is a flowchart of one exemplary embodiment for constructing a software program for a module unit of a smart membrane, according to the invention;
- FIG. 9 is a schematic of another exemplary embodiment of a modular robotic smart membrane according to the invention;
- FIGS.10A-10C are schematics displaying a single movement of exemplary robotic modules;
- FIGS.11A-11B are schematics displaying a line movement of exemplary robotic modules;
- FIGS.12A-12C are schematics displaying the smart membrane of FIG. 9 in an initial stage, an intermediary stage and a subsequent stage of filtering an object; and
- FIG. 13 is a schematic of another exemplary embodiment of modular robotic smart membrane according to the invention.
- The invention is a programmable membrane and methods therefor that overcome the deficiencies and short falls of the related art.
- The invention includes a smart membrane that can be programmed to reject, transport, and/or absorb items depending on features or attributes of the items. The smart membrane of the invention includes a plurality of module units. The overall smart membrane is self-reconfigurable in that it can reconfigure without any external aid. Each module unit performs functions based on information about its environment. Each module unit communicates with and moves in relation to its neighboring module units in order to accomplish an overall task for the entire membrane, such as filtering. The function performed by the module units are based on a control program/method.
- FIGS.1A-1C display an exemplary embodiment of a
smart membrane 100 according to the invention. Thesmart membrane 100 includes a plurality ofmodule units 110. Thesmart membrane 100 in this exemplary embodiment is functioning as a one-way filter. It should be appreciated that in other various exemplary embodiments, a smart membrane according to the invention can also function to filter multi-directionally, and sort and capture/absorb objects, as shown in FIGS. 2A-2C, 3A-3C and 4A-4C, respectively. - As shown in FIGS.1A-1C, the
smart membrane 100 filters objects to allow objects with afirst attribute 120 to pass themembrane 100 and to stop objects with asecond attribute 130 from passing themembrane 100. Objects with thefirst attribute 120 are displayed as triangles and objects with thesecond attribute 130 are displayed as circles for discussion purposes only. - FIG. 1A displays an initial stage of the filtering, FIG. 1B displays an intermediate stage of the filtering and FIG. 1C displays a final stage of the filtering. As shown in FIG. 1B,
temporary transport channels 140 are created by actions of themodule units 110. Thetemporary channels 140 allow theobjects membrane 100. - In this exemplary embodiment, the
module units 110 are identical. However, it should be appreciated that in other various exemplary embodiments, themodule units 110 are not all identical. - In this exemplary embodiment, the
module units 110 operate based on identical sets of instructions or methods. However, it should be understood that in other various exemplary embodiments, less than all of themodule units 110 operate based on the identical method. - Each of the
module units 110 obtain information about the environment around the module unit. In various exemplary embodiments, the information is local information. The local information is information about the immediate environment around a module unit. In other various exemplary embodiments, the information is global information from all of the module units, i.e. the membrane's environment. - The method of obtaining the information can vary based on each application of the membrane. For example, in various exemplary embodiments, the information is obtained by a physical touching between the module and the environment, which may include neighboring module units. In other various exemplary embodiments, the information is obtained by an electrical connection between a module unit and the environment, which may include neighboring module units.
- In various exemplary embodiments, the information is obtained by sensors. The sensors may be any known or later developed sensors or sensing devices and/or methods. In various exemplary embodiments, the sensors are disposed on and/or in the module units. In various exemplary embodiments, the sensors are for detecting the
objects membrane 100. In various exemplary embodiments, the sensors are infrared sensors. - In other various exemplary embodiments, the information is obtained by a module unit communicating with the environment. For example, in various exemplary embodiments, the module units communicate with one another. In various exemplary embodiments, the module units only communicate with immediately adjacent module units. In other exemplary embodiments the module units communicate with the
objects - It should be appreciated that in various exemplary embodiments, the module units may include only sensors, communication devices or both. It should also be appreciated that the sensors and the communication devices may be combined into a single device. Further, it should be appreciated that in various exemplary embodiments, the information obtained via devices for sensing and communicating may include such properties of the objects as, but not limited to: color; size; shape; temperature; density; weight; stiffness; elasticity; charge; force; reflectivity; magnetic flux; conductivity; frictionality; compressibility; movement; communication with the objects; the way any of the above attributes change over time; and the way any of the above attributes vary across the object.
- The information obtained by the module units is processed based on the control method that the
module units 110 are to follow for their respective functions. - The processing of the information results in function instructions for the
respective module unit 110. The function instructions are instructions for themodule unit 110 to perform a particular function or functions. The function instructions also include a non-function instruction, which instructs amodule unit 110 not to perform any function. In this exemplary embodiment, the function instructions are movement, communication, and internal state change instructions. However, it should be appreciated that the function instructions could include a variety of actions/functions. For example, in various exemplary embodiments, the functions include, but are not limited to: to communicate with the environment, to connect with another module unit, to not move, and/or to change an internal state of the module unit. - In other various exemplary embodiments, the function instructions are effector instructions for the
respective module unit 110. For example, a module unit having a faceplate for latching may attach to or detach from a neighboring module unit, for example by latching or unlatching its faceplate to the faceplate of an adjacent module unit. - In various exemplary embodiments, the function instructions are communication instructions for the
respective module unit 110. For example, module units may send and receive messages to other module units. These messages can include the sharing of any type of information, requests for information, etc. - In other various exemplary embodiments, the function instructions are instructions for changing the internal state of a module unit, including but not limited to changing the contents of an internal memory for the
respective module unit 110, such as, storing the results of calculations, sensor readings, or planned actions for future reference. - In various exemplary embodiments, wherein the functions are movements of the module units, the movement of each module unit is limited to a set of predefined limitations. For example, the module units may have physical structures that limit the movement of the
module units 110. In other exemplary embodiments, the movement limitations may be set in an attempt to keep the module units together as a group. An example of a specific movement limitation is that a module unit can only move when it is adjacent to at least one other module unit. - With each of the
module units 110 acting independently, based only on their respective environmental information, the membrane as a whole behaves as desired. - The method that the
individual module units 110 are following will determine how themodule units 110 behave collectively. The control method in various exemplary embodiments is a computer program. In various exemplary embodiments, the computer program is developed using genetic programming techniques, such as but not limited to, the automatic control program generation techniques disclosed in copending U.S. patent application Ser. No. 09/611,395, filed Jul. 7, 2000, which is incorporated herein by reference in its entirety. - It should also be appreciated that the first and second attributes of
objects module units 110 through their information obtaining methods and devices. It should also be appreciated that each object may have multiple attributes and that an attribute can change over time and across the actual object. In various exemplary embodiments, the attributes are, but are not limited to, any of the following: color; size; shape; temperature; density; weight; stiffness; elasticity; charge; force; reflectivity; magnetic flux; conductivity; frictionality; compressibility; movement of the objects; communication with the object; the way any of the above attributes change over time; and the way any of the above attributes vary across the object. - In various exemplary embodiments, the
membrane 100 includes a mechanism, not shown, for activating and deactivating themembrane 100. The activation mechanism is an “on/off” switch for themembrane 100. In various exemplary embodiments, the mechanism is activated through known or later developed wireless communication methods and devices. In other various exemplary embodiments, the activation mechanism is disposed on themembrane 100 or themodule units 110 so that a user can manually activate the mechanism. In other various exemplary embodiments, the activation mechanism includes a plurality of devices that activateindividual module units 110. - FIGS.2A-2C display an exemplary embodiment of a
smart membrane 200 according to the invention. Thesmart membrane 200 includes a plurality ofmodule units 210. Thesmart membrane 200 in this exemplary embodiment is functioning as a bi-directional filter forobjects membrane 200 is identical to themembrane 100 except that themembrane 200 is functioning as a bi-directional filter. In other words, theobjects membrane 200 from two directions and themembrane 200 filters theobjects objects 220 are filtered to be below themembrane 200 and theobjects 230 are filtered to be above the membrane. It should also be appreciated that theobjects objects temporary transport channels 240 are created by the functions/actions of themodule units 210. Thetemporary channels 240 allow theobjects membrane 200. - FIGS.3A-3C display an exemplary embodiment of a
smart membrane 300 according to the invention. Thesmart membrane 300 includes a plurality ofmodule units 310. Thesmart membrane 300 in this exemplary embodiment is functioning as a sorter forobjects membrane 300 is identical to themembrane 100 except that themembrane 300 is functioning as a sorter. In this exemplary embodiment, theobjects membrane 300 from one direction (the top of the membrane 300) and themembrane 300 sorts theobjects objects 320 are sorted to be one first side of a region below themembrane 300 and theobjects 330 are sorted to be a second side of the region below the membrane. It should also be appreciated that theobjects objects temporary transport channels 340 are created by the functions/actions of themodule units 310. Thetemporary channels 340 allow theobjects membrane 300. - FIGS.4A-4C display an exemplary embodiment of a
smart membrane 400 according to the invention. Thesmart membrane 400 includes a plurality ofmodule units 410. Thesmart membrane 400 in this exemplary embodiment is functioning as an absorber for absorbing eitherobjects membrane 400 is identical to themembrane 100 except that themembrane 400 is functioning as an absorber. In this exemplary embodiment, theobjects membrane 400 from above themembrane 400. Themembrane 400 absorbs only the objects having a predetermined attribute or attributes. In this embodiment, theobjects 420 have the appropriate predetermined attribute, whereas theobjects 430 do not. Themembrane 400 absorbs theobjects 420 and keeps theobjects 430 out of the membrane based on the attributes of the respective objects. It should also be appreciated that theobjects objects temporary transport channels 440 are created by the functions/actions of themodule units 410. Thetemporary channels 440 allow theobjects membrane 400. - FIG. 5 is a block diagram of an exemplary embodiment of a
module unit 500 for an exemplary smart membrane according to the invention. Themodule unit 500 includes a module control circuit, routine ormanager 510, amemory 520, asensor 530, acommunication circuit 540 and a function circuit, routine ormanager 550, each connected to a signal/data bus 512. - The
sensor 530 includes at least one sensor for obtaining information about the environment around themodule unit 500, as discussed above. The information obtained by thesensor 530 is provided to the module control circuit, routine ormanager 510. In various other exemplary embodiments, the sensed information is stored in thememory 520, such that the sensed information can be subsequently recalled for evaluation or the like. - The communication circuit, routine or
manager 540, controls the communication of themodule unit 500 to obtain information about the environment around themodule unit 500, as discussed above. The communication circuit, routine ormanager 540, in various exemplary embodiments, includes obtaining a new method for the module control circuit, routine ormanager 510 to use for controlling the module unit. The information obtained by the communication circuit, routine ormanager 540, is provided to the module control circuit, routine ormanager 510. In various other exemplary embodiments, the communication information is stored in thememory 520, such that the communication information can be subsequently recalled for evaluation or the like. - It should be appreciated that the
communication circuit 540 and thesensor 530 can be elements integrated into a single device. - The module control circuit, routine or
manager 510 includes the method for controlling the functions of themodule unit 500. The module control circuit, routine ormanager 510 executes the control method and generates function instructions based on the information obtained by thesensor 530 and the communication circuit, routine ormanger 540. In this exemplary embodiment, the information obtained by thesensor 530 and the communication circuit, routine ormanager 540, is information that is local to themodule unit 500. The function instructions are provided to the function circuit, routine ormanager 550. In various other exemplary embodiments, the function instructions are stored in thememory 520, such that the function instructions can be subsequently recalled for evaluation or the like. - The function circuit, routine or
manager 550, performs functions based on the function instructions from the module control circuit, routine ormanager 510. In various exemplary embodiments, the function circuit, routine ormanager 550 controls movement motors disposed on and/or in themodule unit 500 based on the function instructions. - As shown in FIG. 5, the
memory 520 can be implemented using any appropriate combination of alterable, volatile, or non-volatile memory or non-alterable, or fixed memory. The alterable memory, whether volatile, or non-volatile, can be implemented using any one or more of static or dynamic RAM, a floppy disk and disk drive, a writable or rewritable optical disk and disk drive, a hard drive, flash memory or the like. Similarly, the non-alterable or fixed memory can be implemented using any one or more of ROM, PROM, EPROM, EEPROM, an optical ROM disk, such as a CD-ROM or DVD-ROM disk, and disk drive or the like. - The
memory 520 can store any information obtained by thesensor 530 or the communication circuit, routine ormanager 540, any information generated by the function circuit, routine ormanager 550 or the function instruction from the module control circuit routine ormanager 510. - Further, it should be appreciated that the
data bus 512 connecting thememory 520 to themodule control unit 510 can be a wired or wireless link to a network (not shown). The network can be a local area network, and intranet, or any other distributed processing and storage network. - It should also be understood that each of the circuits, routines or managers shown in FIG. 5 can be implemented as portions of a suitably programmed general purpose computer. Alternatively, each of the circuits, routines or managers shown in FIG. 5 can be implemented as physically distinct hardware circuits, routines or managers within an ASIC, or using a FPGA, a PDL, a PLA or a PAL, or using discrete logic elements or discrete circuit, routine or manager elements. The particular form of each of the circuits, routines or managers shown in FIG. 5 is a design choice.
- FIG. 6 is a block diagram of an exemplary embodiment of a
module unit 600 for an exemplary smart membrane according to the invention. Themodule unit 600 includes an I/O interface 620, amodular unit controller 630, amemory 640, asensor 650, acommunication circuit 660 and a function circuit, routine ormanager 670, each connected to a signal/data bus 612. The I/O interface 620 is connected to a module controller circuit, routine ormanager 610 by alink 612. - The
link 612 can be any known or later developed device or system that can connect the module controller circuit, routine ormanager 610 to themodule unit 600, including a direct cable connection, a connection over a wide area network or a local area network, a connection over an intranet, a connection over the Internet, or a connection over any other distributed processing network or system. In general, thelink 612 can be any known or later developed connection system or structure. - The
sensor 650 includes at least one sensor for obtaining information about the environment around themodule unit 600, as discussed above. The information obtained by thesensor 650 is provided to the module controller circuit, routine ormanager 610 via the I/O interface 620, under the control of themodular unit controller 630. In various other exemplary embodiments, the sensed information is stored in thememory 640, under the control of themodular unit controller 630 such that the sensed information can be subsequently recalled for evaluation or the like. - The communication circuit, routine or
manager 660, controls the communication of themodule unit 600 to obtain information about the environment around themodule unit 600, as discussed above. The information obtained by the communication circuit, routine ormanager 660 is provided to the module controller circuit, routine or manager via the I/O interface 620 under the control of themodular unit controller 630. In various other exemplary embodiments, the communication information is stored in thememory 640 under the control of the controller, such that the communication information can be subsequently recalled for evaluation or the like. - It should be appreciated that the communication circuit, routine or
manager 660 and thesensor 650 can be elements integrated into a single device. - The module controller circuit, routine or
manager 610 includes the method for controlling the functions of themodule unit 600. The module controller circuit, routine ormanager 610 is disposed outside themodule unit 600. In various exemplary embodiments, the module controller circuit, routine ormanager 610 is remotely located from themodule unit 600. In various exemplary embodiments, the module controller circuit, routine ormanager 610 executes the control method and generates function instructions based on the information obtained by thesensor 650 and the communication circuit, routine ormanger 660 and thus provides a decentralized control of themodule unit 600. In other various exemplary embodiments, the module controller circuit, routine ormanager 610 executes the control method and generates function instructions based on the information obtained by thesensor 650 and the communication circuit, routine ormanger 660 as well as information obtained by other module units, and thus provides a centralized control of themodule unit 600. The function instructions are provided to the function circuit, routine ormanager 670 via the I/O interface 620. In various other exemplary embodiments, the function instructions are stored in thememory 640 via the I/O interface, such that the function instructions can be subsequently recalled for evaluation or the like. - The function circuit, routine or
manager 670, performs functions based on the function instructions from the module controller circuit, routine ormanager 610. In various exemplary embodiments, the function circuit, routine ormanager 670 controls movement motors disposed on and/or in themodule unit 600 based on the function instructions. - As shown in FIG. 6, the
memory 640 can be implemented using any appropriate combination of alterable, volatile, or non-volatile memory or non-alterable, or fixed memory. The alterable memory, whether volatile, or non-volatile, can be implemented using any one or more of static or dynamic RAM, a floppy disk and disk drive, a writable or rewritable optical disk and disk drive, a hard drive, flash memory or the like. Similarly, the non-alterable or fixed memory can be implemented using any one or more of ROM, PROM, EPROM, EEPROM, an optical ROM disk, such as a CD-ROM or DVD-ROM disk, and disk drive or the like. - The
memory 640 can store any information obtained by thesensor 650 or the communication circuit, routine ormanager 660, information generated by the function circuit, routine ormanager 670 or the function instructions from module controller circuit, routine ormanager 610. - Further, it should be appreciated that the
data bus 602 connecting thememory 640 to themodular unit controller 630 can be a wired or wireless link to a network (not shown). The network can be a local area network, and intranet, or any other distributed processing and storage network. - It should also be understood that each of the circuits, routines or managers shown in FIG. 6, can be implemented as portions of a suitably programmed general purpose computer. Alternatively, each of the circuits, routines or managers shown in FIG. 6 can be implemented as physically distinct hardware circuits, routines or managers within an ASIC, or using a FPGA, a PDL, a PLA or a PAL, or using discrete logic elements or discrete circuit, routine or manager elements. The particular form of each of the circuits, routines or managers shown in FIG. 6 is a design choice.
- The following description is for an exemplary embodiment of a smart membrane of the invention. It should be appreciated that the smart membrane of the invention may take on various embodiments and should not be limited to the following exemplary embodiments. Various exemplary embodiments of a smart membrane of the invention include making the membrane a modular robot.
- A modular robotic smart membrane, according to the invention, is a self-reconfigurable modular robotic device capable of active filtering, sorting, absorbing, or the like, of objects based on a diverse set of properties or attributes, such as but not limited to color, size, or shape, or any other attribute that may be sensed or measured. A modular robotic smart membrane, of the invention, includes a plurality of robot modules or modular hardware.
- Modular hardware that can reconfigure itself is usually referred to as a self-reconfigurable modular robot. A self-reconfigurable modular robot is a robot that is composed of many modules, where each module has its own power, motors, computation, memory, and sensors. The modules have motors and catches that enable them to attach to and detach from each other in order to move and perform tasks or functions. Individual modules on their own can do little, but the robot, using just the capabilities of the individual modules, can reconfigure itself to perform different tasks as needed. In various exemplary embodiments, the robot modules are identical components.
- In various exemplary embodiments, it is preferred that modular robot control software, which controls the modular robot, be completely decentralized and completely autonomous, so that the tasks can be performed without reference to a central controller, whether human or machine. In various exemplary embodiments, the modular robot control software, according to the invention, is created using genetic programming. The incorporated U.S. patent application Ser. No. 09/611,395, filed Jul. 7, 2000, discloses exemplary methods of using genetic programming for creating the control software. However, it should be appreciated that the control software can be created by a number of different techniques and it may also be predetermined or provided.
- A smart membrane can be implemented using any of the self-reconfigurable modular robots, including the types of self-reconfigurable modular robots listed below.
- One type of self-reconfigurable modular robot is the compressible modular robots, such as the Crystalline Robots developed at Dartmouth, which consist of cubical modules that can slide past each other. Movement of these robots is possible only through motors that contact the cubes by a factor of two in one or another direction. Both 2D and 3D versions are possible.
- Another type of self-reconfigurable modular robot includes rotating modular robots, like Xerox PARC's Proteo robot, in which the modules rotate with respect to each other through hinges at the vertices (2D) or edges (3D) of the modules. The individual modules can be different shapes, like squares or hexagons in 2D, or cubes or rhombic dodecahedrons, as were used in Proteo, in 3D.
- Another type of self-reconfigurable modular robot includes prismatic joint modular robots, like Xerox PARC's Polybot, whose modules are cubes which can contract into wedges, as well as attach and detach from each other. The configurations of the modules consist of long strings, occasionally attached to others, forming snake-, spider-, and tank-tread-shaped robots for instance.
- One type of self-reconfigurable modular robot includes rotating joint modular robots, like USC's ISI's Spider Link robots, which can rotate with respect to each other. Again, the configurations of the modules consist of long strings, occasionally attached to others.
- Another type of self-reconfigurable modular robot includes bi-unit modular robots, like CMU's I-cubes and Dartmouth's Molecule Robots, which consist of two types of modules, cubes and links, which can attach to, detach from, and rotate with respect to each other.
- FIG. 7 displays a schematic illustration of an exemplary embodiment of a
smart membrane 700, which is a modular robot. Themembrane 700 includes a plurality ofrobot modules 710. In this exemplary embodiment, thesmart membrane 700 sortsforeign objects objects 720 are square and theobjects 730 are circular. - The
membrane 700 is disposed in aworld 740 that includes a plurality ofwalls 742. The overall objective or function of themembrane 700 is to allow thesquare objects 720 to pass through themembrane 700 and to prevent thecircular objects 730 from passing through themembrane 700. Both the square and the circularforeign objects membrane 700 from above the membrane, on afirst side 702 of themembrane 700. Themembrane 700 configures itself so as to allowsquare objects 720 to pass through to the bottom of theworld 740, and so as to preventround objects 730 from passing through asecond side 704 of themembrane 700. - The filtering capabilities of the
smart membrane 700 emerge from the simple motions of itsconstituent robot modules 710. In various exemplary embodiments themodules 710 are controlled by a central processing unit, not shown, that determines the move that eachmodule 710 needs to make in order to achieve the desired global behavior of themembrane 700. This information is then propagated to the relevant modules. The central processing unit may be any known or later developed processing device. - In other various exemplary embodiments, the control of the
membrane 700 is based on a distributed control paradigm. With distributed control, eachmodule 710 has its own processor and uses the information provided by its sensors and interactions with other modules to determine the next move it will make. - In various exemplary embodiments, each
module 710 is running the same control program, and the correct global filtering behavior of the membrane emerges from the behavior of theindividual modules 710 determined by this program, their sensor readings, and communication withother modules 710. - All the
modules 710 run their control programs, but behave differently depending on individual sensor values, internal state, and messages received from nearby modules. - The control program can be generated from genetic programming methods, including but not limited to the methods disclosed in the incorporated U.S. patent application Ser. No. 09/611,395, filed Jul. 7, 2000. In other various exemplary embodiments, the control program can be provided by any known or later developed learning programming technique. The control program can also be any predefined program.
- Genetic programming is an evolutionary computing technique that is able to generate a computer program that solves a problem when given a high level description of the problem to be solved. A description of genetic programming is found in John R. Koza, “Genetic Programming: On the Programming of Computers by Means of a Natural Selection”, Cambridge, Mass.: MIT Press 1992, which is herein incorporated by reference in its entirety.
- The following is a description of one exemplary embodiment of a method according to the invention, wherein the control program is generated by genetic programming. In order to use genetic programming to create a computer program, it is necessary to provide the algorithm with an objective function for the problem to be solved, a set of primitive functions with which to build the programs, a few parameters, and for each primitive function, the return type, the number of arguments and the type of arguments.
- The genetic programming method begins by generating a population of grammatically legal random programs in the target language. The fitness of each program in the population is determined by executing each program and measuring how that program scores on the objective function.
- Then the existing population of computer programs is used to create a new population of computer programs using genetic operators. The genetic operators are applied in proportion to the fitness of the computer programs so that more fit programs are used more often to create new computer programs. That is, more fit programs are selected more often to be “parents” for the creation of new computer programs in the next generation.
- The genetic operations used are a crossover operation, a mutation operation and a cloning operation.
- The crossover operation takes parse tree representations of two fitness selected “parent” computer programs and creates two new “child” programs by exchanging a randomly selected subtree between the two parents.
- The mutation operation takes a parse tree representation of one fitness selected computer program, randomly selects one of its subtrees, and replaces that subtree with a new randomly created subtree.
- The cloning operation takes one fitness selected computer program and creates a copy of it for inclusion in a new population of programs.
- After an entirely new population has been created by applying the genetic operations to the previous population, the fitness of each program in the new population is measured using the fitness/objective function as before.
- The process of creating new populations of programs and measuring their fitness is repeated until a computer program is discovered that gets an optimal score on the fitness function or the process is terminated. The computer program with the best score on the fitness function is the result of this process.
- In an exemplary embodiment, computing the fitness function involves running the evolved computer program on each module unit to control a simulation of the modular robotic smart membrane in a simulated world. The computed value of the objective function is a measure of how well the modular robot performed on the goal task. For example, the fitness function might measure how many foreign objects are correctly sorted across the membrane. It should be appreciated that there may be many features of each program that the fitness function measures. The programs are compared to determine which program has the best solution for the goal based on the evaluated features. Further, it should be appreciated that any known or later developed method of multi-objective optimization may be used to determine the best program for the desired goal.
- A fitness function (or objective function) must be provided to the genetic programming system for the specific task or goal that is being solved. In various exemplary embodiments, the function is usually defined so that the better an individual performs, the lower its fitness value. An example of a fitness function is the number of bad objects that are mistakenly accepted plus the number of good objects that are mistakenly rejected by the membrane. The fitness function can also include penalties for things like the time taken to solve the problem, the amount of power used to solve the problem, etc.
- Each decentralized controller in each of the modules is evaluated by running a simulation of the modular robot in a world, where each module is controlled by its own copy of the decentralized controller under evaluation. The simulation tracks the state of the world, including all walls and objects, and the location of each robot module in the world.
- In one example embodiment, on each turn of the simulation, each of the robot modules is executed one at a time. In another embodiment, all of the robot modules are executed concurrently. The simulation is run for either a pre-specified maximum number of turns, or for a pre-specified maximum amount of computer time, or until some other predefined stopping condition becomes true.
- The primitive functions from which the evolved computer programs are constructed are provided to the genetic programming system. In various exemplary embodiments, a designer provides the primitive functions. In other various exemplary embodiments, another computer program provides the primitive functions. It should be appreciated that there are other numerous ways that the primitive functions could be provided, including, but not limited to a program that queries the modules to determine the functions of the module and generates the primitive functions on the results of the query.
- In various exemplary embodiments, implementations for each primitive function are supplied to the genetic programming system. In various exemplary embodiments, the return type and parameter types of each primitive function are also given. Examples of primitive functions are arithmetic functions, Boolean functions, looping constructs, conditional functions, etc. Primitive functions for accessing the robot module's sensors, internal states, and motors are also used in various exemplary embodiments.
- In various exemplary embodiments, the language for the evolved computer programs is defined. In various exemplary embodiments, the language is defined by supplying an explicit BNF grammar for the language. The language can also be defined by specifying the return type and parameter types for each of the primitive functions in the language. In this case, the type specifications for the entire set of primitive functions together create an implicit grammar definition for the language.
- In various exemplary embodiments, the parameters that are supplied to the genetic programming system include:
- a. the size of the population (i.e. the number of programs that are being considered);
- b. the percentage of crossover, mutation, and cloning operations to perform;
- c. the maximum depth of the computer programs to create (i.e. after the initial population size, this constraint controls the size of the number of created programs);
- d. the maximum depth of the computer programs to generate randomly in the beginning of the run;
- e. the maximum depth of the sub programs to generate for mutations; and
- f. the maximum amount of computer time or simulation steps to use during the fitness evaluation.
- It should be appreciated the parameters a through f, set forth above do not have to be set to particular values. Further, it should be understood, that an algorithm may be used to determine these parameters automatically without any human intervention.
- The method outputs a program that will be run in each of the modules and will enable the entire programmable smart membrane to achieve the desired sorting behavior.
- The following description is an exemplary embodiment of a modular robotic smart membrane according to the invention. However, it should be appreciated that modular robotic smart membranes according to this invention may include numerous other embodiments.
- FIG. 8 displays a flowchart for an exemplary embodiment of a method for generating a control program according to the invention. It should be appreciated that FIG. 8 illustrates specific functions of an embodiment of the present invention, but that in alternate embodiments, more or fewer functions may be used. In an embodiment of the present invention, steps/functions set forth in FIG. 8 may represent software programs, software objects, software functions, software subroutines, code fragments, hardware operations, user operations, singly or in combination.
- The method begins at step S800 and proceeds to step S805, wherein a plurality of software functions are obtained as described herein. At step S810, a set of the plurality of software functions are randomly selected to provide a first plurality of software programs for solving a problem as described herein.
- At step S815, a fitness function is used to evaluate the first plurality of software programs by calculating respective fitness function values as described herein. In various exemplary embodiments, a fitness function is provided by a user.
- At step S820, a second plurality of software programs is selected from the first plurality of software programs based on the first plurality of software programs respective fitness function values, as described herein. In various exemplary embodiments, the second plurality of software programs includes duplicate software programs of the first plurality of software programs.
- At step S825, the second plurality of software programs are modified by genetic operations, such as crossover, mutation and cloning, singly or in combination, as described herein.
- At step S830, a decision is made whether another plurality of programs are to be constructed, or a new generation or population is to be formed.
- If a new generation of software programs is desired, the method proceeds back to step S815, where steps S815 through S825 are repeated. Otherwise, the method proceeds to step S835, wherein the software program for a module which has the lowest fitness function is selected as the control program, as described herein.
- FIG. 9 displays a schematic of an exemplary embodiment of a modular robotic
smart membrane 900 that includes a plurality ofrobot modules 910. Themembrane 900 filters objects based on color.Objects 920 have a first color and objects 930 have a second color. The second color can be any color other than the first color. The second color for all of theobjects 930 does not have to be the same color. - It should be understood that any set of properties that can be computed by the membrane using its sensor, processing, and memory capabilities can be used as the basis of filtering.
- In this exemplary embodiment, the
objects single robot module 910. However, it should be appreciated that theobjects single robot module 910. - Initially, the
objects smart membrane 900. Themembrane 900 will reconfigure itself so that theobjects 930 with the second color remain above themembrane 900 and theobjects 920 with the first color are moved to the bottom of theworld 940. In various exemplary embodiments, themembrane 900 is required to end up, after filtering, close to its initial position, though theindividual modules 910 within the membrane do not need to end up close to their original positions. - In this exemplary embodiment, the
simulated world 940 used for evolving the control software for the modular roboticsmart membrane 900 is square with 10 units on a side. In this exemplary embodiment, the wall units are the same size as themodule units 910. However, it should be understood that in other various exemplary embodiments, the size of the wall units may vary. In this exemplary embodiment, theworld 940 is divided up into 102=100 grid locations. The perimeter grid locations of the entire world contain wall boundary objects that the robot modules cannot pass through. - In this exemplary embodiment, each
robot module 910 is in the shape of a square that occupies one grid location in theworld 940. The state of a robot module includes its location in the world, the values of the most recent messages received from adjacent robot modules in each of eight directions, the values of its registers, the current values of the sensors, and the facing direction of the module. - In this exemplary embodiment, directions are encoded as real values in [0.0, 1.0), where direction 0.0 is a positive x axis of a
robot module 910 and direction values increase going around counter clockwise. The direction values used by eachrobot module 910 are local to a frame of reference 912 of eachmodule 910. The direction that arobot module 910 is facing is always direction 0.0 where direction 0.25 is 90 degrees to the left of where it is facing, etc. In other various exemplary embodiments, the direction values are not discrete, but rather continuous. - There are three types of sensors, one for detecting walls, one for detecting other robot modules, and one for detecting foreign objects. Each module has eight sensors of each type, pointing in different directions. The eight directions for the sensors are: 0.0=east, 0.125=northeast, 0.25=north, 0.375=northwest, 0.5=west, 0.625=southwest, 0.75=south, and 0.875=southeast. The values of the sensors are given in units of intensity in [0.0, 1.0], where the intensity is the inverse of the distance to the thing sensed, 0.0 means that the thing was not sensed at all, and 1.0 means that the thing was sensed in the immediately adjacent grid location.
- The
robot modules 910 are able to move relative to one another. In this exemplary embodiment, themodules 910 move in four directions: east, north, west, and south. In this embodiment, anindividual robot module 910 moves by sliding against anadjacent robot module 910. In this exemplary embodiment, arobot module 910 moves by pushing itself along anotherrobot module 910 that is adjacent to it at 90 degrees from a direction of motion. Similarly, arobot module 910 can pull against another robot module that is diagonally adjacent to it in the direction of motion. Modules with this type of movement have been implemented at Johns Hopkins University. See Amit Pamecha, Imme Ebert-Uphoff, Gregory S. Chirikjian, “A Useful Metrics for Modular Robot Motion Planning,” IEEE Transactions on Robots and Automation, pp 531-545, Vol. 13, No. 4, August 1997, which is incorporated herein by reference in its entirety. For this exemplary embodiment, sensing, communication, and processing capabilities are added to the modules disclosed by Pamecha. - In this exemplary embodiment, the
robot modules 910 initiate different types of moves to reconfigure themembrane 900. In this exemplary embodiment, the movement types of themodules 910 include a single move and a line move. - FIGS.10A-10C display, in three separate steps, a single move over time for two
modules robot module 910 is moving into an empty grid location identified as “x” and “y”. - FIGS.11A-11B display, in two steps, a line move over time of a line of
robot modules 910 c. The line move is the movement of the entire line ofrobot modules 910 c. The line movement is successful if the front-most module 910 d in the line is moving into an empty grid location, identified as “w”. A line move can be initiated by anyrobot module 910 in a line of robot modules. - In this exemplary embodiment, the
objects robot modules 910. However, it should be understood that the objects do not have to be the same size and may also vary in size. Therobot modules 910 can push and pull these inactive modules just as they can with other robot modules. - The following discussion is for an exemplary embodiment for evolving a control program for the forgoing exemplary membrane. In this exemplary embodiment, the fitness for each individual program is calculated as a weighted average of fitness over 24 simulated worlds. It should be appreciated that in other various exemplary embodiments, the fitness of an individual program may be based on a single simulated world.
- In this exemplary embodiment, each simulation world is initialized with the modules of the smart membrane arranged in a vertically centered rectangle extending8 units from the left wall 946 to the right wall 948. In twelve of the 24 simulated worlds for this embodiment, the
membrane 900 includes a height of threemodules 910; in the other twelve, themembrane 900 includes a height of fourmodules 910. Eachmodule 910 has a facing direction. In this exemplary embodiment, the facing direction of each of themodules 910, and the order in which the programs of themodules 910 are executed, is determined randomly for each world. It should be appreciated that these factors may be predefined or preset. - Each simulated world used to measure fitness also includes an object, either an
object 920 with the first color or anobject 930 with the second color, to be filtered, which is placed on top of themembrane 900. The goal of themembrane 900 is to filter the objects so thatobjects 930 with the second color remain above themembrane 900, while theobjects 920 with the first color are transported through themembrane 900 to end up below themembrane 900. - In this exemplary embodiment, a representative sample of possible horizontal positions for the objects is contained in the 24 fitness worlds. In six of the worlds, the object that appears initially above the membrane is an
object 930 with the second color, in which case theobject 930 does not need to be moved at all. In the other 18 worlds, the object that appears initially above the membrane is anobject 920 with the first color, and themembrane 900 should transport theobject 920 through themembrane 900 to the other side. - In order to evaluate the fitness of an individual program for a particular world, the program is installed on each module in the simulation world. Then the
robot modules 910 execute the program one at a time, in turn. In this exemplary embodiment, the order of execution of the program by theindividual modules 910 is selected randomly for that particular world. The sequence of all robot module program executions is a simulation “turn.” In this exemplary embodiment, the fitness of a particular program is determined by averaging the value given by the fitness after each of ten simulation turns. In this embodiment, lower fitness values are better, and make it more likely that this individual program will have offspring in the next generation of evolution. - For this exemplary embodiment, the fitness value is a weighted sum of two measurements. The first measurement is the location of the
object membrane 900. The second measurement is the current absolute position of themembrane 900. It should be appreciated, that in other various exemplary embodiments, the fitness value may be based on more or less measurements. - The first measurement is determined by the average offset in the vertical dimension of the
modules 910 from theobject object 920 with the first color, this term can be minimized by reconfiguring so that theobject 920 ends up below all of themembrane modules 910. This term has the effect of making sure that each object ends up in the appropriate final position. - The second measurement is determined by the average absolute displacement of each
module 910 from the horizontalcentral axis 950 of the starting position of themembrane 900. This measurement penalizes the program for failing to keep the original structure and position of themembrane 900 intact, while theobject - In an exemplary embodiment, each decentralized controller program generated during the evolutionary process is a legal instance of the language defined by the BNF grammar given below. In this exemplary grammar, the start symbol is <program>.
- Language Grammar:
- <program>:=<realExpression>
- <realExpression>:=
- “(“<realFunction>”)”
- | <realConstant>
- <realFunction>:=
- sendMessage <realExpression> <realExpression>
- | readMessage <realExpression>
- | rotate <realExpression>
- | setRegister <realExpression> <realExpression>
- | getRegister <realExpression> <realExpression>
- | readSensorSelf <realExpression>
- | readSensorWall <realExpression>
- | readSensorExternalObject <realExpression>
- | getTurn
- | protectedDivide <realExpression> <realExpression>
- | protectedModulus <realExpression> <realExpression>
- | if <booleanExpression> <realExpression>
- <realExpression>
- | progN <realExpression> <realExpression>
- <realConstant>:=0.0 | 0.25 | 0.5 | 0.75 | 1.0 | −1.0
- <booleanExpression>:=“(“<booleanFunction>”)”
- <booleanFunction>:=
- moveLine <realExpression>
- | moveSingle <realExpression>
- | and <booleanExpression> <booleanExpression>
- | less <realExpression> <realExpression>
- | isFirst color <realExpression>
- | isSecond color <realExpression>
- The following is a description of the foregoing exemplary functions.
- A. (sendMessage message direction)
- This function sends the real valued message message from the sending module to an adjacent module (if any) in the direction direction, relative to the frame of reference of the sending module. The direction is interpreted mod1, and then rounded to the nearest eighth to indicate one of the eight adjacent grid locations. This function returns the value of the message sent.
- B. (readMessage direction)
- This function reads the real valued message from the adjacent module (if any) that is location at the relative direction direction from the sending module. The direction is interpreted mod1, and then rounded to the nearest eighth to indicate one of the eight adjacent grid locations. This function returns the value of the message read.
- C. (rotate direction)
- This function rotates the robot module by the amount direction. This does not physically move the module, it just resets the internal state of the robot module's internal facing direction. This function returns the value of direction.
- D. (setRegister index value)
- This function sets the value of the robot module's register numbered index to value. This function returns value.
- E. (getRegister index)
- This function gets the current value of the robot module's register numbered index. This function returns the value of the register.
- F. (readSensorSelf direction)
- This function reads the intensity value of the self sensor. Intensity is the inverse of the distance to the closest robot module at the relative direction direction. The intensity is zero if there is no robot module in that direction. This function returns the intensity value.
- G. (readSensorWall direction)
- This function reads the intensity value of the wall sensor. Intensity is the inverse of the distance to the wall or obstacle in the relative direction direction. The intensity is zero if there is no wall or obstacle in that direction. This function returns the intensity value.
- H. (readSensorExternalObject direction)
- This function reads the intensity value of the external object sensor. Intensity is the inverse of the distance to external object in the relative direction direction. The intensity is zero if there is no external object in that direction. This function returns the intensity value.
- I. (getTurn)
- This function returns the current value of the “turn” variable for the simulation. The “turn” variable is set to zero at the beginning of the simulation and is incremented each time all of the robot modules are executed.
- J. (protectedDivide operand1 operand2)
- This function evaluates both operands, and returns operand1 divided by operand2. If operand2 is zero, then this function returns 1.
- K. (protectedModulus operand1 operand2)
- This function evaluates both operands, and returns the real valued remainder of operand1 divided by operand2. If operand2 is zero, then this function returns 1.
- L. (if condition expression1 expression2)
- This function evaluates the Boolean condition. If condition is true, then expression1 is evaluated and its value is returned. If condition is false, then expression2 is evaluated and its value is returned.
- M. (progn expression1 expression2)
- This function evaluates expression1 and expression2, returning the result of expression2.
- N. (moveLine direction)
- This function causes an entire line of robot modules to move in the relative direction direction if they can move. The line of robot modules to move is the line of modules collinear with the current robot module in the relative direction direction of the current robot module. The line of modules can move if and only if the front-most robot module in the line is not blocked by an immovable wall or obstacle and if there is another robot module adjacent to the line that it can push or pull against. This function returns true if the line of modules is able to move, and returns false otherwise.
- O. (moveSingle direction)
- This function causes the current robot module to move in the relative direction direction if it can move. The module can move if and only if it is not blocked by any other object, and if there is another robot module adjacent to it that it can push/pull against. This function returns true if the line of modules is able to move, and returns false otherwise.
- P. (and operand1 operand2)
- This function evaluates both operands and returns true if and only if both of the operands are true, and returns false otherwise.
- Q. (less operand1 operand2)
- This function evaluates both operands and returns true if operand1 is less than operand2, and returns false otherwise.
- R. (isFirst color direction)
- This function returns true if there is a first color object immediately next to this module in direction direction, and returns false otherwise.
- S. (isSecond color direction)
- This function returns true if there is a second color object immediately next to this module in direction direction, and returns false otherwise.
- Experimental Results
- The exemplary embodiment of the membrane displayed in FIG. 9 was evaluated with the following parameters:
- the size of the population=72,000 individuals;
- the percentage of crossover operations to perform=99.0%;
- the percentage of mutation operations to perform=1.0%;
- the percentage of cloning operations to perform=0.0%;
- the maximum depth of the computer programs to create=9;
- the maximum depth of computer programs generated randomly in the beginning of the run=5;
- the maximum depth of the sub programs to generate for mutations=4;
- the maximum amount of computer time to use during the fitness evaluation=unbounded; and
- the number of turns to simulate=10.
- A working solution for the control program for this embodiment emerged in generation32 of the evaluation/run. The solution was composed of 49 primitive function references and 32 real valued constants. The behavior of this solution is shown in FIGS. 12A-12C for a single initial world condition at three points in time, namely at an initial stage, an intermediate stage and a subsequent stage, respectively, during the simulation. As shown in FIG. 12C, a
temporary transport channel 980 is formed by the movements of the modular units. A string representation of the control program is given here: - (ProtectedMod (SendMessage (If (IsBlue (ProtectedDiv 0.5 1.0))
- (If (Move −1.0) (ProtectedDiv 0.5 (Rotate
- (GetRegisterEntry (SetRegisterEntry 0.5 0.25)))) 0.75) (Rotate (ProtectedDiv (Rotate (ProtectedDiv (Rotate 0.25) (ReadSensorSelf 0.5))) (ProtectedMod 0.25 (SetRegisterEntry 0.75 0.0))))) (If (MoveOne (ProtectedDiv (If (IsRed 0.25) (ReadSensorSelf 0.0) (GetRegisterEntry 0.5)) getTurn)) 0.0 0.75)) (SendMessage (If (IsBlue (ProtectedDiv 0.5 1.0)) (If (Move −1.0) (ProtectedDiv 0.25 (Rotate (ReadSensorBrokenAlien −1.0))) (ReadSensorWall 0.75)) (Rotate (ProtectedDiv (Rotate (ProtectedDiv (Rotate 0.25) (ReadSensorSelf 0.5))) (ProtectedMod 0.25 (SetRegisterEntry 0.75 0.0))))) (If (MoveOne 0.0) 0.0 (ProgN 0.0 (GetRegisterEntry 0.0)))))
- Although this program was evolved for an exemplary embodiment including a 10×10 world, with membrane heights of 3 and 4, and one object filtered at a time, it should be appreciated that the software scales so that it works for membranes of other exemplary embodiments consisting of hundreds of modules arranged in rectangles of greatly varying heights and widths. The software also successfully filters multiple objects at once. For example, as shown in FIG. 13, the program functioned successfully when installed on each of 496 robot modules1210 of a membrane 1200, in a 64×64 world 1240, with a membrane height of eight modules and six objects to be filtered (three second color objects 1230 and three first color objects 1220 spaced evenly along the top of the membrane. FIG. 13, displays a schematic representation of this exemplary embodiment after the filtering was completed.
- It should be appreciated that in various exemplary embodiments, a smart membrane can be programmed to be actively moving while performing its desired function or while waiting for objects to come into contact with it. For example, the module units of a smart membrane may be programmed to cause the top surface of the membrane to be agitated so that it rises and falls in an effort to come into contact with objects to be filtered, sorted or absorbed. In various exemplary embodiments, the agitated movement is a sinusoidal wave motion.
- It should also be appreciated that there are other exemplary embodiments of smart membranes and types of module units other than robotic modules according to the invention. Further, the invention may be used in a variety of applications from a macro scale, such as but not limited to a parts sorter, to a nanometer scale, such as but not limited to chemical application of purifying substances and biochemical and biomedical applications.
- It should also be appreciated that a smart membrane of the invention is applicable to other uses such as assembling and disassembling objects.
- While this invention has been described in conjunction with the specific embodiments outlined above, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, the preferred embodiments of the invention, as set forth above, are intended to be illustrative, not limiting. Various changes may be made without departing from the spirit and scope of this invention.
Claims (38)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/835,323 US6459957B1 (en) | 2001-04-17 | 2001-04-17 | Programmable smart membranes and methods therefor |
JP2002111426A JP4427940B2 (en) | 2001-04-17 | 2002-04-15 | Membrane, self-reconfigurable robot, method of providing a membrane, product including computer readable memory, method of providing software for smart membrane, and method of controlling a membrane |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/835,323 US6459957B1 (en) | 2001-04-17 | 2001-04-17 | Programmable smart membranes and methods therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
US6459957B1 US6459957B1 (en) | 2002-10-01 |
US20020152006A1 true US20020152006A1 (en) | 2002-10-17 |
Family
ID=25269215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/835,323 Expired - Lifetime US6459957B1 (en) | 2001-04-17 | 2001-04-17 | Programmable smart membranes and methods therefor |
Country Status (2)
Country | Link |
---|---|
US (1) | US6459957B1 (en) |
JP (1) | JP4427940B2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7154362B2 (en) | 2003-11-12 | 2006-12-26 | Honeywell International, Inc. | Robotic member |
US20080147206A1 (en) * | 2004-08-30 | 2008-06-19 | Abb Ab | Control system for Real Time Applications for Cooperative Industrial Robots |
US8000837B2 (en) | 2004-10-05 | 2011-08-16 | J&L Group International, Llc | Programmable load forming system, components thereof, and methods of use |
US20110231017A1 (en) * | 2009-08-03 | 2011-09-22 | Honda Motor Co., Ltd. | Robot and control system |
US20160346925A1 (en) * | 2015-05-27 | 2016-12-01 | Hon Hai Precision Industry Co., Ltd. | Driving component, robot and robot system |
US9956531B2 (en) | 2015-01-09 | 2018-05-01 | Elwha Llc | Device including multilayer membrane to control fluid drainage and methods of use thereof |
US20230028405A1 (en) * | 2019-12-18 | 2023-01-26 | Fondazione Istituto Italiano Di Tecnologia | Modular configurable robot, corresponding method and computer program product |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636781B1 (en) * | 2001-05-22 | 2003-10-21 | University Of Southern California | Distributed control and coordination of autonomous agents in a dynamic, reconfigurable system |
US6725128B2 (en) * | 2001-07-02 | 2004-04-20 | Xerox Corporation | Self-reconfigurable robot |
JP4043289B2 (en) * | 2002-05-27 | 2008-02-06 | シャープ株式会社 | Search robot system |
JP2004174704A (en) * | 2002-11-14 | 2004-06-24 | Sony Corp | Actuator device and multishaft type robot |
US7656846B2 (en) * | 2002-11-18 | 2010-02-02 | Ge Fanuc Automation North America, Inc. | PLC based wireless communications |
RU2326423C2 (en) * | 2003-01-15 | 2008-06-10 | Андрзей ПИЕТРЗИК | System of universal three-dimensional element |
US20050072260A1 (en) * | 2003-10-03 | 2005-04-07 | Anani Ananiev | Method for driving multiple-module mechanisms by a single motor and redundant modular robots produced therefrom |
US7770014B2 (en) * | 2004-04-30 | 2010-08-03 | Microsoft Corporation | Randomized signal transforms and their applications |
US20080270097A1 (en) * | 2006-11-13 | 2008-10-30 | Solomon Research Llc | System and methods for immunocomputing applied to collectives of nanorobots |
US20110224873A1 (en) * | 2009-09-17 | 2011-09-15 | Reeve David R | Vehicle assembly controller with automaton framework and control method |
US9358687B2 (en) * | 2013-01-24 | 2016-06-07 | Mohammad Reza Emami | System, method and computer program for autonomously emulating robot manipulators of continuously-varying configurations |
US20140300211A1 (en) * | 2013-03-06 | 2014-10-09 | Massachusetts Institute Of Technology | Discrete Motion System |
JP6174523B2 (en) * | 2014-06-25 | 2017-08-02 | 日本電信電話株式会社 | Behavior control system, method and program thereof |
JP6489923B2 (en) * | 2014-12-17 | 2019-03-27 | 日本電信電話株式会社 | Behavior control system and program thereof |
US10293482B2 (en) | 2015-11-12 | 2019-05-21 | ITI Electromagnetic Products Inc. | Self-assembling robotic construction system and associated methods |
JP6939395B2 (en) * | 2017-10-18 | 2021-09-22 | 日本電信電話株式会社 | Controls, methods and programs |
JP6939396B2 (en) * | 2017-10-18 | 2021-09-22 | 日本電信電話株式会社 | Formation control devices, formation control methods, and programs |
JP6946933B2 (en) * | 2017-10-30 | 2021-10-13 | 日本電信電話株式会社 | Formation control devices, formation control methods, and programs |
CN112549009B (en) * | 2020-11-27 | 2022-02-08 | 合肥艾创微电子科技有限公司 | Bionic waveform software robot based on programmable intelligent material |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222192A (en) | 1988-02-17 | 1993-06-22 | The Rowland Institute For Science, Inc. | Optimization techniques using genetic algorithms |
US4935877A (en) | 1988-05-20 | 1990-06-19 | Koza John R | Non-linear genetic algorithms for solving problems |
US5893974A (en) | 1994-03-07 | 1999-04-13 | Regents Of University Of California | Microfabricated capsules for immunological isolation of cell transplants |
US5655665A (en) | 1994-12-09 | 1997-08-12 | Georgia Tech Research Corporation | Fully integrated micromachined magnetic particle manipulator and separator |
AU2813097A (en) | 1996-04-22 | 1997-11-12 | Weld Tooling Corporation | Unifield modular system of drives and controls for mobile robotic applications |
US6233502B1 (en) * | 1998-10-16 | 2001-05-15 | Xerox Corporation | Fault tolerant connection system for transiently connectable modular elements |
US6243622B1 (en) * | 1998-10-16 | 2001-06-05 | Xerox Corporation | Touchable user interface using self movable robotic modules |
US6233503B1 (en) * | 1998-10-16 | 2001-05-15 | Xerox Corporation | Space filling robotic polyhedra modules |
-
2001
- 2001-04-17 US US09/835,323 patent/US6459957B1/en not_active Expired - Lifetime
-
2002
- 2002-04-15 JP JP2002111426A patent/JP4427940B2/en not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7154362B2 (en) | 2003-11-12 | 2006-12-26 | Honeywell International, Inc. | Robotic member |
US20080147206A1 (en) * | 2004-08-30 | 2008-06-19 | Abb Ab | Control system for Real Time Applications for Cooperative Industrial Robots |
US8000837B2 (en) | 2004-10-05 | 2011-08-16 | J&L Group International, Llc | Programmable load forming system, components thereof, and methods of use |
US20110231017A1 (en) * | 2009-08-03 | 2011-09-22 | Honda Motor Co., Ltd. | Robot and control system |
US8849452B2 (en) * | 2009-08-03 | 2014-09-30 | Honda Motor Co., Ltd. | Robot and control system |
US9956531B2 (en) | 2015-01-09 | 2018-05-01 | Elwha Llc | Device including multilayer membrane to control fluid drainage and methods of use thereof |
US20160346925A1 (en) * | 2015-05-27 | 2016-12-01 | Hon Hai Precision Industry Co., Ltd. | Driving component, robot and robot system |
US9682479B2 (en) * | 2015-05-27 | 2017-06-20 | Hon Hai Precision Industry Co., Ltd. | Driving component, robot and robot system |
US20230028405A1 (en) * | 2019-12-18 | 2023-01-26 | Fondazione Istituto Italiano Di Tecnologia | Modular configurable robot, corresponding method and computer program product |
US12109695B2 (en) * | 2019-12-18 | 2024-10-08 | Fondazione Istituto Italiano Di Tecnologia | Modular configurable robot, corresponding method and computer program product |
Also Published As
Publication number | Publication date |
---|---|
JP4427940B2 (en) | 2010-03-10 |
JP2003019699A (en) | 2003-01-21 |
US6459957B1 (en) | 2002-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6459957B1 (en) | Programmable smart membranes and methods therefor | |
Rimey et al. | Control of selective perception using bayes nets and decision theory | |
Funes et al. | Evolutionary body building: Adaptive physical designs for robots | |
Jakobi | Half-baked, ad-hoc and noisy: Minimal simulations for evolutionary robotics | |
US6477444B1 (en) | Method for the automated design of decentralized controllers for modular self-reconfigurable robots | |
Koubâa et al. | Robot path planning and cooperation | |
Scheutz et al. | Architectural mechanisms for dynamic changes of behavior selection strategies in behavior-based systems | |
Yoshida et al. | A distributed reconfiguration method for 3D homogeneous structure | |
Christensen | Evolution of shape-changing and self-repairing control for the ATRON self-reconfigurable robot | |
Weel et al. | A robotic ecosystem with evolvable minds and bodies | |
Dain | Developing mobile robot wall-following algorithms using genetic programming | |
Stocker et al. | Reinforcement learning–based design of orienting devices for vibratory bowl feeders | |
Spears et al. | Artificial physics for mobile robot formations | |
Casal | Reconfiguration planning for modular self-reconfigurable robots | |
Støy | Emergent control of self-reconfigurable robots | |
Humann et al. | Evolutionary computational synthesis of self-organizing systems | |
Moussa et al. | Cluster-based distributed self-reconfiguration algorithm for modular robots | |
Ababsa et al. | Genetic programming-based self-reconfiguration planning for metamorphic robot | |
Tan et al. | Evolvable hardware in evolutionary robotics | |
Brandao et al. | Learning sequences of approximations for hierarchical motion planning | |
Bourgeois et al. | Coordination and Computation in distributed intelligent MEMS | |
Derakhshandeh et al. | Infinite object coating in the amoebot model | |
Kubica et al. | Agent-based control for object manipulation with modular self-reconfigurable robots | |
Murata et al. | Self-reconfigurable robots: Platforms for emerging functionality | |
Zhang et al. | Evolutionary design of a collective sensory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: E-TENNA CORPORATION, MARYLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LILLY, JAMES D.;REEL/FRAME:011733/0972 Effective date: 20010418 |
|
AS | Assignment |
Owner name: FUJI XEROX CO., LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BENNETT, FORREST H. III.;RIEFFEL, ELEANOR G.;DOLIN, BRADLEY E.;REEL/FRAME:012245/0522 Effective date: 20010416 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
SULP | Surcharge for late payment | ||
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |