anchor.diff:  While there aren't many, there are at least a few companies that offer MATLAB interfaces for some of their products. These libraries are typically only useful to customers who bought a particular product.
   ////
   
  +== Distributed Systems
  +
  +
  +
   === Lightweight Communication and Marshalling (LCM)
   
  -https://lcm-proj.github.io/tut_matlab.html[LCM] was developed at http://www.mit.edu/[MIT] in 2006 for their entry to DARPA's Urban Challenge. It was the first framework that we know of that came with official bindings for MATLAB. Its MATLAB interface does not contain any actual MATLAB code and is entirely implemented in Java. The interface consists of 3 parts.
  -
  -* https://github.com/lcm-proj/lcm/blob/master/lcm-java/lcm/lcm/LCM.java[LCM] provides a way to publish messages and subscribe to channels
  -* https://github.com/lcm-proj/lcm/blob/master/lcm-java/lcm/lcm/MessageAggregator.java[MessageAggregator] receives messages from a background thread and queues them for MATLAB
  -* Generated Java messages expose public fields that MATLAB can access, and deal with the binary encoding
  -
  -All network calls as well as the mesage encoding and decoding happen outside of MATLAB, so the main MATLAB thread can spend most of its time on working with the data. Publishing a message could look as follows.
  +https://lcm-proj.github.io/tut_matlab.html[LCM] was developed at http://www.mit.edu/[MIT] in 2006 for their entry to DARPA's Urban Challenge. It was the first framework that we know of that came with official bindings for MATLAB. Its MATLAB interface is entirely implemented in Java and does not contain any MATLAB code. The interface consists of 3 parts.
  +
  +* The https://github.com/lcm-proj/lcm/blob/master/lcm-java/lcm/lcm/LCM.java[LCM] class provides a way to publish messages and subscribe to channels
  +* The https://github.com/lcm-proj/lcm/blob/master/lcm-java/lcm/lcm/MessageAggregator.java[MessageAggregator] class receives messages from a background thread and queues them for MATLAB
  +* Generated Java messages handle the binary encoding and expose fields that MATLAB can access
  +
  +All network calls as well as the mesage encoding and decoding happen outside of MATLAB, so the main thread can spend most of its time on working with the data. Publishing a message could look as follows.
   
   [source,matlab]
   ----
  
positive.code: timeoutMs = 1000;
  while true
      
      % Receive byte representation
      msg = aggregator.getNextMessage(timeoutMs);
      
      % Ignore timeouts
      if length(msg) > 0
      
          % Select message type based on channel name
          if strcmp('FEEDBACK_CHANNEL', char(msg.channel))
      
              % Parse message
              fbk = types.feedback(msg.data);
              
              % Use data
  
negative.code: disp(char(recv_data));
  ----
  
  === Hand Proprioception and Touch Interfaces (HAPTIX)
  
  OSRF developed a http://www.osrfoundation.org/haptix-simulation-of-prosthetic-devices/[MATLAB interface] for DARPA's  http://www.darpa.mil/program/hand-proprioception-and-touch-interfaces[HAPTIX] program that allows users to interface with real hardware as well as a step-in Gazebo simulation. They chose to create an API that hides the messaging part from the user and exposes more product specific functions. The underlying implementation is based on http://ignitionrobotics.org/libraries/transport[ignition-transport] which is a combination of ZeroMQ with Protobuf as the wire format. 
  
  At the top level, the API consists of several MATLAB https://bitbucket.org/osrf/haptix-comm/src/a961986b0254a3dbcabcc89ba14f78915d5d968a/matlab/[functions] that provide help text and forward calls to an underlying MEX function.
  
  [source,matlab]
  ----
  