robotology / blockfactory

A tiny framework to wrap algorithms for dataflow programming
https://robotology.github.io/blockfactory
GNU Lesser General Public License v2.1
40 stars 16 forks source link

Improve Blockfactory interface with wrapped C++ code making it more generic #59

Open nunoguedelha opened 3 years ago

nunoguedelha commented 3 years ago

This epic will track the steps that aim at improving the Blockfactory interface with the wrapped C++ code. This goal was motivated by the drawbacks of using the Blockfactory for generating blocks that can be called from other imperative languages, among which we find the following:

A new improved interface could be defined for future block implementations, while a glue code could be created for migrating the existing blocks from the new interface to the new one. Simulnik has its own interface for blocks, implemented through the S-function block. The abstraction to a more generic C++ interface is then made at the Blockfactory framework level. A possible evolution of the Blockfactory interface could result in the creation of a new S-fucntion implementing that new C++ API.

This work has to account for the Simulink requirements, among which we have:

In order to reach the goal of improving the Blockfactory interface with the wrapped C++ code, we should define an MVP (Minimum Viable Product) and iterate on it, for the sake of having a more trackable and incremental task.

The task breakown would be as follows:

One of the points to be addressed in this last step would be the choice between having an interface that takes multiple parameters and different inputs, or instead, an interface that uses a single input argument and a single output argument with all the buffers, as it is currently implemented.

nunoguedelha commented 3 years ago

CC @DanielePucci @GiulioRomualdi @nunoguedelha @prashanthr05 @traversaro @diegoferigo @lrapetti @kouroshD @Giulero @S-Dafarra

traversaro commented 3 years ago

From the point of view of the C++ user, some example of "blocks" interfaces from which we can take inspiration are:

nunoguedelha commented 3 years ago

Other interesting information shared by @diegoferigo :

nunoguedelha commented 3 years ago

Just to clarify, my next step, after having completed the tutorial and looked into https://github.com/robotology/blockfactory/blob/master/example/include/SignalMath.h, would be to implement the OSQP block, if you guys still agree on that. This means that http://github.com/robotology/wb-toolbox/issues/180 would be reassigned to me.

@traversaro @diegoferigo @CarlottaSartore

nunoguedelha commented 3 years ago

I could start working on this after the 3rd March.