Skip to content

Commit

Permalink
Updated README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Enigmatisms committed Jun 8, 2022
1 parent bfaea3e commit b66b52c
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,31 @@
# LSMv2 (WIP)
# LSMv2
**L**iDAR **S**i**M**ulator v2: Interactive 2D LiDAR scanner simulator version II. Implemented via Rust and CUDA.
## Functionalities & Features

- Simulated 2D scanner data. The simulation algorithm is written in CUDA (fast ray trace algorithm being able to simulated a scan with 2400 points within 0.5ms).
- Visualization via Rust [nannou](https://github.com/nannou-org/nannou) (implemented in OpenGL), enabling smooth and limitless visualization.
- For example, the older simulation visualization implemented in OpenCV is restricted to pixel plotting: unable (or very tricky) to zoom in\out, rotate and translate the canvas.
- Nannou has no limits w.r.t canvas operations and it is extremely efficient due to the bottom layer implementation of OpenGL.
- `nannou_egui` crate used. Intergrated Rust EGUI GUI implementation, easy to use & good looking.

| GUI for editor | GUI for simulator |
| :--------------------: | :--------------------------------------------------: |
| ![](assets/editor.png) | <img src="assets/simulator.png" style="zoom:80%;" /> |

- Smooth mouse & keyboard control of the simulated scanner (via nannou API).
- Mixed programing: Rust & CUDA C++: Enabling accelerated 2d LiDAR ray trace.
- Fast collision detection: scanner will not be allowed to drive into the obstacles
- Coarse occupancy grid (indicates the obstacle id of the grid if the grid is occupied)
- Use the id to access the contour of the obstacle and check whether the scanner is going to move inside the obstacle (point in polygon test)
- An efficient algorithm inplemented via Rust
- An efficient algorithm implemented via Rust
- Better map editor (than version I, the old LiDARSim2D)
- Canvas translation, rotation and scaling are supported.
- Three modes: polygon, straight line (axis-aligned), rectangle (axis-aligned)
- Drawn point selection, movement, deletion.
- Easy to edit the previously drawn map. Trajectory display.
- Screen shot API (also available in simulator)
- Rust implementation: Safer, clearer and efficiency guaranteed! (Personally, I prefer Rust than C++)
- configuration parser: modify the configurations of LiDAR, map, etc in a `.json` file without compiling!
- configuration parser: modify the configurations of LiDAR, map, etc. in a `.json` file without compiling!

## TODO

Expand All @@ -30,7 +42,6 @@
- [ ] More available sensors like Odometry and IMU
- [ ] Fancier Future
- [ ] Network API: multiple scanners.
- [ ] Unified GUI: softwarization!
- [ ] Visualizer. Replacing RViz!

## Simple Demo
Expand Down
Binary file added README/editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added README/simulator.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/simulator.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit b66b52c

Please sign in to comment.