{"id":25195047,"url":"https://github.com/rvarago/cpppid","last_synced_at":"2025-04-04T15:12:31.304Z","repository":{"id":110962010,"uuid":"163750172","full_name":"rvarago/cpppid","owner":"rvarago","description":"A composable library to implement contol loops in C++","archived":false,"fork":false,"pushed_at":"2019-04-20T14:39:12.000Z","size":30,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-10T00:41:21.778Z","etag":null,"topics":["control-engineering","control-systems","cpp","cpp17","modern-cpp","pid-controller"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rvarago.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-01T16:25:19.000Z","updated_at":"2021-09-18T19:08:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa6f3901-5588-4d3a-a6e6-708afc8e5cb3","html_url":"https://github.com/rvarago/cpppid","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvarago%2Fcpppid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvarago%2Fcpppid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvarago%2Fcpppid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvarago%2Fcpppid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rvarago","download_url":"https://codeload.github.com/rvarago/cpppid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198469,"owners_count":20900081,"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":["control-engineering","control-systems","cpp","cpp17","modern-cpp","pid-controller"],"created_at":"2025-02-10T00:41:01.362Z","updated_at":"2025-04-04T15:12:31.285Z","avatar_url":"https://github.com/rvarago.png","language":"C++","readme":"# cpppid\n\nA composable library based on templates to implement control loops in C++17.\n\n[![Build Status](https://travis-ci.org/rvarago/cpppid.svg?branch=master)](https://travis-ci.org/rvarago/cpppid)\n\n## Description\n\nBy composing basic control functions, for instance:\n* Proportional\n* Integral\n* Derivative\n\nWith a suitable composer, for instance:\n* Adder\n\nYou can obtain complex controllers, in particular, the classic PID controller as something like this:\n\n```cpp\ncpppid::composers::adder {\n  cpppid::controllers::proportional,\n  cpppid::controllers::integral,\n  cpppid::controllers::derivatite \n}\n```\n\n## Build\n\nThe _Makefile_ wraps the commands to download dependencies (Conan), generate the build configuration, build, run the unit tests, and clear the build folder.\n\n* Compile (currently, it also compiles the unit tests):\n\n```\nmake\n```\n\nIt assumes that the default profile (*profiles/x86_64*) applies to your build, if not, then you can specify your profile by appending _PROFILE=_.\n\n* Run the unit tests:\n\n```\nmake test\n```\n\n* Clear the _build_ folder:\n\n```\nmake clean\n```\n\n## Run tests inside a Docker container\n\nOptionally, it's possible to run the tests for cpppid inside a Docker container by running:\n\n```\nmake env-x86_64 # create docker image for x86_64\nmake env-x86_64-run # logs in the container\nmake test\n```\n\nOr:\n\n```\nmake env-x86_64-test # the same as: make env-x86_64 env-x86_64-run make test\n```\n\nOr you can build and test for armv7 by simply changing the mentions to *x86_64* to *armv7* in the command above.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frvarago%2Fcpppid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frvarago%2Fcpppid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frvarago%2Fcpppid/lists"}