{"id":26127505,"url":"https://github.com/icaropires/objectlevel_fusion","last_synced_at":"2025-07-15T14:10:39.334Z","repository":{"id":50038383,"uuid":"316626983","full_name":"icaropires/objectlevel_fusion","owner":"icaropires","description":"This repository was firstly developed when writing a bachelor's thesis and contributes to the fusion of data from multiple sensors (the perception ones) to get the best information from each sensor. It was implemented as ROS 2 C++ packages and has some python experiments interacting with CARLA, including some plotting results.","archived":false,"fork":false,"pushed_at":"2023-04-05T19:39:41.000Z","size":70163,"stargazers_count":9,"open_issues_count":7,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T07:48:03.543Z","etag":null,"topics":["autonomous-vehicles","carla-simulator","data-fusion","multisensor","perception","ros2","ros2-foxy","self-driving"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icaropires.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":"2020-11-28T00:30:11.000Z","updated_at":"2024-08-27T12:36:48.000Z","dependencies_parsed_at":"2025-03-10T18:19:11.122Z","dependency_job_id":null,"html_url":"https://github.com/icaropires/objectlevel_fusion","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/icaropires%2Fobjectlevel_fusion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaropires%2Fobjectlevel_fusion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaropires%2Fobjectlevel_fusion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaropires%2Fobjectlevel_fusion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icaropires","download_url":"https://codeload.github.com/icaropires/objectlevel_fusion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248750008,"owners_count":21155682,"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":["autonomous-vehicles","carla-simulator","data-fusion","multisensor","perception","ros2","ros2-foxy","self-driving"],"created_at":"2025-03-10T18:08:39.488Z","updated_at":"2025-04-13T16:53:55.188Z","avatar_url":"https://github.com/icaropires.png","language":"C++","readme":"# Object-level Fusion\n\n[![CI](https://github.com/icaropires/objectlevel_fusion/actions/workflows/ci.yml/badge.svg)](https://github.com/icaropires/objectlevel_fusion/actions/workflows/ci.yml)\n\n**Summary:** This repository was firstly developed when writing a bachelor's thesis, and contributes to the fusion of data from multiple sensors (the perception ones) to get the best information from each sensor.\n\nObject-level fusion performs fusion at a higher level of abstraction and, for this reason, contributes to modularity and reuse. This work implements a software solution to address part of this reimplementation problem. It's composed of ROS 2 packages and implements the object list preprocessing from the fusion layer of an object-level fusion architecture. This preprocessing is composed of the **spatial and temporal alignments**, plus the **objects association**. Finally, this preprocessing was validated with an experiment using [CARLA](http://carla.org/) self-driving simulator, using as main metric the number of failed associations in some test case scenarios ([check experiment](experiments/carla)).\n\n## Bachelor's thesis document\n\nThe document version that was reviewed and approved by the thesis comittee can be found at:\n* [University repository](https://bdm.unb.br/handle/10483/30630)\n* [thesis/bachelors\\_thesis.pdf](./thesis/bachelors_thesis.pdf)\n\n## Architecture Layers\n\n\u003e _Checked boxes means implemented in this repository_\n\n* [ ] Sensor Layer\n  - ...\n* [ ] Fusion Layer\n  - [x] Spatial Alignment \n  - [x] Temporal Alignment\n  - [x] Object Association\\*\n  - [ ] State and Covariance Fusion\n  - [ ] Existence Fusion\n  - [ ] Classification Fusion\n* [ ] Application Layer\n  - ...\n\n\u003e \\*_implemented a simpler version_\n\n## Requirements\n\n### Dockerized execution\n\n* Linux\n* Docker\n* Docker Compose\n\n### Local execution\n\n* Linux\n* ROS 2 Foxy.\n* Others: `rosdep` (from ROS) will probably install them. Check [Dockerfile](docker/Dockerfile.dev), and the packge files from [fusion layer](fusion_layer/package.xml), and [object model](object_model_msgs/package.xml).\n\n## Using\n\nMuch of the usage is facilited by the [run](./run) script. Under the hood it just calls `docker-compose`. Feel free to customize your execution by directly calling `docker-compose` if you're more experienced.\n\n### Executing\n\nExecute the instructions of one of the following subsections, register your sensors, and then publish your object lists :smile:\n\n#### Executing (Easy, dockerized way)\n\nExecute:\n\n```bash\n$ ./run\n\n# Or in background:\n$ ./run -d\n```\n\nWhen the application is up, it will be waiting for messages of type [`object_model_msgs/msg/ObjectModel`](object_model_msgs/msg/ObjectModel.msg) on the topic `objectlevel_fusion/fusion_layer/fusion/submit`, and returning the list of global objects being tracked on the topic `objectlevel_fusion/fusion_layer/fusion/get`.\n\n#### Executing in a ROS 2 workspace\n\nClone this project in your ROS workspace and follow the ROS 2 procedures: [ref](https://docs.ros.org/en/foxy/Tutorials/Creating-Your-First-ROS2-Package.html).\n\n### Registering/removing sensors and publishing object lists\n\nCheck some examples in [examples](./examples) (bash and python available).\n\n### Running (unitary) tests\n\nWith the application **up**, tests can be run with:\n\n```bash\n./run tests\n```\n\n### Development flow\n\nAfter editing the source code, if the application is up, first bring it down (calling `./run down` if running in background, otherwise just `CTRL+C` in the terminal it's running), then:\n\n```bash\n./run compile\n```\n\nthen, bring the application up again (`./run up`). Now, the modified should be in execution.\n\n### Initializing a shell\n\nTo run a shell in the container where the application is running, just execute (with the application **up**):\n\n```bash\n./run shell\n```\n\n### Other commands from `run`\n\nTo see a list and descriptions, execute:\n\n```bash\n./run help\n```\n\n## How to contribute\n\n* Creating [issues](https://github.com/icaropires/objectlevel_fusion/issues) (questions, bugs, feature requests, etc);\n* Modifying the repository: [pull requests](https://github.com/icaropires/objectlevel_fusion/pulls). Just make sure to describe your changes and that everything is working.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficaropires%2Fobjectlevel_fusion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficaropires%2Fobjectlevel_fusion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficaropires%2Fobjectlevel_fusion/lists"}