DCM stands for “Device Communication Manager”.
The DCM is the software module, part of the NAOqi system, that is in charge of the communication with all electronic devices in the robot (boards, sensors, actuators...) except the sound (in or out) and the camera. It manages the main communication line: the USB link with the ChestBoard. But there is also an I2C link with devices in the robot head. Thus, the DCM is the link between the “upper level” software (others modules) and the “lower level” software (soft in electronic boards). Modules like ALMotion and ALLEDs directly send commands to actuators using the DCM, while extractors and other modules use sensor results returned by the DCM in ALMemory.
Warning
Although the DCM itself and electronic boards have many securities, it is possible to damage the robot with bad configuration parameters or inappropriate series of actuator commands. Using directly the DCM means that you know what you are doing. First of all, read this documentation carefully.
As the DCM is a link between the high and low level, understanding both high level architecture (NAOqi) and low level (devices/electronic board) is useful to understand the DCM.
Like other modules, the DCM is part of the NAOqi environment. It is linked as a library.
The DCM installation is done with the NAOqi installation. The DCM is a library of the NAOqi core program.
At first, the DCM reads two preference files: the device.xml (with all data about devices and subDevices) and the dcm.xml (with DCM specific information).
Warning
Even if it’s possible to run the DCM as a remote object with Soap communication, it’ll be very CPU consuming to do that, as the link between ALMemory and the DCM is highly used.
In the DCM, all the options managed are present by default (hands, arms, legs ...).
When a robot do not have some parts: