![]() |
Distributed control and coordination of autonomous agents in a dynamic, reconfigurable systemNo:6636781 -Application no:10155489 -Filed date:2002-05-22 -Issue date:2003-10-21Abstract:Systems and techniques are described for distributed control and coordination of autonomous agents in a system. A protocol for distributed control allows autonomous agents to negotiate a group task for the agents, such as locomotion or self-reconfiguration in a robot application, and to synchronize individual agent actions to effect the group task. A protocol for adaptive communication allows autonomous agents, such as physically coupled self-sufficient robot modules, to continuously discover changes in their local topology. In general, in one implementation, the technique includes: discovering a local topology, which includes a type of a communication connection to autonomous agents in the reconfigurable network topology, and determining an action based upon a received control message and the determined local topology. US Classes:Inventors:Agents:Assignees:Claims:What is claimed is: 1. A method comprising: discovering a communication connection to autonomous agents communicatively coupled together in a reconfigurable network topology; determining a local topology including a type of the communication connection; receiving a control message having content; and in response to the control message, determining an action based upon the received message content and the determined local topology. 2. The method of claim 1, wherein said determining the communication connection type comprises identifying a first communication port and a second communication port, the first and second communication ports being communicatively coupled by the communication connection. 3. The method of claim 2, wherein said identifying the first and second communication ports comprises identifying orientations of the first and second communication ports with respect to one or more defined references. 4. The method of claim 3, wherein said identifying the orientations of the first and second communication ports comprise: identifying a first orientation of the first communication port with respect to a first robot module coupled with the first communication port, the first robot module being one of the one or more defined references; and identifying a second orientation of the second communication port with respect to a second robot module coupled with the second communication port, the second robot module being another of the one or more defined references. 5. The method of claim 2, wherein said determining the action comprises determining whether to perform a locally selected action or no action and determining whether to propagate the control message or to not propagate the control message. 6. The method of claim 5, wherein the communication connection comprises a first communication connection, the method further comprising: discovering a second communication connection, and said receiving the control message comprises receiving the control message over the second communication connection. 7. The method of claim 6, further comprising propagating the control message to the first communication connection based upon the local topology. 8. The method of claim 7, wherein said propagating the control message comprises: changing the control message; and transmitting the changed control message over the first communication connection. 9. The method of claim 7, further comprising performing the locally selected action. 10. The method of claim 2, wherein the control message comprises a first control message, the action comprises a maneuver, and wherein said determining the action comprises: based upon a locally selected action, the first control message and the local topology, generating a second control message to coordinate collective behavior of the autonomous agents. 11. The method of claim 10, wherein said determining the action further comprises: transmitting the second control message; receiving additional control messages to coordinate the collective behavior of the autonomous agents; resolving conflicts among actions of the autonomous agents, including the locally selected action; and performing the maneuver. 12. The method of claim 1, further comprising: before each of a plurality of maneuvers, repeating said discovering a communication connection and said determining a local topology; and performing the plurality of maneuvers in collaboration with the autonomous agents to effect collective behavior. 13. The method of claim 12, wherein the autonomous agents comprise robot modules coupled together to form a self-reconfigurable robot, and wherein the collective behavior is reconfiguration or locomotion of the self-reconfigurable robot. 14. A robotic system comprising: a plurality of robot modules in communication with each other and forming a reconfigurable network topology; each robot module comprising: one or more actuators to cause movement of the robot module; a communication interface to send and receive messages to and from the other robot modules, the communication interface forming one or more communication connections; and a machine-readable medium embodying information indicative of instructions for causing the robot module to perform operations comprising: sending control signals to the one or more actuators to cause the robot module to perform actions; and before each of the actions, discovering a local topology including one or more types of the one or more communication connections. 15. The system of claim 14, wherein said discovering the local topology comprises determining mutual communication connection ports used on either side of the one or more communication connections. 16. The system of claim 15, wherein the operations further comprise: receiving a control message having content; and in response to the control message, determining a current action based upon the received message content and the determined local topology. 17. The system of claim 14, wherein each robot module further comprises four connectors to physically link the robot module with the other robot modules to create a self-reconfigurable robot. 18. The system of claim 17, wherein the communication interface comprises four optical transceivers to communicatively link the robot module with the other robot modules. 19. The system of claim 17, wherein the messages provide distributed control of the reconfigurable robot by propagating through the reconfigurable robot based upon the discovered local topology to coordinate collective behavior of the reconfigurable robot. 20. The system of claim 19, wherein the collective behavior comprises locomotion of the self-reconfigurable robot. 21. A robot module comprising: means for coupling with a plurality of robot modules; means for discovering local topology between each of a plurality of maneuvers; and means for performing the plurality of maneuvers in collaboration with the plurality of robot modules to effect collective behavior. 22. The robot module of claim 21, wherein the means for coupling comprises four connectors and four optical transceivers. 23. The robot module of claim 21, wherein the means for discovering local topology comprises: means for establishing an active communication link with another robot module; and means for determining mutual communication connection ports used on either side of the active communication link. 24. The robot module of claim 21, wherein the means for performing the plurality of maneuvers comprises: one or more actuators; and means for generating messages to coordinate the collective behavior by triggering multiple different behaviors in the plurality of robot modules. 25. The robot module of claim 21, wherein the collective behavior comprises reconfiguration of the plurality of robot modules to form a reconfigured network topology. 26. A machine-readable medium embodying information indicative of instructions for causing one or more machines to perform operations comprising: discovering a communication connection to autonomous agents communicatively coupled together in a reconfigurable network topology; determining a local topology including a type of the communication connection; receiving a control message having content; and in response to the control message, determining an action based upon the received message content and the determined local topology. 27. The machine-readable medium of claim 26, wherein said determining the communication connection type comprises identifying a first communication port and a second communication port, the first and second communication ports being communicatively coupled by the communication connection. 28. The machine-readable medium of claim 27, wherein said identifying the first and second communication ports comprises identifying orientations of the first and second communication ports with respect to one or more defined references. 29. The machine-readable medium of claim 28, wherein said identifying the orientations of the first and second communication ports comprises: identifying a first orientation of the first communication port with respect to a first robot module coupled with the first communication port, the first robot module being one of the one or more defined references; and identifying a second orientation of the second communication port with respect to a second robot module coupled with the second communication port, the second robot module being another of the one or more defined references. 30. The machine-readable medium of claim 26, wherein said determining the action comprises determining whether to perform a locally selected action or no action and determining whether to propagate the control message or to not propagate the control message. 31. The machine-readable medium of claim 30, wherein the communication connection comprises a first communication connection, and the operations further comprise: discovering a second communication connection, and said receiving the control message comprises receiving the control message over the second communication connection. 32. The machine-readable medium of claim 31, wherein the operations further comprise propagating the control message to the first communication connection based upon the local topology. 33. The machine-readable medium of claim 32, wherein said propagating the control message comprises: changing the control message; and transmitting the changed control message over the first communication connection. 34. The machine-readable medium of claim 32, wherein the operations further comprise initiating performance of the locally selected action. 35. The machine-readable medium of claim 26, wherein the control message comprises a first control message, the action comprises a maneuver, and wherein said determining the action comprises: based upon a locally selected action, the first control message and the local topology, generating a second control message to coordinate collective behavior of the autonomous agents. 36. The machine-readable medium of claim 35, wherein said determining the action further comprises: transmitting the second control message; receiving additional control messages to coordinate the collective behavior of the autonomous agents; resolving conflicts among actions of the autonomous agents, including the locally selected action; and initiating performance of the maneuver. 37. The machine-readable medium of claim 26, wherein the operations further comprise: before each of a plurality of maneuvers, repeating said discovering a communication connection and said determining a local topology; and initiating performance of the plurality of maneuvers in collaboration with the autonomous agents to effect collective behavior. 38. The machine-readable medium of claim 37, wherein the autonomous agents comprise robot modules coupled together to form a self-reconfigurable robot, and wherein the collective behavior is reconfiguration or locomotion of the self-reconfigurable robot. Text:STATEMENT AS TO FEDERALLY SPONSORED RESEARCHThe invention described herein was made in the performance of work under DARPA/MTO contract #DAAN02-98-C-4032, AFOSR award #F49620-97-1-0501 and AFOSR award #F49620-01-1-0020, and is subject to the provisions of Public Law 96-517 (35 U.S.C. 202) in which the contractor has elected to retain title. BACKGROUNDAgents are software entities. Many agents may run as processes in a single computer. Agents may run in multiprocessors or in computers that are connected by a communications network such as a LAN, the Internet or a wireless system. One or many agents may run in physically realized devices such as automobiles, tanks, trucks, ships or robots. They may run in modules that are used to make robots that may be homogeneous, heterogeneous, serially connected or lattice based. An agent can exhibit an individual behavior or more desirable a set of agents may exhibit a coordinated group behavior. The actual group behavior depends on both on the coordination signals and the method of communication. Reconfigurable robots may be classified as homogeneous robots and heterogeneous robots. In a homogeneous robot and/or in a heterogeneous robot, the position of a robot module in the robot may define the module's function, or the function of the module may define its position in the robot. Reconfigurable robots also may be classified by whether their modules are organized in a lattice or not. Lattice-based robots are usually homogeneous and need to reconfigure in order to move (i.e., as their topology changes, their center of mass translates accordingly). In contrast, non-lattice robots can either translate while reconfiguring or their reconfiguration and locomotion stages can be separated. This separation allows them to reconfigure and then select an efficient configuration-dependent gait. Both master control and master-less control systems have been proposed. In a master controlled system, a designated control module sends multiple commands to individual modules and synchronizes their actions. In a master-less control system, each module manages its own actions. To ensure synchronization between modules in a master-less control system, every module may have an internal clock that is synchronized with all the others modules. SUMMARYThe present application teaches a biologically inspired approach to communication among and control of autonomous agents communicatively coupled together in a reconfigurable network topology. A protocol for distributed control allows autonomous agents to negotiate a group task, such as locomotion or self-reconfiguration, for the agents and to synchronize individual agent actions to effect the group task. A protocol for adaptive communication allows autonomous agents, such as physically coupled self-sufficient robot modules, to continuously discover changes in their local topology in order to collaborate and coordinated their collective actions. According to an aspect, a local topology is discovered, where the local topology includes a type of a communication connection (e.g., number and nature of available communication links) to autonomous agents communicatively coupled together in a reconfigurable network topology. Coordination may be achieved using control messages. A control message having content is received, and, in response to the control message, an action is determined, and possibly executed, based upon the received message content and the determined local topology. Implementations of the systems and techniques described here may occur in hardware, firmware, software or a combination of these, and may include machine instructions for causing a machine to perform the operations described. Details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features and advantages may be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGSThese and other aspects will now be described in detail with reference to the following drawings. Like reference symbols in the various drawings indicate like elements. DETAILED DESCRIPTIONThe systems and techniques described here relate to communication among and distributed control and coordination of autonomous agents. The description that follows frequently discusses distributed control and coordination of autonomous agents in the context of self-sufficient robot modules that may physically couple together to form larger robots of various configurations. However, the systems and techniques described here are not limited to the physically coupled robot examples (e.g., static human assembled configurations, or dynamic robot selected and implemented configuration), and may apply equally to any system of autonomous agents that communicate with each other, regardless of whether the autonomous agents reside in robot modules, which may be physically coupled together. In general, autonomous agents may form a self-reconfigurable robotic system that can change its configuration, and thus its network topology, to accomplish various tasks. For example, a self-reconfigurable robotic system may be a metamorphic robot made up of modules that can physically connect and reconnect in various ways to change the robot's shape and size to meet operational demands. Metamorphic robots may be highly desirable in tasks such as fire fighting, search and rescue, and battlefield reconnaissance, where robots must go through unexpected situations and obstacles and perform tasks that are difficult for fixed-shape robots. For example, to maneuver through difficult terrain, a self-reconfigurable robot may transform into a snake to pass through a narrow passage, grow a few legs to climb over an obstacle, or become a ball to roll down a slope. Similarly, to enter a room through a closed door, a self-reconfigurable robot may disassemble itself into a set of smaller units, crawl under the door, and then reassemble itself in the room. To rescue a child trapped deep in rubble in an earthquake, a set of small self-reconfigurable robots may merge to form a larger robot to cooperatively carry an oxygen cylinder that would be too heavy for the original robots. Moreover, the autonomous modules may support inter-robot metamorphing, such as merging of two self-reconfigurable robots into a larger robot or splitting of a self-reconfigurable robot into two smaller robots. Inter-robot metamorphing offers a tradeoff between the characteristics of a single large robot (e.g., high payload capacity) and the characteristics of a group of small robots (e.g., an ability to perform simple tasks in parallel). A group of small robots may explore a large area, such as the surface of a planet or a minefield. When the small robots complete this parallel operation, they may merge into a single large robot capable of carrying the tools needed to examine discoveries made during the wide-area search. An autonomous module may have its own controller, operating system, applications software and other software modules such as agents, communication interface(s), power source, sensors, actuators, and connectors. A single autonomous module with control over its sensors and actuators can be an independent and self-sufficient robot. Multiple modules connected together can be a self-reconfigurable robot. The modules themselves can autonomously change the connections between modules, and a module may communicate with its neighbors, such as through communication connections established between connected modules. The module For example, a docking region may provide five connectors on five facets, where any of the five connectors can couple with any of the connectors of another module. Alternatively, the docking regions on either side of a module may have different functional characteristics, such as one docking region having a different number of connectors than the other, and/or a portion of connectors being passive connectors and the remaining connectors being active connectors. A connector on a module may be power efficient such that the connector consumes no energy when in its default state. Moreover, a connector may provide one or more conduits for a communication interface and/or power sharing between modules. A module may include a wireless communication system to enable remote communication, which may be used in initiating a merger of two robots. The wireless communication system may use multiple channels (e.g., a local communication channel and long range communication channel) and may be used for communication between two connected modules as well. For example, an optical transceiver, such an infrared (IR) transceiver, may serve as a communication system for both connected robot modules and for unconnected robot modules. A robot module may be reduced in size to increase a ratio of actuator torque to module size. However, scaling down the robot module may be limited by an amount of power consumed by internal electronics, as well as performance, weight and size characteristics of available actuators and power sources. In addition, design goals, such as expected independent operation time, actuator speed and lifting power (e.g., the number of modules an actuator is expected to manipulate), can impose limits on the size of the robot module. The robot module When the robot module The communication system The actuators The control system The memory The I/O system Moreover, one or more I/O ports may be provided, such as communication ports or non-communication ports. An example communication port is a generic port provided to allow the robot module The docking process may have three basic stages: (1) the docking modules move close enough so that they can sense each other's docking guidance signals; (2) the docking modules use the docking guidance signals to maneuver their locations and orientations so that their connectors are aligned and close to each other; and (3) the docking modules push their connectors into each other. The two docking modules may be free-floating (e.g., attached to different self-reconfigurable robots) or non-free-floating (e.g., attached to the same self-reconfigurable robot). In the later case, movement of the modules may be related and can influence each other. Thus, all three stages may involve many modules in addition to the two to be docked in the configuration. In the following discussion of the three stages, communication between modules is subject to the constraint that modules can only talk to their immediate neighbors. Thus, a message from the head of a snake robot to the tail module must relay through all modules in the body. This communication constraint may favor a distributed control process over a centralized control process. To bring two modules close enough for docking, it may be assumed that the two docking modules are connected through a chain of modules in a current configuration, and this chain is long enough so that it can bend to allow the two docking modules to sense and touch each other. If a robot configuration is viewed as a graph with modules as nodes and connections as edges, then the docking chain is the shortest path in the graph between the two docking module nodes. Additional details regarding this first stage of docking are described further below. In self-reconfigurable robots, the movements of two docking modules may be constrained by the current robot configuration, and thus both sides of the docking may need to adjust their orientations (o and p) to achieve the desired alignment. Various search strategies may be used to collaboratively adjust the orientations of the two docking modules. For example, the two modules may engage in a leader-follower relationship and adjust their orientations jointly in a hill-climbing search for the maximum measurement of guidance signals. Whenever the leader module, which could be chosen arbitrarily, rotates to an orientation o, it can ask the follower module to perform a scan and find/report an orientation p for the follower that gives the best guidance signal measurement m The value p and m To decide the direction for orientation search, the leader first evaluates two consecutive joint alignments (o, (p, m Once the direction of orientation search is determined, the above procedure can be used for the leader to find the best alignment by hill-climbing. Let (o, (p,m Once the best alignment has been found, the two docking modules must move towards each other in the trajectory specified by the alignment. This will reduce the distance between the two modules and increase the value of m The final pushing stage involves pushing the two modules toward each other in the trajectory specified by the alignment. Such movements, which are also used to reduce the distance between docking modules during alignment, may involve coordinated actions of multiple modules using inverse kinematics. Such coordinated movements can provide the necessary pushing force for the final docking stage. Since the movement should follow the trajectory, the distance of the movement should be small enough that a smooth movement may be assumed. The computation of inverse kinematics can be distributed among modules, as is described further below. The final pushing should also be strong enough to overcome any friction associated with the connectors of the two modules. This friction can be a significant obstacle in self-reconfigurable robot because the strengths of modules' motors may be limited. To overcome this problem, a technique of dynamic lubrication may be used. During the latching and locking stage, the two docking modules may perform high-frequency small shaking movements while pushing forward. Such movements can significantly reduce the friction during docking and ensure that the docking connectors securely latch together. One action that is frequently used in docking is to move a docking module on a given trajectory. For example, after two docking modules are aligned, they move along their tip directions respectively to reduce the distance between them. Similarly, such movement is also used to push the docking connectors together. To generate such actions, a chain of modules immediately connected to the docking module may coordinate their movement using inverse kinematics. This is similar to the classic robotics problem of controlling a robot arm to put a peg into a hole. The difference is that each module in a reconfigurable robot is an independent and autonomous system, while in classic robotics applications all motors and sensors are controlled by a single computer. To distribute the computation for inverse kinematics among reconfigurable modules, consider a three-module chain (1) x3=m Cos(θ1)+m Cos(θ1+θ2)+n Cos(θ1+θ2+θ3) (2) y (3) α=θ Assume the tip is to be moved along the a direction by a distance δ, then the new tip position (xâ²3, yâ²3), the new middle position (xâ²2, yâ²2), and the new module angles θâ²1, θâ²2, and θâ²3, can be computed as follows: (4) xâ² (5) yâ² (6) xâ² (7) yâ² (8) W=a tan (yâ² (9) θⲠ(10) θⲠ(11) θⲠLet the three modules from the origin to the tip of the chain be named as M M M D=B+m Sin(Ï) and sends [Ï,C,D] to M M M M M M This example illustrates that by sending intermediate results to neighbor modules, a chain of modules can compute the inverse kinematics in a distributed fashion. This style of computation is both desirable and sometimes necessary for self-reconfigurable robots because no single module may be assumed always available as the control center and every module is independent, autonomous, and may have very limited on-board computation resource. The control system The first end The active connector Disconnecting the two connectors may be initiated by rotating the engagement latch Use of an SMA wire provides a large change in length for the wire, which can be useful in constructing small latching mechanisms. However, an SMA wire can consume a large amount of power. Thus, to help in reducing an amount of time that the SMA wire is contracted, a disengagement latch Referring again to A communication protocol (e.g., an Adaptive Communication protocol) between modules may be built on top of a low level communication initiation protocol. Such an initiation protocol may involve a handshake routine between a sender and a receiver to check for and establish an active link. For example, when the sender wants to send a message, it may turn on its infrared transmitter and wait for the receiver to respond. When the receiver detects the signal, it may turn on its transmitter to inform the sender of its presence, and both sender and receiver may then enter a serial communication protocol (e.g., RS232 with 9600 baud rate). Message can then be sent and received. If there is no receiver at the other end, then the sender does not get a response and the send( ) procedure returns a time out failure. An IR transceiver also may be used for docking guidance. As discussed above, two IR transceivers may be used as docking proximity sensors for guiding two modules together during a reconfiguration action. Thus, the robot module A current set of communication connections between modules of a self-reconfigurable robotic system represents a current network topology for the robotic system. Thus, the network topology provides information about current system capabilities. In a physically connected robot example, the network topology may correspond to the physical configuration of the robot, and thus the network may inherently represent physical capabilities of the robot. In a non-connected robotic system example, the network topology may correspond to robot densities over an area, and certain tasks may require a certain number of robots in a team. Thus, the network may inherently represent functional capabilities of the robotic system. The modules of the self-reconfigurable robotic system form a dynamic communication network in which nodes can arbitrarily change their communication links with other nodes. Communication among the autonomous modules may be adaptive to topological changes in the network, including unexpected changes, such as a leg suddenly being cut off. Moreover, the autonomous modules may collaborate to accomplish group tasks, including synchronization of individual actions in order to accomplish desired global effects, such as reconfiguration, locomotion, navigation and manipulation. The robotic system Similar to a biological system, a hormone is a control message that travels among modules in one or more robots, triggering and coordinating their actions to accomplish complex tasks. A hormone need not have a specific destination module, and thus modules that use hormones need not have specific addresses or identifiers. Different types of hormones serve different purposes, triggering modules with different local topologies (given a current configuration) to perform different actions. Hormones may be used for distributed robot control in a robotic system, and hormones may also serve as a synchronization signal between modules in a reconfigurable robot in order to produce a desirable global result. Upon receiving a hormone, a module may combine an action code in the hormone with the role of the module in the current robotic system configuration, and the module may then use this information as an index to retrieve an appropriate action from reaction tables stored in the module. The module may then execute a retrieved action, such as use sensors and/or actuators, and/or modify the hormone's action code and/or progress bits, etc., and pass the possibly modified hormone to the next module. A hormone may have a life span, and a hormone may propagate through an entire network of modules, yet cause different modules to react differently based on their local receptors, topology connections, and/or state information. A module can dynamically discover local topological changes in a dynamic network and adjust its communication strategy accordingly. A common protocol for all modules can be designed so that predetermined hormones propagate to every module in the network once and only once, regardless of changes in network topology (i.e., adaptive communication). Moreover, each module may have a set of hormone receptors implemented as a set of local rules that allow modules to react to hormones based on their local topology information, and select and synchronize their local actions to achieve the desired global results (i.e., distributed control). A module All modules Such hormones may also be used to extend or alter the functions of a module's local engine so that the responses to new and old hormones can be dynamically programmed and altered. This ability may allow dynamic changes in the functions of robot modules, in a way that is similar to the biological hormones that can enter the cell nucleus. The discovery of communication connections and the determination of local topology may be viewed as a single process of discovering a current local topology. This process of discovery may be repeated between each of a plurality of maneuvers to be performed by a robot module. Thus, the robotic system may continuously discover changes in network topology while its component modules perform actions, such as sending control signals to the one or more actuators, thereby allowing coordination of collective behavior of the modules under changing conditions. Discovering the local topology may involve first establishing an active communication link with another robot module, such as by initiating a communication handshake protocol on each available communication interface, and then determining mutual communication connection ports used on either side of the an established active communication (i.e., a discovered communication connection). Determining the communication connection type may involve identifying a first communication port and a second communication port used by a communication connection. Identifying the first and second communication ports may involve identifying orientations of the first and second communication ports with respect to one or more defined references, such as a compass direction or the robot modules on either side of the communication connection. For example, identifying the orientations of the first and second communication ports may involve identifying whether each communication port is a left, right, front or back communication interface on their respective robot modules. Thus, on each cycle in an autonomous agent, a probe may be sent to discover all current neighbor agents and how those neighbor agents are communicatively connected with the local agent. Repeating this discovery process before performing an action, or deciding to perform no action based upon control message(s), in each cycle allows collaboration with the autonomous agents to effect collective behavior in a dynamically changing network topology. A control message having content is received at Propagation of the control message may involve forwarding the control message from an active in-link (the connection through which the message arrived) to one or more active out-links. Alternatively, propagation may involve changing the control message, and transmitting the changed control message over one or more active out-links. Thus, message propagation differs from a traditional message broadcast. There is no guarantee that every node in the network will receive the same copy of the original message because the message may be modified during its propagation. Additionally, the manner of propagation and/or whether or not to propagate the control message may be based upon the local topology. Determining an action to be performed may involve generating one or more additional control messages to coordinate collective behavior of the autonomous agents. This generation of additional control message may be based upon a locally selected action, the first control message and the local topology. Still further control messages may be received in response. These various control messages may be propagated through the robotic system to resolve conflicts among actions selected by the autonomous agents. Thus, a locally'selected action (e.g., a maneuver of a robot module) may be performed after it is modified due to a conflict resolution process. Additional details of an example conflict resolution process are described below. The robot module
These local topology types are based on how a robot module is connected to its neighbors. Such topology type information may be used to represent a local topology for an autonomous agent in a dynamic communication network. The module Based on the description of self-reconfigurable modules above, we can define a self-reconfigurable communication network as a connected, undirected graph that has the following properties: (1) each node is a self-reconfigurable module; (2) each node has finite, named connectors, and two connectors of two modules can join and form an active link but one connector can only be in at most one active link; (3) each edge of the graph is an active link; (4) the topology of the network may change dynamically (i.e., existing active links may disconnect and new active links may appear); (5) nodes communicate through active links; (6) nodes do not have unique IDs and do not know the size of the network. Pseudo code implementing an adaptive communication protocol may be written as follows:
Robot modules in a communication network may use this Adaptive Communication (AC) protocol to handle topological changes in the network. For example, each module may run the same AC protocol so that local network topology is rediscovered before each discrete action to be taken. The main procedure is a loop of receiving and sending (propagating) control messages (called hormone messages) between neighbors, and selecting and executing local actions based on these messages. With this protocol, every module is able to detect changes in its local topology through its active links. The modules send probe messages to their connectors to discover if the connectors are active or not. The results of this discovery, the received probe messages, are maintained in a vector variable LINK[C], where C is the number of connectors for each module (e.g., C=4). For the purposes of this discussion, the procedure called âSelectAndExecuteLocalActionsâ includes only a trivial local action. When LocalTimer=0, a module will generate a test hormone to propagate to the network. Other possible local actions are introduced below. If there is no active link on a connector c (or an existing active link on c is disconnected), then sending of a probe to c will fail and LINK[c] will be set to nil. If a new active link is just created through a connector c, then sending a probe to c will be successful and LINK[c] will be updated. After one exchange of probes between two neighbors, both sides will know which connector is involved in the new active link and their LINK variables will be set correctly. For example, if an active link is created between the connector x of module A and the connector y of module B, then LINK[x]=y for module A, and LINK[y]=x for module B. Biologically speaking, the probe messages are analogous to the chemical signals released by a cell to its neighboring space. The LINK[C] variable can represent the local topology types of modules described in Table 1. For example, a module is type T This AC protocol has a number of important properties. First, using the AC protocol, all modules can adapt to the dynamic topological changes in the self-reconfigurable network and discover their local topology in a time less than two cycles of the main loop. The updated local topology information is stored in LINK[c]. Initially all LINK variables have a nil value. If a module has a neighbor on its connector c, then LINK[c] will be set properly when this module receives a probe on that connector. Since every module probes all its connectors in every cycle of the program, the LINK[c] will be updated correctly with at most two cycles. Second, if the network is an acyclic graph, then the AC protocol guarantees that every hormone message, excluding probe messages, will be propagated to every module in the network once and only once. When a new hormone is generated in a module (e.g., [Test,*,*,*] in the pseudo code above), the new hormone is sent to all active links from that module. When a module receives a hormone, the module sends the hormone to all active links except the link from which the hormone is received. Since the network is acyclic, the generator module can be viewed as the root of a propagation tree, where each module will receive the hormone from its parent, and will send the hormone to all its children. The propagation terminates at the leaf nodes of this propagation tree. The leaf nodes are the modules with no active links other than the one on which the hormone is received. Since the tree includes every module, the hormone reaches every module. Since every module in the propagation tree has only one parent, the hormone will be received only once by any module. For networks that contain loops (i.e., the network is a cyclic graph), the AC protocol may be augmented to include a check of additional local information (other than the topological types) to break the loop of communication. An example of this augmentation is described below in connection with control of rolling tracks. The above-described AC protocol may be extended to implement a distributed control mechanism for modules in a self-reconfigurable robotic system. This distributed control mechanism may allow robot modules to collaborate and synchronize their actions to accomplish group tasks, such as reconfiguration, locomotion, navigation and manipulation. To completely specify this gait, one can use a conventional gait control table as shown in Table 2.
Each row in Table 2 corresponds to the target positions for all modules in the snake configuration To implement a caterpillar gait using the ADC protocol, the shifting pattern among the actions performed by the modules, as illustrated by Table 2, is incorporated into the protocol. The action performed by a module M at step T is the action to be performed by the module (Mâ1) at step (T+1). Thus, instead of maintaining the entire control table, the caterpillar gait is represented and distributed at each module as a sequence of motor actions (+45°, â45°, â45°, +45°). If a module is performing this caterpillar gait, it selects and executes one of these actions in a way that is synchronized and consistent with its neighbor module. To coordinate the actions among modules, a control message can be propagated through the snake. Each module uses the propagating control message to inform its immediate neighbor what action it has selected so the neighbor can select the appropriate action and continue the control message propagation. This hormone-inspired distributed approach to controlling the snake robot An ADC protocol for a current robot configuration causes each module in the robot configuration to react to received hormones with appropriate local actions. These actions may include commands to local sensors and actuators, updates of local state variables, as well as modification of existing hormones or generation of new hormones. Modules determine their actions based on the received hormone messages, their local knowledge and information, such as neighborhood topology (e.g., module types) or the states of local sensors and actuators. Additional pseudo code can be added to the pseudo code above as follows: SelectAndExecuteLocalActions(type, data) {// Select appropriate actions based on // type, data, LINK, LocalTimer, and RULEBASE; Actions SelectActions(type,data,LINK,LocalTimer,RULEBASE); For each action a in Actions, do ExecuteAction(a); } RULEBASE: {// The rules here are similar to the receptors in biological cells. // They are task-specific âif-thenâ rules as those in Table 3; // Although each desired task has a different set of rules, // the rules can be combined together if they are not conflicting. } This pseudo code implements an ADC protocol for the i snake robot Table 3 shows a rulebase for an example global behavior of caterpillar movement.
In Table 3, the type of the hormone message is called CP, and the data field contains the last and current values for DOF All modules in the robot may have the same set of rules, but they can react to hormones differently because each module has different type and local state information. For example, the first four rules trigger the head module (type T A module may become the generator of a hormone sequence in two ways. The module can be either self-promoted or instructed. In the self-promoted case, a local sensor routine might be triggered by an external stimulus or a current hormone management routine might trigger another hormone management routine. In response to the trigger, the routine may assign a value to a local variable to indicate which hormone sequence is currently being generated. In the instructed case, a module assigns a value to this local variable because it is instructed to do so by a special hormone trigger message. Similarly, a module stops producing hormones if this local variable is set to nil, either by self-promotion or by an external instruction. The ADC protocol has a number of advantages. First, it supports online reconfiguration and is robust in handling configuration changes. For example, when a snake is cut into two segments, the two disconnected modules will quickly change their types from T In general, the ADC protocol may provide a variety of benefits. The ADC protocol may be distributed (e.g., no predefined control module) and fault-tolerant (e.g., damage to single modules may not paralyze the entire system). The ADC protocol may support global collaborative behaviors, such as locomotion and self-reconfiguration, without requiring modules to have unique identifiers, since modules can determine their behaviors based on their topology types and/or other local information. The ADC protocol may provide coordination and synchronization without a need for real-time clocks. The ADC protocol may provide a robust and scalable control mechanism in a reconfigurable robotic system. The ADC protocol can be applied to many different robot configurations using different sets of rules. Table 4 shows a rulebase for an example global behavior of walking in a legged robot.
In this class of configuration, the module types are similar to the hexapod robot The first two rules indicate that the head module, which is type T This control mechanism robustly handles changes in configurations. For example, one can dynamically add or delete legs from this robot, and the control will be intact. The speed of this gait can be controlled by the value of MaxClock, which determines the frequency of hormone generation from the head module. Table 5 shows a rulebase for a rolling track robot.
The hormone used here is of type RL, and its data field contains two values of DOF Notice that the loop configuration is a cyclic network and module types are no longer sufficient to determine local actions (in fact all modules in the loop have the same type T Hormone-inspired distributed control can also be applied to the control of a cascade of actions, where actions are organized in a hierarchical structure and a single action in a higher-level can trigger a sequence of lower-level actions. To control this reconfiguration, the high-level actions are a sequence of leg-tail assimilations, while the lower-level actions are those that enable the tail to find a foot, to align and dock with the foot, and then disconnect the leg from the body. Using hormones, the control of the reconfiguration can be accomplished as follows. One module in the robot first generates a hormone (called LTS for changing Legs To Snake). This LTS hormone is propagated to all modules, but only the foot modules (which are types T A RCT hormone will trigger the tail module (type T The details of these lower-level actions are described above in connection with FIG. Table 6 lists an example sequence of hormone activities for assimilating four legs as shown in FIG.
In classic inverse kinematics theory, the tail-attaching action is a hyper-redundant problem. To bring the tail to its docking position, some intensive matrix computation may be performed to determine the bending angles for all the modules involved in the action. Multiple solutions do exist, so that a system design may make a choice among solutions based on the domain knowledge. In the context of hormone-based control, however, a technique called near-regular-polygon may be used to derive a solution that is efficient to compute and suitable for hormones. Let α=360/N and η=IR_Approximate_Sense(Mtail), 1. α=α+Î, /* Î is a small constant */ 2. β=(360â(Nâ2)α)/2, 3. Move DOFs using α and β, 4. ηâ²=IR_Approximate_Sense(Mtail), 5. If η<ηâ², then η=ηⲠand goto 1, 6. If ηâ§Î·â², then stop. As can be seen, this algorithm terminates when the IR approximate sensor value reaches a maximal point. This is a closed loop converging algorithm. In a self-reconfigurable robot where motors do not have high-precision controls, a closed-loop converging algorithm may be more reliable than an open-loop algorithm. The synchronization techniques described above have used hormones to serially synchronize robot modules to create a global behavior. However, hormones may also be used to perform parallel synchronization. In parallel synchronization many actions start at the same time, for example a spider robot should move its legs simultaneously to perform a successful walking gait. After performing a current action, a new action is selected and started synchronously using a signal of when to start the action. A hormone-based synchronization algorithm, which runs on each module in parallel, may be used to provide a common starting time for synchronized actions. Generally, for a given task, a module can infer that all other modules have selected and are ready to start their actions when the module receives an expected number of action-selection or synchronization hormones from all of its neighbors. The expected number of hormones for a neighbor is the number of active links of that neighbor. Two types of hormones may be used for this synchronization: (1) action-specifying hormones (ASH), and (2) synchronization hormones (SH). For example: ASH(task, action, LT, maxTime) SH(task, label (list of hormones), LT, maxTime) In performing a task, when a module selects an action, it generates and propagates an action-specifying hormone, e.g. ASH(move, a For example, A expects 2 hormones from its bf neighbor module B (for B has 2 active links). C expects 2 hormones from its fb neighbor (B) and 1 hormone from its bf neighbor D (for D has 1 active link). [bf(?),fb{a The â?â sign represents hormones that are expected. For example, B has two active link buffers: fb expected 1 and received 1 hormone, a
Compared to the centralized control system with a standard message passing protocol, which requires O(n The properties of hormones may make them ideal for specifying tasks in a distributed system with near-minimal communications. This process is initialized by a task-specifying hormone TSH, whose format is: TSH(task, gait, module-type, LT, maxTime). Upon receiving a task-specifying hormone, a module selects a gait based on its type. The type of a module usually gives useful information about the type of gaits that a module can perform. For example, if all modules of a robot are of type T Therefore, if gait selection is done synchronously, all modules can find out what other modules have selected and choose the right gait. For example, when module A in In the description above, it was assumed that when modules select and synchronize their actions, there is no conflict among the selected actions. In reality, since modules select actions independently, it is possible that actions of two modules violate some constraints in their gait definition. Therefore a conflict resolution phase may be used. The first step in conflict resolution is constraint checking. This involves checking the selected actions in the internal representation, gathered during the action selection phase such as the ones described in connection with A constraint matches the internal representation of a module if there is an exact match between the link-pairs of a constraint and a sequence of labels connecting two actions in the internal representation. For example, the constraint given in the caterpillar gait, i.e. (a The decision of which action to change can be based on the Life-Time (LT) of the action-specifying hormone. Between the two actions the one with smaller LT value can be selected. If conflict is detected before propagation, the selected action can be changed and a consistent action propagated. However, in situations where the action is already propagated, a conflict-resolution hormone (CRH) can be propagated. The format of CRH may be: CRH(task, ASH, constraint , LT, maxTime). A CRH contains the conflicting hormone and the violated constraint. In the above example, assuming that the hormone containing a When the module whose action is the source of conflict receives the CRH, it selects an action that satisfies the constraint included in the CRH and generates a new ASH containing the new action and propagate the hormone. In the above example, module âCâ, which selected a The activities described above may be part of an algorithm, such as the following: When a (task) received do } Select a gait with Parallel Synchronization & Conflict Resolution; If (the synchronization of the selected gait is âParallelâ) } selectAction(selectedGait) While (task-specification hormone is active) { propagte(selectedAction); parallelSynchronization&ConflictResolution( ); execute(selectedAction); selectNextAction(selectedAction, selectedGait); } } If (the synchronization of the selected gait is âSerialâ) { selectAction(selectedGait); While (task-specification hormone is active) { execute(selectedAction); propagte(selectedAction); selectNextAction(selectedAction, selectedGait) } } } This algorithm may run locally and autonomously at each robot module. In addition, multiple hormones may be used simultaneously in the same robotic system to generate a global behavior. For example, multiple hormones may be generated and managed in a self-reconfigurable robot to implement locomotion. The caterpillar-move gait described above can move the robot along its body and a caterpillar-turn gait, as described below, can bend the body to the side. The combination of these two gaits can generate a circular trajectory. The caterpillar-turn gait can be defined as: Synchronization: Parallel. Actions: A list of actions (a Constraint: (a Local constraints: Synchronization between two gaits are performed using the following local constraints: if (a if (a The last two constraints are used to identify the next action of a module. They ensure that the next action of a module is the action performed by its back neighbor. Along with the constraint that restricts the bending to one and only one module, this gait shifts the bent-action between a unique pair of modules who are performing the caterpillar move. The various implementations described above have been presented by way of example only, and not limitation. For example, the logic flows depicted and described do not require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be preferable. Other embodiments may be within the scope of the following claims. Field of search:References: |
Browse by classes
Agriculture
Animals Automotives and Transportation Business and Commerce Chemistry Communications Construction Containers Electricity Energy Engineering Entertainment Fashion and Accessories Food Hardware and Tools Health and Medicine Home Industrial Information Technology Machines Materials and Material Science Miscellaneous Optics Outdoors Paper and Office Materials Physics Sanitation Technology Textiles Weaponry
Advertisements
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
