Sigslots are the primary way to handle events emitted by the kobuki driver (c.f. with the usual function callbacks with void function pointers as arguments). Rather than repeating here a verbose explanation of what they are and how they work, the best option is to go straight to the official documentation - ecl_sigslots.
The kobuki driver establishes a set of signals on uniquely established namespaces. The namespace for each is separated into two parts - the first is the namespace specified by the sigslots_namespace variable in the kobuki::Parameter strucutre. The second uniquely identifies the signal itself.
The following represent the available signals when namespaced under "/kobuki" (default).
It does not establish any slots.
The /kobuki/stream_data is the most important slot. The kobuki sends a single long data packet periodically and when this is received, it emits a signal informing you that it has arrived and is ready to be processed. At this point, you can quiz the kobuki driver for the state ( kobuki::Kobuki::getCoreSensorData) which returns a kobuki::CoreSensors::Data structure holding all the important sensor information for kobuki.
A small example program which processes this signal sending current wheel encoder values to standard output:
The other signals will pass a structure of a particular type with the transmitted information. Process the same way, using the event type as the argument to the callback function.
More detailed example code can be found in the ros kobuki node implementation. See the kobuki_node implementation for a ros platform.
While debugging, you may often accidentally leave sigslots dangling, typos for the connection name are a common cause. For this, there is an introspection method available which you can use to quickly print the currently sigslot connections (dangling or otherwise).
A code snippet:
Depending on your sigslot connection configuration, you should see something like the following,
This uses the sigslots manager to retrieve the information. A full example of its use can be found in the ecl_sigslot sources: example cpp program.