The Decentralized Software Services (DSS) are responsible for controlling the basic functions of robotics applications. As explained in the previous chapter, DSS is built on top of the CCR. There is a DSS base class from which all services are derived, and this draws heavily on the features of the CCR.
DSS is responsible for starting and stopping services and managing the flow of messages between services via service forwarder ports. In fact, DSS itself is composed of several services that load service configurations; manage security; maintain a directory of running services; control access to local files and embedded resources such as icons; and provide user interfaces through web pages that are accessible using a web browser.
DSS uses a protocol called, not surprisingly, DSS Protocol (DSSP). The specification for DSSP can be used for free under the Microsoft Open Software Promise. DSSP is based on the Representational State Transfer (REST) model, which should be a familiar model for anyone who has worked in web development.
In some ways, such as handling errors using faults, DSSP is similar to SOAP (Simple Object Access Protocol), which is used by web services. However, unlike web services, DSSP separates state from behavior and represents all access to a service as operations on the state. In contrast, the state of a web service is hidden. Making the state of a robot fully visible, especially sensor values, is essential to writing ...