The package provides a generic interface for decoding NeuroFrame processed. The interface accepts plugins that can be independently developed and dynamically loaded. For now, it worked only as classes with dynamic plugin.
The package acquires required the extracted features and apply the decoder. The following command can be used to run the node:
rosrun rosneuro_decoder decoder _plugin:=[INTEGRATORPLUGIN] [OPTIONAL PLUGIN-RELATED PARAMETERS]
Example with Gaussian decoder plugin
rosrun rosneuro_decoder decoder _plugin:=rosneuro::decoder::Gaussian
In the cpp code:
#include <rosneuro_decoder/Decoder.h>
rosneuro::decoder::Decoder* decoder = new rosneuro::decoder::Decoder();
// configure it using ros parameters passed in the launch file
decoder->configure();
// apply the decoder
Eigen::VectorXf probabilities = decoder->apply(features);
while in the launch file, you need to specify the plugin. For instance, we use a Qda classifier in the test_qda.cpp file:
<?xml version="1.0"?>
<launch>
<arg name="plugin" default='rosneuro::decoder::Qda'/>
<arg name="cfg_name" default='QdaCfg'/>
<rosparam command="load" file="$(find rosneuro_decoder_qda)/test/qdaCfg.yaml"/>
<node name="test_qda" pkg="rosneuro_decoder_qda" type="test_qda" output="screen" >
<param name="~plugin" value="$(arg plugin)"/>
<param name="cfg_name" value="$(arg cfg_name)"/>
</node>
</launch>