robotology / blockfactory Goto Github PK
View Code? Open in Web Editor NEWA tiny framework to wrap algorithms for dataflow programming
Home Page: https://robotology.github.io/blockfactory
License: GNU Lesser General Public License v2.1
A tiny framework to wrap algorithms for dataflow programming
Home Page: https://robotology.github.io/blockfactory
License: GNU Lesser General Public License v2.1
I encountered the same problem and followed the instructions on the webpage export BLOCKFACTORY_PLUGIN_PATH=/home/han/blockfactory/example/build. “SUCCESS: Block ‘SignalMath’ found and loaded from plugin ‘ExampleToolbox’” appeared, but I still received an error in Simulink: Error reported by S-function ‘BlockFactory’ in ‘Model/w// mask’: Failed to create factory. Factory error (2): ExampleToolbox: cannot open shared object file: No such file or directory. Failed to get factory object (className=SignalMath, libName=ExampleToolbox). Failed to get the factory.
Originally posted by @rcone11 in #70 (comment)
For several reasons, typically involving performance (due to use of system calls and violation of cache locality) but also determinism on some hard real-time OS, a good practice is to avoid, sometimes it is considered good practice to avoid any kind of dynamic memory allocation in code that will be called in "tight loop", for example the code that is called at every step of a control, simulation or optimization algorithm.
Related to that, I notice that the current BlockFactory API induces the users to perform two dynamic memory allocations whenever, from an output
method, and input or output signal is accessed. The situation could get worse if eventually tackle #8, as some of the same signal would need to be accessed also from the updateDiscreteState
and the BlockFactory equivalent of mdlDerivatives
. Note that this two memory allocation are avoided in the "CoderBlockInformation" implementation only because in that case the IO signals are stored internally already as std::shared_ptr<Signal>
, but for example are necessary in the SimulinkBlockInformation
implementation (and similarly they will probably be present in <something>BlockInformation
implementations for which the addresses of IO signals could change at each simulation step).
These two dynamic memory allocations are caused by:
blockfactory::core::Signal
(added in diegoferigo/WB-Toolbox@75c1d36#diff-e32b9f2c904cb22f7a9187e2a76861a3). I guess this change can be relatively safely reverted, if we think it is the case.std::shared_ptr<Signal>
to return a signal in getInputPortSignal
and getOutputPortSignal
, in place of standard copy on the stack, that in most cases will be optimized away due to Return Value Optimization (RVO). This it is a more complicated change, as it was explicitly introduced in robotology/wb-toolbox#126 to ensure that input data is only read and not wrote without introducing a new type ConstSignal
or Signal<isConst>
.The change 2) is definitely more complicated (if we want to continue to enfore the const correctnes of input signals), while 1) should be straightforward.
[ 95%] Building CXX object sources/Mex/CMakeFiles/Mex.dir/src/BlockFactory.cpp.o
/home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp: In function ‘const std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > parameterTypeToString(const blockfactory::core::ParameterType&)’:
/home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp:594:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
In file included from /home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp:852:0:
/usr/local/MATLAB/R2018b/simulink/include/simulink.c: In function ‘int_T ssWriteRTWWorkVect(SimStruct*, const char_T*, int_T, ...)’:
/usr/local/MATLAB/R2018b/simulink/include/simulink.c:1847:7: warning: ‘</arg></arguments></diag></diag_root>’ directive writing 37 bytes into a region of size 14 [-Wformat-overflow=]
int_T ssWriteRTWWorkVect(SimStruct *S,
^~~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:862:0,
from /usr/include/c++/7/cstdio:42,
from /usr/include/c++/7/ext/string_conversions.h:43,
from /usr/include/c++/7/bits/basic_string.h:6352,
from /usr/include/c++/7/string:52,
from /usr/include/c++/7/stdexcept:39,
from /usr/include/c++/7/array:39,
from /usr/include/c++/7/tuple:39,
from /usr/include/c++/7/bits/unique_ptr.h:37,
from /usr/include/c++/7/memory:80,
from /home/straversaro/src/blockfactory/sources/Core/include/BlockFactory/Core/Parameters.h:12,
from /home/straversaro/src/blockfactory/sources/Core/include/BlockFactory/Core/Block.h:12,
from /home/straversaro/src/blockfactory/sources/Mex/src/BlockFactory.cpp:12:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:43: note: ‘__builtin___sprintf_chk’ output 224 or more bytes into a destination of size 200
__bos (__s), __fmt, __va_arg_pack ());
^
The compilation of robotology-superbuild failed with this error:
In file included from /home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:9:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:37:10: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
37 | enum class Status : std::uint32_t
| ~~~~ ^~~~~
| -----
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:37:16: error: use of enum ‘Status’ without previous declaration
37 | enum class Status : std::uint32_t
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:37:30: error: ‘uint32_t’ is not a member of ‘std’; did you mean ‘wint_t’?
37 | enum class Status : std::uint32_t
| ^~~~~~~~
| wint_t
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:38:5: error: default member initializer for unnamed bit-field
38 | {
| ^
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/shlibpp/SharedLibraryFactory.h:169:5: error: ‘Status’ does not name a type
169 | Status getStatus() const;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:52:27: error: ‘Status’ in ‘class shlibpp::SharedLibraryFactory’ does not name a type
52 | SharedLibraryFactory::Status status;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp: In constructor ‘shlibpp::SharedLibraryFactory::Private::Private(int32_t, int32_t, int32_t, const char*)’:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:76:9: error: class ‘shlibpp::SharedLibraryFactory::Private’ does not have any field named ‘status’
76 | status(Status::None),
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:76:16: error: ‘Status’ has not been declared
76 | status(Status::None),
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp: In member function ‘bool shlibpp::SharedLibraryFactory::Private::open(const char*)’:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:131:5: error: ‘status’ was not declared in this scope; did you mean ‘statx’?
131 | status = Status::None;
| ^~~~~~
| statx
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:131:14: error: ‘Status’ has not been declared
131 | status = Status::None;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:145:22: error: ‘Status’ has not been declared
145 | status = Status::LibraryNotFound;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:147:22: error: ‘Status’ has not been declared
147 | status = Status::LibraryNotLoaded;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:154:18: error: ‘Status’ has not been declared
154 | status = Status::FactoryNotFound;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:160:18: error: ‘Status’ has not been declared
160 | status = Status::FactoryNotFunctional;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:164:14: error: ‘Status’ has not been declared
164 | status = Status::OK;
| ^~~~~~
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp: At global scope:
/home/Ehsan/robotology-superbuild/src/BlockFactory/deps/sharedlibpp/src/SharedLibraryFactory.cpp:316:32: error: ‘Status’ in ‘class shlibpp::SharedLibraryFactory’ does not name a type
316 | shlibpp::SharedLibraryFactory::Status shlibpp::SharedLibraryFactory::getStatus() const
| ^~~~~~
make[2]: *** [deps/sharedlibpp/src/CMakeFiles/shlibpp.dir/build.make:104: deps/sharedlibpp/src/CMakeFiles/shlibpp.dir/SharedLibraryFactory.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:224: deps/sharedlibpp/src/CMakeFiles/shlibpp.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
These are some random notes related to get blockfactory
to generate FMUs according to the FMI standard ( https://fmi-standard.org/downloads/ ). It is meant to be more a place where to store relevant information, rather than an issue that should be closed in the short term.
@diegoferigo let me know if you are ok with this, or if you prefer that I move this notes/brainstorming somewhere else.
FMI version:
a[1]
, a[2]
, etc etc, see https://fmi-standard.org/docs/2.0.1-develop/#_variable_naming_conventions_variablenamingconvention . However, full support will be included only in FMI v3, that is currently under development in the master
branch of https://github.com/modelica/fmi-standard . For this reason, it make sense to just aim for FMI v3 only support, even if there is almost no tool support at the moment, given the draft status of the specification. For preliminary testing, it could make sense to explore the use of the feature/fmi3
branch of FMPy: https://github.com/CATIA-Systems/FMPy/tree/feature/fmi3/fmpy .FMI direct feed-through:
y = f(u)
, i.e."instantaneous" systems with just a direct feed-through. There are a few issues in the FMI issue tracker related to systems with direct feed-through, that we should checkout: modelica/fmi-standard#117, modelica/fmi-standard#126FMI for Model Exchange
I was able to successfully compile the code in Windows 10. I need the toolbox to generate Simulink block for Real-time SpeedGoat machine which only runs on Matlab 2020b. However the example problem in Model.mdl will not work when I try it on this version of Matlab. Weird (unreadable) error messages were thrown. Then I installed Matlab 2018b and the example problem (Model.mdl) worked perfectly! Is there any strategy that I can use to make the code to work in Matlab 2020b? I will greatly appreciate any advise from experienced users.
Thanks.
my BlockFactory.mexa64 file address is /home/han/miniforge3/mex/BlockFactory.mexa64.But my model.mdl file address is /home/han/blockfactory/example/matlab/model.mdl.To ensure that these two files are in the same folder,I copied the BlockFactory.mexa64 file to the /home/han/blockfactory/example/matlab/BlockFactory.mexa64.Then I run the model.mdl here is the error displayed.
Error while obtaining sizes from MEX S-function 'BlockFactory in "odel/w// mask'Caused by:
MEX file "/home/hanblockfactory/example/matlab/BlockFactory.mexa64' invalid:libBleckFactoryCore.s9.0.8.5: cannot open shared object file : No such file or directoryComponent:Simwink Category:Model errorError while obtaining sizes from MEX S-function 'BlockFacto!y in 'Model/w//o mask'.Caused by:MEX file '/home/hablockfactory/example/matlab/BlockFactory.mexa64' invalid:libBleckFactoryCore.s9.0.8.5: cannot open shared object file : No such file or directory.
Related to #16, on complex model with many subsystem, the scoped name of the block can be very long. During the autogeneration process, Simulink Coder tries to break lines properly, but it seems failing in this case. The obtained code is something similar:
// Store the block name
blockInfo->setUniqueBlockName("torqueBalancingYoga/Dynamics and Kinematics/Kinemati
cs/DotJ Nu l_sole/S-Function");
In C++ is legit breaking a line, but only if a ""
pair is added in between. The outcome of Simulink Coder is a source file that does not compile.
I already tried to apply a style with clang-format, but the malformed code does not get fixed anyway.
So, I have been trying to compile BlockFactory with Matlab R2021a and keep getting the following error.
PS F:\simconnect-monitor\blockfactory> cmake -S . -B build
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.19044.
-- Could NOT find Matlab (missing: Matlab_MEX_LIBRARY Matlab_MX_LIBRARY ENG_LIBRARY) (found version "9.10")
CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Matlab (missing: Matlab_MEX_LIBRARY Matlab_MX_LIBRARY
MX_LIBRARY) (found version "9.10")
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
cmake/FindMatlab.cmake:1872 (find_package_handle_standard_args)
deps/mxpp/CMakeLists.txt:45 (find_package)
-- Configuring incomplete, errors occurred!
See also "F:/simconnect-monitor/blockfactory/build/CMakeFiles/CMakeOutput.log".
I have already tried also with Matlab R2022a (which I notice is not listed by FindMatlab.cmake so I installed R2021a. Still haven't uninstalled R2022a). I am on Windows 10 and have tried to add matlabr2021a_root\extern\lib\win64\microsoft to the PATH environment variable.
Sorry if the question seems trivial but I don't know what to do.
@diegoferigo regarding robotology/robotology-superbuild#331, would it be possible to tag a version 0.8.1 with the fixes for Matlab on Windows? Thanks!
I am trying to install block factory for the first time. I want to run the example in the blockfactory folder first. When I tried to run it in Simulink, I got an error saying it couldn’t find blockfactory. I also tried to mex blockfactory.cpp, but I couldn’t compile it successfully. I want to know if I missed any steps. What should I do to make Simulink find blockfactory?
While setting up the Windows CI of the robotology-superbuild, I am experiencing this error:
2019-11-13T15:10:26.6676384Z Checking Build System
2019-11-13T15:10:26.8114995Z Creating directories for 'BlockFactory'
2019-11-13T15:10:26.9428104Z Building Custom Rule D:/a/robotology-superbuild/robotology-superbuild/CMakeLists.txt
2019-11-13T15:10:26.9669757Z Performing download step (git clone) for 'BlockFactory'
2019-11-13T15:10:27.0045007Z Cloning into 'BlockFactory'...
2019-11-13T15:10:27.5160371Z Already on 'master'
2019-11-13T15:10:27.5161191Z Your branch is up to date with 'origin/master'.
2019-11-13T15:10:28.1069260Z Performing update step for 'BlockFactory'
2019-11-13T15:10:28.3803191Z Current branch master is up to date.
2019-11-13T15:10:28.9344208Z No patch step for 'BlockFactory'
2019-11-13T15:10:28.9712795Z Performing configure step for 'BlockFactory'
2019-11-13T15:10:28.9872562Z Not searching for unused variables given on the command line.
2019-11-13T15:10:28.9902568Z loading initial cache file D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory/CMakeFiles/YCMTmp/BlockFactory-cache-Debug.cmake
2019-11-13T15:10:30.1316248Z -- The CXX compiler identification is MSVC 19.23.28106.4
2019-11-13T15:10:30.3629641Z -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
2019-11-13T15:10:31.6319293Z -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe -- works
2019-11-13T15:10:31.6344818Z -- Detecting CXX compiler ABI info
2019-11-13T15:10:32.8949280Z -- Detecting CXX compiler ABI info - done
2019-11-13T15:10:32.8983496Z -- Detecting CXX compile features
2019-11-13T15:10:32.8995940Z -- Detecting CXX compile features - done
2019-11-13T15:10:33.1586860Z -- Could NOT find Matlab (missing: Matlab_INCLUDE_DIRS Matlab_MEX_LIBRARY Matlab_MEX_EXTENSION Matlab_ROOT_DIR Matlab_MX_LIBRARY MX_LIBRARY ENG_LIBRARY MAIN_PROGRAM SIMULINK) (found version "NOTFOUND")
2019-11-13T15:10:33.2308553Z -- Configuring done
2019-11-13T15:10:33.3369794Z -- Generating done
2019-11-13T15:10:33.3398619Z -- Build files have been written to: D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory
2019-11-13T15:10:33.3675435Z Performing build step for 'BlockFactory'
2019-11-13T15:10:33.4514732Z Microsoft (R) Build Engine version 16.3.2+e481bbf88 for .NET Framework
2019-11-13T15:10:33.4515253Z Copyright (C) Microsoft Corporation. All rights reserved.
2019-11-13T15:10:33.4515586Z
2019-11-13T15:10:33.8272750Z Checking Build System
2019-11-13T15:10:33.9919084Z Building Custom Rule D:/a/robotology-superbuild/robotology-superbuild/robotology/BlockFactory/deps/sharedlibpp/src/CMakeLists.txt
2019-11-13T15:10:34.1265901Z version.cpp
2019-11-13T15:10:34.3974557Z SharedLibrary.cpp
2019-11-13T15:10:35.7431655Z SharedLibraryFactory.cpp
2019-11-13T15:10:36.1144519Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\deps\sharedlibpp\src\SharedLibraryFactory.cpp(227,1): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\deps\sharedlibpp\src\shlibpp.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:36.2704871Z Generating Code...
2019-11-13T15:10:36.4058779Z C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\stdlib.h(1191): message : see declaration of 'getenv' [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\deps\sharedlibpp\src\shlibpp.vcxproj]
2019-11-13T15:10:36.4391075Z Auto build dll exports
2019-11-13T15:10:36.6175692Z Creating library D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory/lib/Debug/shlibppd.lib and object D:/a/robotology-superbuild/robotology-superbuild/build/robotology/BlockFactory/lib/Debug/shlibppd.exp
2019-11-13T15:10:36.7528705Z shlibpp.vcxproj -> D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\bin\Debug\shlibppd.dll
2019-11-13T15:10:37.3485863Z Building Custom Rule D:/a/robotology-superbuild/robotology-superbuild/robotology/BlockFactory/sources/Core/CMakeLists.txt
2019-11-13T15:10:37.4524846Z Block.cpp
2019-11-13T15:10:37.9820992Z BlockInformation.cpp
2019-11-13T15:10:38.2825423Z Log.cpp
2019-11-13T15:10:38.8226196Z Parameter.cpp
2019-11-13T15:10:39.0936118Z Parameters.cpp
2019-11-13T15:10:40.2583101Z ConvertStdVector.cpp
2019-11-13T15:10:40.6957546Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): error C2220: the following warning is treated as an error [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:40.7016614Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : see reference to function template instantiation 'void std::_Default_allocator_traits<_Alloc>::construct<_Ty,const double&>(_Alloc &,_Objty *const ,const double &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7051818Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7064525Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7071003Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7077241Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7083605Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : _Objty=int [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7089752Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7096281Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : see reference to function template instantiation 'void std::_Default_allocator_traits<_Alloc>::construct<_Ty,const double&>(_Alloc &,_Objty *const ,const double &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7111039Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7117078Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7121720Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7122305Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7123067Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : _Objty=int [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7123667Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1581): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7124238Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : see reference to function template instantiation 'void std::_Uninitialized_backout_al<_Alloc>::_Emplace_back<_Ty&>(_Ty &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7124702Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7162626Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7163336Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7244930Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : _Ty=const double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7248448Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7251782Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : see reference to function template instantiation 'void std::_Uninitialized_backout_al<_Alloc>::_Emplace_back<_Ty&>(_Ty &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7256463Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7260324Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7263556Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : _Alloc=std::allocator<int>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7266944Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : _Ty=const double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7270491Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(1616): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7271180Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : see reference to function template instantiation 'int *std::_Uninitialized_copy<_Iter,std::allocator<_Ty>>(const _InIt,const _InIt,int *,_Alloc &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7274786Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7275649Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7276172Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : _Iter=const double *, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7276606Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7280506Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : _InIt=const double *, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7281208Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : _Alloc=std::allocator<int> [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7281678Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(1544): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7282388Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : see reference to function template instantiation 'int *std::vector<int,std::allocator<_Ty>>::_Ucopy<_Iter>(_Iter,_Iter,int *)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7282907Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7283326Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7283876Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7284308Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7284723Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7285174Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : see reference to function template instantiation 'int *std::vector<int,std::allocator<_Ty>>::_Ucopy<_Iter>(_Iter,_Iter,int *)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7288009Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7300785Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7301716Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7302277Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7302705Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(442): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7306548Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : see reference to function template instantiation 'void std::vector<int,std::allocator<_Ty>>::_Range_construct_or_tidy<const double*>(_Iter,_Iter,std::forward_iterator_tag)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7307116Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7308707Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7309260Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7309688Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7310777Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7311379Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : see reference to function template instantiation 'void std::vector<int,std::allocator<_Ty>>::_Range_construct_or_tidy<const double*>(_Iter,_Iter,std::forward_iterator_tag)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7311817Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7312219Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7312773Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7313163Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : _Iter=const double * [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7313546Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\vector(454): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7314139Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : see reference to function template instantiation 'std::vector<int,std::allocator<_Ty>>::vector<std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>,void>(_Iter,_Iter,const _Alloc &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7315737Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7316222Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7324092Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7324707Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : _Iter=std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7325187Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : _Alloc=std::allocator<int> [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7325760Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7326342Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : see reference to function template instantiation 'std::vector<int,std::allocator<_Ty>>::vector<std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>,void>(_Iter,_Iter,const _Alloc &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7326934Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7359258Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7359786Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : _Ty=int, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7360268Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : _Iter=std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<double>>>, [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7360731Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : _Alloc=std::allocator<int> [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7361162Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(18): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7361765Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message : see reference to function template instantiation 'void blockfactory::core::convertStdVector<double,int>(const std::vector<double,std::allocator<_Ty>> &,std::vector<int,std::allocator<int>> &)' being compiled [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7362320Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message : with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7363094Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message : [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7363646Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message : _Ty=double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7364053Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\ConvertStdVector.cpp(41): message : ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj]
2019-11-13T15:10:40.7364547Z Signal.cpp
2019-11-13T15:10:41.2808407Z FactorySingleton.cpp
2019-11-13T15:10:41.6567432Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: 'initializing': conversion from '_Ty' to '_Objty', possible loss of data [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6568254Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: with [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6568763Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6569206Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: _Ty=const double [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6569600Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6570017Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: and [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6570396Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: [ [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6571020Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: _Objty=int [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6571398Z C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.23.28105\include\xmemory(758,82): warning C4244: ] [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6571926Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\FactorySingleton.cpp(29,1): error C2220: the following warning is treated as an error [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
2019-11-13T15:10:41.6572444Z D:\a\robotology-superbuild\robotology-superbuild\robotology\BlockFactory\sources\Core\src\FactorySingleton.cpp(29,1): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\a\robotology-superbuild\robotology-superbuild\build\robotology\BlockFactory\sources\Core\Core.vcxproj] [D:\a\robotology-superbuild\robotology-superbuild\build\BlockFactory.vcxproj]
When compiling the Mex
target, the compilation fails with the following error:
Invalid MEX-file '/.../BlockFactory.mexa64': Gateway function is missing.
This happens only on Matlab R2018b. The same commit builds fine on (at least) R2018a.
This are some random notes related to get blockfactory
to generate Modelica blocks. It is meant to be more a place where to store relevant information, rather than an issue that should be closed in the short term.
External C code can be called from Modelica blocks using "External Functions', see http://book.xogeny.com/behavior/functions/external/ for more info.
An example of a simple Modelica MIMO block implemented using C external code (in that case to enable ROS integration) can be found in https://github.com/ModROS/ROS_Bridge/blob/d9a011da3f079b12ac93b106811f3bf585add7ec/Blocks/ROS_Sampler.mo . See https://github.com/ModROS/ROS_Bridge#usage-summary for a more detailed description of the block.
The Block::checkParameters
seems to be unused and never implemented in any derived class. I guess it can be safely removed, unless there is anything that I am missing?
Hi all,
My colleagues (@liesrock @alaurenzi) and I are working with the blockfactory to use our framework in Matlab/Simulink.
Is there a possibility to declare a size port during the initialize phase?
Since I use the configureSizeAndPorts method to declare my inputs and outputs with a dynamic size port and I know the size after the initialize phase, I was wondering if there is a chance to do it in this phase.
Davide.
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:
setInputs
function. You need to define the specific BlockInformation for each block.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:
mdlOutputs
calls the wrapped C++ code and maps its output to the block output. When the block processing sequence reaches that callback, Simulink already knows the signal dimensions according to the flow and allocates the required buffers.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.
Compiling BlockFactory with MATLAB 2018a on Windows 10 Version 1803 with CMake 3.12.0 we got the following error:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\bin\Release\BlockFactorySimulinkCoder.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\dev\vcpkg\installed\x64-windows\lib" /LIBPATH:"C:\dev\vcpkg\installed\x64-windows\lib\manual-link" ..\..\lib\Release\BlockFactoryCore.lib ..\..\lib\Release\shlibpp.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib "C:\dev\vcpkg\installed\x64-windows\lib\*.lib" /DEF:"C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/sources/SimulinkCoder/SimulinkCoder.dir/Release/exports.def" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:"C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/bin/Release/BlockFactorySimulinkCoder.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactorySimulinkCoder.lib" /MACHINE:X64 /machine:x64 /DLL SimulinkCoder.dir\Release\CoderBlockInformation.obj
Creating library C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactorySimulinkCoder.lib and object C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactorySimulinkCoder.exp
SimulinkCoder.vcxproj -> C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\bin\Release\BlockFactorySimulinkCoder.dll
AppLocalFromInstalled:
C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -noprofile -File "C:\dev\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\bin\Release\BlockFactorySimulinkCoder.dll" "C:\dev\vcpkg\installed\x64-windows\bin" "SimulinkCoder.dir\Release\SimulinkCoder.tlog\SimulinkCoder.write.1u.tlog" "SimulinkCoder.dir\Release\vcpkg.applocal.log"
FinalizeBuildStatus:
Deleting file "SimulinkCoder.dir\Release\SimulinkCoder.tlog\unsuccessfulbuild".
Touching "SimulinkCoder.dir\Release\SimulinkCoder.tlog\SimulinkCoder.lastbuildstate".
Done Building Project "C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\SimulinkCoder\SimulinkCoder.vcxproj" (default targets).
Done Building Project "C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\ALL_BUILD.vcxproj" (default targets) -- FAILED.
Build FAILED.
"C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\ALL_BUILD.vcxproj" (default target) (1) ->
"C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj" (default target) (5) ->
(Link target) ->
LINK : error LNK2001: unresolved external symbol mexCreateMexFunction [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
LINK : error LNK2001: unresolved external symbol mexDestroyMexFunction [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
LINK : error LNK2001: unresolved external symbol mexFunctionAdapter [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
LINK : error LNK2001: unresolved external symbol mexfilerequiredapiversion [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
C:/dev/git/robotology-superbuild/build/robotology/BlockFactory/lib/Release/BlockFactory.lib : fatal error LNK1120: 4 unresolved externals [C:\dev\git\robotology-superbuild\build\robotology\BlockFactory\sources\Simulink\Simulink.vcxproj]
0 Warning(s)
5 Error(s)
Time Elapsed 00:00:08.46
This is probably a long term goal, but for now let's collect some possible basic steps:
BlockInformation
BlockInformation
SimulinkBlockInformation
(probably using ssGetContStates
)SimulinkBlockInformation
(probably using ssGetDiscStates
)CoderBlockInformation
CoderBlockInformation
mdlDerivatives
in the BlockFactory S-Function: blockfactory/sources/Mex/src/BlockFactory.cpp
Line 317 in 78a8723
ssSetInputPortDirectFeedThrough
and https://drake.mit.edu/doxygen_cxx/classdrake_1_1systems_1_1_system.html the drake::systems::System<T>::xxxDirectFeedthrough
methods for an inspiration related to the corresponding Drake API . At the moment this is hardcoded at Simulink level in
.Similar to #61, this command would just run a given block with some configurable and simple parameters and inputs. The goal would be to use that under valgrind, to early detect in CI memory errors to early catch bugs such as robotology/wb-toolbox#220 .
This perhaps can be done probably by reusing some of the code generation machinery.
Compilation is failing with the following error message:
$ make
[ 9%] Built target mxpp
[ 28%] Built target shlibpp
[ 71%] Built target Core
[ 80%] Built target SimulinkCoder
[ 85%] Linking CXX shared library ../../lib/BlockFactory.mexmaci64
Undefined symbols for architecture x86_64:
"_mexfilerequiredapiversion", referenced from:
-exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/BlockFactory.mexmaci64] Error 1
make[1]: *** [sources/Simulink/CMakeFiles/Simulink.dir/all] Error 2
make: *** [all] Error 2
@traversaro wrote:
Additionally, w.r.t. to debian packaging, it would be good if the default installation prefix was in the search path even without the need to define BLOCKFACTORY_PLUGIN_PATH, so that if in the future we have deb package of BlockFactory + WB-Toolbox, they will just work out of the box without the need to define any env variable.
@diegoferigo replied:
This is more complicated. If we install plugins in one of the default linker folder, we get the same problems due to
LD_LIBRARY_PATH
we recently discussed in robotology/ycm-cmake-modules#199 and robotology/robotology-superbuild#97.
I was trying to run the Model.mdl
file of the example
folder but I got the following errors in Simulink:
Error:Error reported by S-function 'BlockFactory' in 'Model/w// mask': Failed to create factory Factory error (2): ExampleToolbox: cannot open shared object file: No such file or directory Failed to get factory object (className=SignalMath,libName=ExampleToolbox) Failed to get the factory
Error:Error reported by S-function 'BlockFactory' in 'Model/w//o mask': Failed to create factory Factory error (2): ExampleToolbox: cannot open shared object file: No such file or directory Failed to get factory object (className=SignalMath,libName=ExampleToolbox) Failed to get the factory
I am using the Matlab version R2023a on Ubuntu 22.04; can this problem be related to my version of Matlab or Ubuntu or is it related to something else?
Despite the code generated with Simulink Coder supports tunable parameters, the ones coming from the block masks are not accessible. Refer to the Operation
selected from the drop-down menu of the SignalMath
block of the example:
In line 105 it is hardcoded, and cannot be changed.
Instead, for what concern parameters that come from the workspace (and constants present in the Simulink Model are analogous), they are stored in a static struct:
Despite they can be changed during runtime (the symbol is static), it's basically impossible to know what is the index of the parameter you want to access. In this case there's only one, but if there were more, the cpp will contain a curly braces initialization for all of them. It would be great having a way to access these parameters e.g. by name (and I mean string, not name of the variable like P_AutogenerationExample_T_.Constant_Value
in this case), but the approach used by the coder does not allow it.
cc @traversaro
Before separating this repository, the class autogenerated by Simulink Coder was linked together with the library that contains the blocks. This allowed to instantiate the blocks directly, including their headers to the header of the autogenerated class (using the TLC functionalities).
This inclusion would be possible also now, after the split, if the class of the block would expose a parameter with the full header name instead of only the block class name. To do so, however, the block developer should remember to add this new parameter since it would be difficult to do it automatically.
Since we already have the factory working for loading the block library from the Simulink S-Function, I would rather use this approach also from the autogenerated class. In this way there isn't anymore the need to specify the block header since only its interface would suffice.
As documented in https://it.mathworks.com/help/simulink/ug/run-co-simulation-components-on-multiple-cores.html, in Simulink it is possible to run the update of different blocks in different threads, if the block respect some conditions for which they can be consider Co-Simulation slaves, the requirements, listed in https://it.mathworks.com/help/simulink/ug/run-co-simulation-components-on-multiple-cores.html under "S-Function Block Limitations", are:
Some of them are not dictated by BlockFactory itself, so we should find a way to be configurable from the developer develoing BlockFactory blocks. Furthermore, this mode seems to support natively FMI, so an alternative way to achieve this could be to work on #5 .
The ExampleToolbox.slx
if I am not wrong is compiled/requires to be loaded at least Simulink 2018a.
If this is the case, it would be nice to document this, and eventually if possible commit to the repo a version compatible with an older Simulink, if we want to support it.
If in the C++ library loaded by blockfactory a configuration file loaded from ResourceFinder
is used, in order to see any edit to the configuration taking place it is necessary to restart MATLAB
The blockfactory::core::Block
interface of blockfactory support the following methods that seem to indicate that it supports discrete and continuous stateful systems:
blockfactory::core::Block::numberOfDiscreteStates()
blockfactory::core::Block::numberOfContinuousStates()
blockfactory::core::Block::updateDiscreteState(const BlockInformation* blockInfo)
blockfactory::core::Block::stateDerivative(const BlockInformation* blockInfo)
however in practice it is not clear if these functions are used at all and how they are supposed to be used, as BlockInformation
contain no state information at all. It may be worth to document that this methods are not used at all, and eventually remove that notice when will support stateful systems.
The code hosted in this repository is the former core of robotology/wb-toolbox. Most of the code was migrated with the first commits.
Here follows a list of remaining tasks to align this repository with the features of its parent:
Probably coming from the Simulink inheritage and its Simstruct, we never had the need to assign to a block a unique id or name. However, especially with the new plugin architecture, it might be worth adding the following to blockfactory::core::Block
protected:
std::string name;
public:
Block(const std::string& name);
std::string getName() const;
void setName() const;
Since these are not virtual methods, the downstream classes that implement the interface would not need to be modified.
For what concern the S-Function, we should store it as additional RTW parameter and modify the TLC file to get this information. If we ever want in the future to create a system to override mask parameters, being able to access the block object with a unique id will be fundamental.
It is not clear to me if we should also add a getName
method in the BlockInformation
interface.
I was wondering if and how it is possible to specify the sample time at which a blockfactory Simulink block is executed
BlockFactoryMex
is currently always required in the example (see https://github.com/robotology/blockfactory/blob/master/example/CMakeLists.txt#L35), but it should be required only if Matlab compilation is required (typically using options such as <package>_USES_MATLAB
or USES_MATLAB
, or in the case of the example implicitly based on the availability or not of Matlab in the system).
Original comment by @traversaro in #5 (comment) :
Generate the XML files after the build by running a program that invokes the
configureSizeAndPorts
method of the block to wrap as FMU
Interestingly, part of this solution could be eventually re-used to automatize the existing manual process of writing the .slx
file of the block library (i.e. the one described in https://robotology.github.io/blockfactory/mkdocs/create_new_library/#create-an-new-simulink-library).
As you can check by manually inspecting an .slx
file, and by reading in https://stackoverflow.com/questions/23408186/information-about-simulink-mdl-and-slx-formats, the .slx
is just a .zip
file that contains a bunch of .xml
(and some other format) files. A complete parser for reading/writing .slx
does not seem to be available or feasible, but perhaps it could make sense to have a "template" .slx
that can be be configured based on the library blocks' and ports.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.