electronic_io

Convenience library for interaction with analog and digital inputs and outputs.

This package provides a generalized approach for integration of various electronic input and output devices into ROS.

The three basic concepts in this package are:

  • Pins: They correspond either to physical input or output pins of a CPU or MCU, or to virtualized pins that e.g.
    internally decode a protocol like 1-Wire and expose the measurements. Multiple pins together form an I/O board.
  • Virtual Pins: These are pins that have no physical manifestations, but instead use one or more real pins to
    compute their value. This can be used e.g. for adjusting or combining the values returned by the real pins.
  • Devices: Each device operates on one or more pins or virtual pins and interprets their values. Input devices
    produce ROS topics with the readings. Output devices provide a ROS service that can be used to change value of the device (and its pins).

The idea is that each of these could be representing a different real-world entity:

  • The set of real pins can describe a particular I/O board, like Raspbery Pi.
  • The set of virtual pins translates datasheets of the connected components into sensible numbers (e.g. ADC -> Voltage).
  • The set of devices interprets the pins and virtual pins in terms of high-level devices.

These also specify the two ROS nodes that are expected to be running: a board node (exposing the pins), and a devices node (handling the virtual pins and devices).

See the examples folder for inspiration how the nodes and configs can be used and configured.

Indices and tables