{"id":19746274,"url":"https://github.com/raja-s/orca","last_synced_at":"2026-02-25T08:40:24.756Z","repository":{"id":133439712,"uuid":"109001914","full_name":"raja-s/ORCA","owner":"raja-s","description":"An attempt at a simple implementation of the ORCA algorithm 🤖💢🤖📋","archived":false,"fork":false,"pushed_at":"2024-03-03T18:10:26.000Z","size":42,"stargazers_count":10,"open_issues_count":4,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-05T01:41:39.088Z","etag":null,"topics":["c-plus-plus","collision-avoidance","geometry-computation","linear-programming","navigation","optimization-algorithms","reciprocity","unc"],"latest_commit_sha":null,"homepage":"http://gamma.cs.unc.edu/ORCA/","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/raja-s.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":"2017-10-31T13:46:23.000Z","updated_at":"2025-06-28T13:15:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"21354fae-d199-461b-a961-724775c49223","html_url":"https://github.com/raja-s/ORCA","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/raja-s/ORCA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raja-s%2FORCA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raja-s%2FORCA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raja-s%2FORCA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raja-s%2FORCA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raja-s","download_url":"https://codeload.github.com/raja-s/ORCA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raja-s%2FORCA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29815025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"last_error":"SSL_read: 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":["c-plus-plus","collision-avoidance","geometry-computation","linear-programming","navigation","optimization-algorithms","reciprocity","unc"],"created_at":"2024-11-12T02:13:58.331Z","updated_at":"2026-02-25T08:40:24.741Z","avatar_url":"https://github.com/raja-s.png","language":"C++","readme":"# Optimal Reciprocal Collision Avoidance\n\n* [Introduction](#introduction)\n* [How to use](#how-to-use)\n  * [Building](#building)\n  * [Running](#running)\n  * [Debugging](#debugging)\n  * [Cleaning up](#cleaning-up)\n* [Known issues](#known-issues)\n* [References](#references)\n\n## Introduction\n\nThe *Optimal Reciprocal Collision Avoidance* (ORCA) algorithm, formulated at the University of North Carolina [\u003ca href='#ref-1'\u003e1\u003c/a\u003e], is a fully decentralized collision avoidance algorithm designed with key principles in mind:\n\n- Agents compute their velocities in real-time and can react to a dynamic environment\n- Each agent runs the algorithm locally and independently, and does not need to communicate with other agents or a central coordinating unit\n- The algorithm is *optimal*, in the sense that every agent deviates as little as possible from its \"preferred\" route to avoid collisions\n- The algorithm guarantees collision-free navigation, under certain conditions\n\nThe aim of this project is to build a simple C++ implementation of the ORCA algorithm, based on the original formulation [\u003ca href='#ref-1'\u003e1\u003c/a\u003e] as well as the algorithm for solving the Linear Program, as described in *Computational Geometry, Algorithms and Applications, Third Edition* [\u003ca href='#ref-2'\u003e2\u003c/a\u003e].\n\n## How to use\n\n### Building\n\nThe program can be built as follows:\n\n```shell\nmake\n```\n\nThis will create all the object files from the source code, then it will create the binary `bin/demo`.\n\n### Running\n\nThe program can be run (it will also be built if not done beforehand) as follows:\n\n```shell\nmake run\n```\n\nThis should open a window with a visual demonstration of the implementation in action.\nIt should also produce the following output:\n\n```text\nInitializing the ORCA system...\nCreating a separate thread to run the ORCA loop...\nStarted the ORCA loop.\n```\n\nAnd, once the agents reach their destination:\n\n```text\nAll agents have converged to their final destinations.\n```\n\n### Debugging\n\nThe program can be compiled with debug flags and debugged (requires `gdb` to be installed) as follows:\n\n```shell\nmake debug\n```\n\n### Cleaning up\n\nFinally, object and binary files can be cleaned up as follows:\n\n```shell\nmake clean\n```\n\n## Known issues\n\nThe implementation is still incomplete as there are known bugs (see [open issues](https://github.com/raja-s/ORCA/issues)).\n\n## References\n\n\u003cp id='ref-1'\u003e[1] van den Berg J., Guy S.J., Lin M., Manocha D. (2011) Reciprocal \u003ci\u003en\u003c/i\u003e-Body Collision Avoidance. In: Pradalier C., Siegwart R., Hirzinger G. (eds) Robotics Research. \u003ci\u003eSpringer Tracts in Advanced Robotics\u003c/i\u003e, vol 70. Springer, Berlin, Heidelberg\u003c/p\u003e\n\n\u003cp id='ref-2'\u003e[2] M. de Berg, O. Cheong, M. van Kreveld, M. Overmars. \u003ci\u003eComputational Geometry: Algorithms and Applications.\u003c/i\u003e Springer-Verlag, 2008.\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraja-s%2Forca","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraja-s%2Forca","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraja-s%2Forca/lists"}