{"id":34039927,"url":"https://github.com/robotika/osgar","last_synced_at":"2026-04-08T12:32:09.523Z","repository":{"id":2104399,"uuid":"20634831","full_name":"robotika/osgar","owner":"robotika","description":"Open Source Garden (Autonomous) Robot","archived":false,"fork":false,"pushed_at":"2026-03-13T09:48:49.000Z","size":5334,"stargazers_count":13,"open_issues_count":59,"forks_count":12,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-03-13T19:37:12.941Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/robotika.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-06-09T04:54:03.000Z","updated_at":"2026-03-11T21:58:50.000Z","dependencies_parsed_at":"2023-07-06T18:17:23.032Z","dependency_job_id":"aec67f05-2158-45b1-a4d6-e4f18c080464","html_url":"https://github.com/robotika/osgar","commit_stats":{"total_commits":1613,"total_committers":13,"mean_commits":"124.07692307692308","dds":"0.34531928084314945","last_synced_commit":"f479eddd1cf2a286428d91aa76976ccca5a9cf05"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/robotika/osgar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotika%2Fosgar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotika%2Fosgar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotika%2Fosgar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotika%2Fosgar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robotika","download_url":"https://codeload.github.com/robotika/osgar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotika%2Fosgar/sbom","scorecard":{"id":276605,"data":{"date":"2025-08-11","repo":{"name":"github.com/robotika/osgar","commit":"aedbb0f98006b2d84bea8bcfc5d1bf306e7673ab"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Code-Review","score":8,"reason":"Found 26/30 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-ci.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"14 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-qr4w-53vh-m672","Warn: Project is vulnerable to: PYSEC-2023-183","Warn: Project is vulnerable to: GHSA-8gq9-2x98-w8hf","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-ci.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/robotika/osgar/python-ci.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-ci.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/robotika/osgar/python-ci.yaml/master?enable=pin","Warn: containerImage not pinned by hash: moon/docker/rover/Dockerfile:1: pin your Docker image by updating ros:melodic to ros:melodic@sha256:b4366ca0536e2ad3654ed66fb4475bc43b7a0c15bd8a5be91fd5ac9dfaf935d0","Warn: containerImage not pinned by hash: subt/docker/base/Dockerfile:1","Warn: containerImage not pinned by hash: subt/docker/base/Dockerfile:83","Warn: containerImage not pinned by hash: subt/docker/base/Dockerfile:91","Warn: containerImage not pinned by hash: subt/docker/cudatest/Dockerfile:1: pin your Docker image by updating robotika/subt-base:2020-05-06 to robotika/subt-base:2020-05-06@sha256:8ac745b77a29e31b8081c7ec0ba549efc58fd919bb16504ff4e4cf12f79db74a","Warn: containerImage not pinned by hash: subt/docker/gui/Dockerfile:1: pin your Docker image by updating osrf/subt-virtual-testbed:cloudsim_sim_latest to osrf/subt-virtual-testbed:cloudsim_sim_latest@sha256:a316fe314a0c329b56e80d3bd335acaef30350ee229a127b0721c73703eba8ac","Warn: containerImage not pinned by hash: subt/docker/loadtest/Dockerfile:1","Warn: containerImage not pinned by hash: subt/docker/robotika/Dockerfile:1: pin your Docker image by updating robotika/subt-base:2021-05-24 to robotika/subt-base:2021-05-24@sha256:6450e2b0a857b9138621f8a49509b8754bd4699e7f2264d85ec4125cbe93c8ec","Warn: containerImage not pinned by hash: subt/docker/unittest/Dockerfile:1","Warn: pipCommand not pinned by hash: moon/docker/rover/Dockerfile:228","Warn: pipCommand not pinned by hash: moon/docker/rover/Dockerfile:230","Warn: pipCommand not pinned by hash: moon/docker/rover/Dockerfile:231","Warn: pipCommand not pinned by hash: moon/docker/rover/Dockerfile:232","Warn: pipCommand not pinned by hash: subt/docker/base/Dockerfile:101","Warn: pipCommand not pinned by hash: subt/docker/base/Dockerfile:103-107","Warn: pipCommand not pinned by hash: subt/docker/base/Dockerfile:109-110","Warn: pipCommand not pinned by hash: subt/docker/robotika/Dockerfile:21","Warn: pipCommand not pinned by hash: .github/workflows/python-ci.yaml:25","Warn: pipCommand not pinned by hash: .github/workflows/python-ci.yaml:26","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 containerImage dependencies pinned","Info:   1 out of  11 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-17T14:35:37.599Z","repository_id":2104399,"created_at":"2025-08-17T14:35:37.599Z","updated_at":"2025-08-17T14:35:37.599Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31556230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-12-13T21:58:44.362Z","updated_at":"2026-04-08T12:32:09.515Z","avatar_url":"https://github.com/robotika.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"OSGAR\n=====\n\n**Open Source Garden/Generic Autonomous Robot (Python library)**\n\nOSGAR is a lightweight, multi-platform library for recording and replaying data from multiple `nodes` (modules such as sensors, robots, and applications) logged into a single file. It is designed to be minimalistic, modular, and robust, capable of running on everything from high-end workstations to low-end devices like the Raspberry Pi Zero.\n\nOSGAR was originally developed by [robotika.cz](https://robotika.cz) and has been successfully deployed in several international robotics challenges.\n\n# Key Features\n\n*   **Robust Logging:** All port data is logged with microsecond-resolution timestamps into a single `.log` file.\n*   **Deterministic Replay:** Replaying recorded data produces identical outputs, enabling reliable debugging of complex sensor interactions and algorithms in a controlled environment.\n*   **Modular Architecture:** Robots are built as a set of independent modules connected via a communication \"bus,\" defined in a simple JSON configuration.\n*   **Minimalistic \u0026 Multi-platform:** Written in Python, with minimal dependencies, ensuring it runs on various operating systems and hardware.\n\n# Applications \u0026 Robots\n\nOSGAR has been the core software framework for a variety of robotic platforms and prestigious competitions. See [OSGAR Platforms](osgar/platforms/README.md) for more details.\n\n\u003cimg src=\"http://robotika.cz/competitions/roboorienteering/2016/jd-nav2.jpg\" alt=\"John Deere X300R\" width=\"600\"\u003e\n\n### DARPA Subterranean Challenge (SubT)\nTeam Robotika used OSGAR to coordinate a heterogeneous fleet of robots (wheeled, tracked, and flying) to map and search complex underground environments.\n\n\u003cimg src=\"https://robotika.cz/competitions/subtchallenge/tunnel-circuit/day3-0742-kloubak.jpg\" alt=\"DARPA SubT\" width=\"600\"\u003e\n\n### DARPA Triage Challenge (DTC)\nOSGAR powers a fleet of **Matty** robots (M01-M05) equipped with non-contact sensors to detect physiological signs in casualties during mass-casualty incidents.\n\n\u003cimg src=\"https://robotika.cz/competitions/dtc/phase2/matty-all-hw-completed.jpg\" alt=\"Matty robots for DTC\" width=\"600\"\u003e\n\n### Field Robot Event\nOSGAR-based robots, including the \"Matty twins,\" have successfully competed in the Field Robot Event, an international competition for autonomous robots in agriculture.\n\n\u003cimg src=\"https://robotika.cz/competitions/fieldrobot/2025/matty-twins-prizes.jpg\" alt=\"Field Robot Event\" width=\"600\"\u003e\n\n# Documentation\n\nFor more detailed information, please refer to:\n*   [Technical Guide (English)](https://robotika.github.io/osgar/index.html)\n*   [Czech Guide (Průvodce OSGARem)](https://robotika.cz/guide/osgar/cs)\n\n# Architecture\n\nRobot is set of modules. Every module has input and output ports, described\ntogether with the connections in the config file. All ports are logged with\ntimestamp (microsecond resolution). The module is typically an instance of a\n`driver`, whose init arguments are also in config file.\n\n\n# Notes regarding GitHub repository\n\nThe current development code is under `osgar` directory.\nIf you are using OSGAR directly from sources please make sure that\nyou setup PYTHONPATH to the root of this project.\n\nThe example configurations are stored in `config` folder. JSON files are\nused.\n\n## Examples\n\n### Collect data from sensor(s)\n\nThere is a [osgar/record.py](https://github.com/robotika/osgar/blob/master/osgar/record.py)\nto run data collection based on given configuration file.\nIf you would like to collect GPS data available on serial port use modified version\nof [test-windows-gps.json](https://github.com/robotika/osgar/blob/master/config/test-windows-gps.json)\nfor Windows or \n[test-gps-imu.json](https://github.com/robotika/osgar/blob/master/config/test-gps-imu.json) for Linux.\n\n\n```\npython -m osgar.record config/test-windows-gps.json\n```\n\nTo replay existing log use:\n```\npython -m osgar.replay --module \u003cmodule name\u003e \u003clog file name\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotika%2Fosgar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobotika%2Fosgar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotika%2Fosgar/lists"}