|
Research
Abstracts - 2006 |
Composable Scripting for Swarm Robots with ProtoJonathan Bachrach & Anthony GrueIntroductionRobots are becoming increasingly cheap and feasible to own in quantity. The field of swarm robotics looks at using more than one robot in a cooperative and efficient manner to accomplish tasks. Unfortunately, when more than a single robot is used, the standard behavioral and goal oriented control methods become intertwined with ad-hoc network communications. As a result, a need for a lightweight and composable method of programming distributed robotics swarms is growing. We propose extending Proto [1], a functional amorphous medium language, to describe and control the behavior of individual robots with respect to their immediate neighbors such that their global behavior is easily expressed and understood. Simple Group BehaviorsWe have developed a 3D robot simulation and successfully experimented with basic distributed swarm behaviors using Proto. Proto allows distributed behaviors to be written separately and mixed and sequenced. Simulated robots are able to communicate with and sense the geographic relationship to their local neighbors. Using spatial abstractions allows high level swarm behaviors to be specified easily, and using functional composition allows behaviors to be easily combined. A first step needed to provide a platform for swarm control is the ability to describe simple group behaviors. Work has been done to develop tool kits of behaviors [2], but so far this work has been written in low level languages where network communication with neighbors is a constant concern. In Proto, all information is represented as streams, and streams can be shared/reduced between/across local neighbors. This allows for quick computation of simple group behaviors without the overhead of explicit network communication. Furthermore, behaviors can be functional composed to construct more powerful behaviors. An example of a simple group behavior that can be composed from two components is orbit robots using the follow-topo-line algorithm. Three robots behave as a source for a gradient, and all robots evaluate over their neighbors setting their gradient value to the sum of the minimum value observed and the distance from the robot that contains the value. This gradient is then used as an argument to the follow-topo-line function along with the value of the topo-line to follow. The robots following the topo-line evaluate over their neighbors to determine the tangent of the gradient and then travel along this tangent. Achieving GoalsIn addition to simple group behaviors, our aim with Proto is to be able to express more complicated goal oriented and multistep behaviors. The basic idea is to sequence behaviors based on environmental or temporal conditions. In stream terms, this amounts to concatenating conditionally truncated streams. This allows us to perform a behavior for a certain amount of time and then exit based on a time out or a goal being achieved. We can also use this ability to enter refractory periods where we can perform a certain operation for a while after a goal has been met prior to continuing with further goal pursuit. Implementing On RobotsWe are currently working on implementing Proto on the MIT Cricket [3]. We will use the crickets to control a cheap $100 robot [4] with basic sensing and movement abilities. The platform will support over the air programming using scripts written in Proto. Our goal in this implementation is to demonstrate the ease of describing goal oriented group behaviors deployed on extremely cheap and simple robots. References:[1] J. Beal, J. Bachrach. “Infrastructure for Engineered Emergence on Sensor/Actuator Networks. IEEE Intelligent Systems. March/April 2006. [2] J. McLurkin. "Stupid Robot Tricks: A Behavior-Based Distributed Algorithm Library for Programming Swarms of Robots" S.M., M.I.T., 2004. [3] N. Priyantha, A. Chakraborty, H. Balakrishnan. The Cricket Location-Support system, Proc. 6th ACM MOBICOM, Boston, MA, August 2000. [4] Mark III OOPic Version. http://www.junun.org/MarkIII/Info.jsp?item=27 |
||||
|