RCwiproc
between a wired video game controller and a console.
As an example of a protocol consider the english language in its vocal form. The service it provides is a means of conveying thoughts thruogh the use of sound. It assumes that all the parties involved can speak and understand english, that the medium is such that the transmission of sound waves is possible, and that meaning of the vocabulary used is the same among all parties involved. Its vocabulary is made up of 26 letters that by themselves or in groups represent a set of vocal patterns generated and recieved by all the parties involved. In this abstract defintion of vocabulary, it is not words but rather letters and the sounds they make that form the protocol. The basic format of the english language is such that the vocabulary of letters is formed into words, which each carry the meaning of the thought being conveyed. The procedural rules change based on the situation. Sometimes one person is communicating with a group of passive listeners, at other times several people are communicating with one person at once. There are even times (eavesdropping) where one or more parties are listening to a speaker not directly communicating to them.
Our Protocol
Packet Structure
A vital part of our robocup team is its communication system. Therefore an effective means of sending information across this system will need to be realized with a protocol of some sort. In general our protocol needs to allow the host to command movements and actions to the robots, while allowing the robots to provide status information back to the host. The medium will be RF signals in the 900mHz range. This means that we can assume an appreciable dropped packet rate, and interfereance from other teams, and devices. Binary data clocked at 57Kbps will be our vocabulary, and the msg format will be in packets of varying length. Specifically each packet will be divided in bytes, with the first byte consisting of a know header, followed by bytes containg the msg ID, its length, who its intended for, the data being sent, and a checksum. Below in the figure is a a detail of what each packet will look like.
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Bytes 5-19 | Last Byte |
Header (1 byte) | ID (3 bits) | DLC (5 bits) | Recipient ID (1 byte) | Data (0 - 15 bytes) | Checksum (1 byte) |
---|
The header consists of two transitions 0 to 1 and 1 to 0 spread over the time of one byte. The ID of the msg is a unique 3-bit value the identifies the type of msg being sent. In the table below is a listing of the different msgs and thier ID's. Each msg's length is described by a 5-bit value called the DLC or data length code. Who the msg is intended for is determined by which bit is set in the Recipient ID. Bits 1-5 correspond to robots 1-5, 6 corresponds to the host and 7 means the msg is meant for all robots. The format of the data section of the packet is based on the msg being sent. In most cases it is blank but for data msgs it has the following format:
Robot 1 Data (3 bytes) | Robot 2 Data (3 bytes) | Robot 3 Data (3 bytes) | Robot 4 Data (3 bytes) | Robot 5 Data (3 bytes) |
---|
With the format for the data for each robot being defined as:
Byte 1 | Byte 2 | Byte 3 |
Vx (1 byte) | Vy (3 bits) | Theta (5 bits) |
---|
MsgID | ID | ACK? | To | DLC | Data Format | Description |
---|---|---|---|---|---|---|
Wakeup | 0x01 | Yes | Individual robots | 0 | None | Host polls for each robot individually. When this msg is recieved by a robot it responds with a status msg indicating that it is ready for action. |
Go/Start | 0x02 | Yes | Individual robots | 0 | None | Intiates main process on robots. |
Vx Vy and Theta | 0x03 | No | All robots | 15 | See below | Streaming data sent to all robots in one msg. |
Stop | 0x04 | No | All robots | 0 | None | Stops all robot motion. |
Shoot Ball | 0x05 | Yes | Individual robots | 1 | Robot Angle | Commands robot to take the shot. May be folded into msg 0x04 |
Robot Stop | 0x06 | Yes | Individual robots | 0 | None | Commands an indivdual robot to stop. |
Protocol Procedural Rules
Articles
- Linx article on protocol design
- Paper on the Cylical Redundancy Check error checking algorithm (CRC)
- Enitre book on protocol design, a bit dated though like 1990 dated
- Berkeley article on wireless protocol design. Gives a real world example of how to design a wireless protocol.
- Ohio University article. Details an intresting communications method
- Paper from Maxim on Manchester Encoding
- Berkeley PPT on errors and wireless
- Circuit Cellar discussion on Manchester Encoder/Decoder
- Cornell electrical design document