{"id":28851839,"url":"https://github.com/robotology/blockfactory","last_synced_at":"2025-10-17T22:19:23.985Z","repository":{"id":33808778,"uuid":"160545038","full_name":"robotology/blockfactory","owner":"robotology","description":"A tiny framework to wrap algorithms for dataflow programming","archived":false,"fork":false,"pushed_at":"2024-12-12T12:34:15.000Z","size":3124,"stargazers_count":41,"open_issues_count":17,"forks_count":16,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-22T11:28:32.713Z","etag":null,"topics":["algorithms","blockfactory","dataflow","framework","matlab","simulink","simulink-coder","simulink-toolbox"],"latest_commit_sha":null,"homepage":"https://robotology.github.io/blockfactory","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robotology.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-05T16:13:32.000Z","updated_at":"2024-12-12T12:34:17.000Z","dependencies_parsed_at":"2024-11-03T23:28:04.974Z","dependency_job_id":null,"html_url":"https://github.com/robotology/blockfactory","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/robotology/blockfactory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotology%2Fblockfactory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotology%2Fblockfactory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotology%2Fblockfactory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotology%2Fblockfactory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robotology","download_url":"https://codeload.github.com/robotology/blockfactory/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotology%2Fblockfactory/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260837708,"owners_count":23070558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","blockfactory","dataflow","framework","matlab","simulink","simulink-coder","simulink-toolbox"],"created_at":"2025-06-19T21:38:46.384Z","updated_at":"2025-10-17T22:19:23.968Z","avatar_url":"https://github.com/robotology.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BlockFactory\n\n[![Build Status (Linux/macOS) (master)](https://img.shields.io/travis/com/robotology/blockfactory/master.svg?logo=travis\u0026label=master)](https://travis-ci.com/robotology/blockfactory)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/25547902678b4d92804d40712035ec29)](https://app.codacy.com/app/diegoferigo/blockfactory?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=robotology/blockfactory\u0026utm_campaign=Badge_Grade_Dashboard)\n[![License](https://img.shields.io/badge/license-LGPL-19c2d8.svg)](https://github.com/robotology/blockfactory/blob/master/LICENSE)\n\nBlockFactory is a framework for dataflow programming that allows **wrapping C and C++ algorithms**. It provides an abstraction inspired by Simulink where algorithms are represented as _blocks_ that can exchange data through _signals_.\n\nUsers of this project can easily wrap their algorithms inside the provided software interfaces obtaining C++ classes that can be executed by generic _engines_. BlockFactory implements and provides full support of the following engines:\n\n- `Simulink`\n- `Simulink Coder` \n\nThe main purpose of BlockFactory is **rapid prototyping** of discrete systems (stateless and stateful). Taking as an example the supported Simulink engine, it simplifies and streamlines the process of creating a block. You don't have be an expert of its complex APIs! Furthermore, with Simulink Coder you can generate C++ code from a Simulink model. You can then deploy the automatically generated C++ class from an arbitrarily complex model to your preferred target platform.\n\nThe same code of the blocks is shared among all the supported engines. This means that the same shared library containing your blocks can either be loaded into Simulink during runtime or called by the executable built from the automatically generated code, without any modification.\n\nIf you need to run your code inside an unsupported engine (e.g. Scilab), you can implement it yourself with minimal effort.\n\n### How we conceived BlockFactory\n\nBlockFactory for many years represented the back-end of [robotology/wb-toolbox](https://github.com/robotology/wb-toolbox), a Simulink Toolbox for rapid prototyping of humanoid robots whole-body controllers. The toolbox was recently refactored and its core components became BlockFactory.\n\nDespite its roots in robotics, now BlockFactory is very generic! You can use it to wrap your own C / C++ libraries to simulate power converters, design communication systems, benchmark motor drives, interface with exotic devices, and all applications that come in your mind. Its potential is endless.\n\n\u003e _Build bridges, not walls_\n\n### Where to start\n\n- [Website](https://robotology.github.io/blockfactory/)\n- [Documentation](https://robotology.github.io/blockfactory/doxygen/)\n- [Tutorial](https://robotology.github.io/blockfactory/mkdocs/tutorial_intro/)\n\n### Citing this work\n\nPlease cite the following publication if you are using either BlockFactory or derived projects for your own research:\n\n```\n@article{FerigoControllers2020,\n\ttitle = {A generic synchronous dataflow architecture to rapidly prototype and deploy robot controllers},\n\tauthor = {Ferigo, Diego and Traversaro, Silvio and Romano, Francesco and Pucci, Daniele},\n\turl = {https://journals.sagepub.com/doi/10.1177/1729881420921625},\n\tdoi = {10.1177/1729881420921625},\n\tjournal = {International Journal of Advanced Robotic Systems},\n\tyear = {2020},\n}\n```\n\n### Maintainers\nThis repository is maintained by:\n\n| | |\n|:---:|:---:|\n| [\u003cimg src=\"https://github.com/traversaro.png\" width=\"40\"\u003e](https://github.com/traversaro) | [@traversaro](https://github.com/traversaro) |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotology%2Fblockfactory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobotology%2Fblockfactory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotology%2Fblockfactory/lists"}