Science Score: 75.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, ieee.org -
○Academic email domains
-
✓Institutional organization owner
Organization uos has institutional domain (kbs.informatik.uni-osnabrueck.de) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.7%) to scientific vocabulary
Keywords
Repository
A robot wants to simulate too
Basic Info
- Host: GitHub
- Owner: uos
- License: bsd-3-clause
- Language: C++
- Default Branch: main
- Homepage: https://uos.github.io/rmagine_docs/
- Size: 3.16 MB
Statistics
- Stars: 52
- Watchers: 9
- Forks: 9
- Open Issues: 0
- Releases: 23
Topics
Metadata Files
README.md
Rmagine
Robots want to simulate too
Description
Rmagine is a library for fast and accurate simulation of range sensors in large 3D environments using ray tracing. These simulations can also run on embedded devices mounted on a robot. Rmagine has been specifically developed to:
- perform multiple sensor simulations simultaneously and in real time
- distribute computations across devices (CPU, GPU, RTX, …)
- keep data local to the device performing the computation
- minimize graphical overhead (off-screen rendering)
- support runtime-critical tasks
| Spherical, pinhole, or fully customizable models | Query multiple attributes at intersections |
|:----:|:----:|
|
|
|
Installation and Usage
Minimal instructions for installing the Rmagine library on your system:
Dependencies
Rmagine depends on TBB, Boost, Eigen, Assimp, and CMake. Install them as follows:
Ubuntu
```bash sudo apt install -y libtbb-dev libboost-dev libeigen3-dev libassimp-dev cmake ```macOS
```bash brew install tbb boost eigen assimp cmake ```Build and Install
Rmagine can be built either with a standard CMake workflow or by placing it directly into your ROS workspace.
Standard CMake Build
```bash mkdir -p rmagine/build cd rmagine/build cmake .. make ``` ```bash make install ```ROS Workspace
Download this library and place it into the `src` folder of your ROS workspace. ```bash colcon build ```For more advanced options and detailed instructions, visit the Wiki.
Example
This example demonstrates how to simulate ranges for 100 Velodyne VLP-16 sensors using the Embree backend.
First, include the following headers:
```c++ // Map handling
include
// Sensor models
include
// Predefined sensor models (e.g. VLP-16)
include
// Simulators
include
namespace rm = rmagine; ```
The following code loads the map "my_mesh.ply" and simulates 100 Velodyne VLP-16 scans from predefined poses. Hits and ranges are selected as intersection attributes:
```c++ // Load a map from disk std::string pathtomesh = "mymesh.ply"; rm::EmbreeMapPtr map = rm::importembreemap(pathto_mesh);
// Define a sensor model // Here we use the predefined VLP-16 sensor model rm::SphericalModel sensormodel = rm::vlp16900();
// Construct a simulator, set sensor model and map rm::SphereSimulatorEmbree sim; sim.setModel(sensor_model); sim.setMap(map);
// Create 100 transformations between base and map (robot poses)
rm::Memory
// Add desired attributes at intersections // Optimized at compile time // Possible attributes (rmagine/simulation/SimulationResults.hpp): // - Hits // - Ranges // - Points // - Normals // - FaceIds // - GeomIds // - ObjectIds using ResultT = rm::Bundle< rm::Hitsrm::RAM, rm::Rangesrm::RAM
; // To query all attributes at once, use 'rm::IntAttrAll' instead of 'ResultT'
ResultT result = sim.simulate
// Slice the results for the scan at pose 5 auto ranges5 = result.ranges(5 * sensormodel.size(), 6 * sensormodel.size()); std::cout << "First ray’s range of the fifth scan: " << ranges5[0] << std::endl; ```
More detailed examples explaining each step and how to customize them are available in the Wiki.
Additional examples can be found here: https://github.com/amock/rmagine_examples.
Citation
Please reference the following paper when using the Rmagine library in your scientific work:
bib
@inproceedings{mock2023rmagine,
title={Rmagine: 3D Range Sensor Simulation in Polygonal Maps via Ray Tracing for Embedded Hardware on Mobile Robots},
author={Mock, Alexander and Wiemann, Thomas and Hertzberg, Joachim},
booktitle={IEEE International Conference on Robotics and Automation (ICRA)},
year={2023},
doi={10.1109/ICRA48891.2023.10161388}
}
The paper is available on IEEE Xplore and as a preprint on arXiv.
Rmagine-Accelerated Applications
Contributions
We welcome contributions of all kinds: issues, pull requests, and feedback. Feel free to help us improve this open-source project.
If you would like to enhance the documentation, whether by fixing typos or adding examples, please submit issues or pull requests at https://github.com/uos/rmagine_docs.
Maintainment
Maintainers: - Alexander Mock (Osnabrück University)
Contact the people listed above if you want and feel capable to help maintaining this piece of open-source software.
Owner
- Name: Osnabrück University, Knowledge Based Systems Group
- Login: uos
- Kind: organization
- Location: Osnabrück, Germany
- Website: kbs.informatik.uni-osnabrueck.de
- Repositories: 67
- Profile: https://github.com/uos
Citation (CITATION.cff)
cff-version: 1.2.0
preferred-citation:
title: "Rmagine: 3D Range Sensor Simulation in Polygonal Maps via Ray Tracing for Embedded Hardware on Mobile Robots"
doi: "10.1109/ICRA48891.2023.10161388"
year: "2023"
type: conference-paper
collection-title: "IEEE International Conference on Robotics and Automation (ICRA)"
url: https://kbs.informatik.uos.de/files/pdfs/icra2023_rmagine.pdf
codeurl: https://github.com/uos/rmagine
authors:
- family-names: Mock
given-names: Alexander
orcid: 0009-0004-7800-9774
- family-names: Wiemann
given-names: Thomas
orcid: 0000-0003-0710-872X
- family-names: Hertzberg
given-names: Joachim
orcid: 0000-0002-6371-9624
GitHub Events
Total
- Create event: 8
- Issues event: 1
- Release event: 6
- Watch event: 6
- Issue comment event: 5
- Push event: 53
- Pull request event: 17
- Fork event: 1
Last Year
- Create event: 8
- Issues event: 1
- Release event: 6
- Watch event: 6
- Issue comment event: 5
- Push event: 53
- Pull request event: 17
- Fork event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 9
- Average time to close issues: N/A
- Average time to close pull requests: 6 days
- Total issue authors: 0
- Total pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.67
- Merged pull requests: 8
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 9
- Average time to close issues: N/A
- Average time to close pull requests: 6 days
- Issue authors: 0
- Pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.67
- Merged pull requests: 8
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- amock (8)
- M2-TE (2)