blmc_drivers
This is the documentation of the blmc_drivers package.

This package is contains the drivers for the brushless motors developped in the Max Planck Institute for Intelligent System. The BLMC stands for BrushLess Motor Control.

This package provides guidelines how a device should be implemented (see also the DeviceInterface class). Any device has a number of inputs and outputs, see the following diagram for an example with two inputs and outputs.

device_class_diagram.svg

generally, we expect the following functions to be implemented:

  • a set function for each input (several inputs may share a set function which takes an index argument).
  • a send_if_input_changed() function which will send the inputs to the device if any of them have changed.
  • functions to access the current inputs and outputs, as well as the inputs which have been sent to the device. rather than just returning the latest elements, these function should return a ThreadsafeTimeseries of these objects, such that the user can synchronize (e.g. wait for the next element or step through them one by one such that none of them is missed)

This package provide a very simple API in order to acquire the sensors and send the controls to the actuators. Example of use of this package can be seens in different demos (PROJECT_SOURCE_DIR/demos) or in different unittests (PROJECT_SOURCE_DIR/tests). The demos contains the documentation inside the code. The unittests should be simple enough to understand wihtout additionnal documentation.

Todo:
Manuel, can you explain how the blmc Can cards work? associated with the motor_boards? Thanks