As an example, consider the two drivers p2os_position and rwi_position, which control Pioneer mobile robots and RWI mobile robots, respectively. They both support the position interface and thus they both accept commands and generate data in the same format, allowing a client program to treat them identically, ignoring the details of the underlying hardware. They also accept configuration requests in the same format, but not all configuration requests are supported by both drivers. For example, motor power can be toggled from software with Pioneer robots but not with RWI robots. Thus the p2os_position driver supports the configuration request to toggle motor power, while the rwi_position driver does not.
All client/server interaction is done by interface, with no reference to the underlying driver3.3. So, for example, if Player has been configured to control a single position device with index 0 and driver p2os_position (see Chapter 4 for how specify this information), then the client opens and controls the 0th position device. Player could also be configured to control a second position device with index 1 and driver rwi_position; to access it, the client would open the 1st position device.
Details on Player's device interfaces and drivers are given in Chapters 6 & 7, respectively.