UDP message format Basic Message (binaryMessage.h) (bytes char[32]) (int32) (int32) Primitive types The payload may contain the following data types: int8 (char) int16 int32 int8 [] int16 [] int32 [] All the data are serialized in network byte order (htons, htonl) An array is serialized as ... where is an int32, and are the values. For converting data look at the functions fromNetworkByteArray(...) toNetworkByteArray(...) in gnetwork/gformatters.h Other Messages All the message types inherite from the basic message, they change only the payload. laser message robot pose message robot sonar message synchronized laser messages (laser messages with a pose) robot commands (speed and jog) Here are the payload definitions: -laser message: (laserServer/msgudplaser.h) int16[] ranges //in centimeters -odometry massage: (robotServer/msgudprobot.h) int32 counter //incremental serial packet counter int32 x //in mm int32 y //in mm int32 heading //in 1/1000 of rad int32 speed //in mm/s int32 jog //in 1/1000 of rad/s int32 stall_left //int32 int32 stall_right //int32 -sonar message: (robotServer/msgudprobot.h) we don't use in the camp, if you want take a look at the code -syncServer message payload: (synchServer/msgudpsynchro.h) (both the laser and pose message are in the payload with the basic message header). -robotCommand message: (robotServer/msgudprobot.h) int32[] commands // the # of parameters should be less than MSG_UDP_ROBOT_MAX_COMMAND_ARGS Communication Protocol. Server side: -client subscription: a client is subscripted to the list if it sends any message (also empty) to a server -client unsubscription: after a timeout the server does not receives a message it unsubscribes the client -loop operation each cycle the server sends the data to all subscribed clients and processes the messages.