Background: What is Multi-Robot Communications?
Multi-Robot Communications is the technology of having two or more robots communicate with each other in a variety of ways. Using a technology such as an XBee Radio to communicate between multiple agents, we can create a language between the robots to share any type of information - sensor data, location/positioning or environment data. Using this communication link, we can use Multi-Robot Communication technology to solve larger and more complex challenges.
Multi-Robot Communication Concepts
In order to communicate between multiple robots, we have to establish a protocol for communication. For example, imagine when you are talking to your friends - you use words (verbal communication), facial emotions and hand gestures (visible communication). You are also able to use the nuance of language to help facilitate understanding (such as sarcasm or excitement). Robots unfortunately cannot understand such complex concepts without the help of lots of programming and processing power, which is not available to most mobile robots.
Robots are able to communicate by having some type of connection between them, such as a direct wire (such as Ethernet) or a wireless radio (such as an Xbee Radio or an 802.11 WiFi Radio). When the robots communicate, they are actually sending bytes of data back and forth at a high speed in order to share data about their surroundings. It's up to the user, however, to decide what data to send from the transmitting robot and then also how to receive and parse that data on the receiving side. We can accomplish this by using some basic commands to send data (SendString) from one end, and then use another command (ReceiveString) to capture that data. Once we have the data, we'll have to "parse" the data to understand what it means.
Parsing Data - The Common Language
In order to "parse" data that you receive, you will need to understand what the data means. Think about a time when you meet someone who speaks a different language from yourself - you probably had trouble understanding what they were saying and you may have not understood anything! Robots will have the same problem as well if they do not understand the language (or protocol) of the message. Just like humans, robots have to understand what the received information means before they can respond/react to what was said.
Humans typically understand words by having a very large library of commands/actions/information they understand know the meaning of the word. If a human does not understand a new word, they may use something like a dictionary to learn what that word means. In order to help robots understand commands they receive, we can build a dictionary of words that can understand. Having a common language is necessary for robots to understand messages. The command do not have to always be full words - we can create a special language just for the robots.
- Syntax versus semantics
- “f10” means move forward 10 cm.
- “(10, 20)” means the sender is at position (10, 20).
- There is also a common understanding of terms in the language
- Positions through a shared coordinate system
- Converting distances to motor encoder counts
Types of Communication
Now that we understand how communication takes place and how a robot is able to parse information and perform actions, it's now up to decide what type of information to send. Messages are information that one robot shares with another, or actions to be performed. Basic forms of Multi-Robot Communication rely on two types of messages - Informational and Actions.
Informational messages allow a robot to report its status or its current activities. These types of messages are used to allow other robots to make decisions based on data you have accumulated (I've traveled 500m) or your current status (I'm near the water).
- “The red square is over there.”
- “I am picking up a block.”
Action messages are used to send requests/commands to other robots. These commands typically tell a robot to perform a special behavior (such as picking up something) or gives them a distance or a parameter to travel towards.
- “Move forward 10cm.”
- “Come to the red square.”
When multiple robots are working together, the robots need a way to coordinate their actions. For example, if you have ever had to move a large object that required more than one person, you typically would not just start lifting the object yourself and hope that other people might come and assist. A team of people requires coordination to make sure that everyone is working efficiently and effectively. Robots are no different, as robots will need to be able to communicate and split tasks to complete things more efficiently. Robots can also be programmed to be effective as a group, such as moving large objects or opening up pathways for other agents that may be blocked.
However, you should also keep in mind that multiple agents acting independently is not the same as a team. Coordination is required for a team to perform well. Robots can achieve this by having a "master" or a "foreman" robot that sends out commands, or robots can work together in a "swarm" to apply as many resources to a single task to accomplish something that may not be possibly with an individual robot.
- Playing Soccer
- Children - Everyone chases the ball
- Trained Soccer Team - Everyone has known positions (goalie, forward, defense)
- Splitting Tasks - I sweep the floor, you clean the windows.
- Cooperative Tasks - Doing things together, such as carrying a table.