Skip to content

Commit

Permalink
Add README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelGrupp committed Dec 27, 2024
1 parent 4de2e4e commit dba114e
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 1 deletion.
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
[package]
name = "maps"
description = "Inspect, compare and align multiple grid maps in an intuitive GUI"
description = "Inspect, compare and align multiple grid maps in an intuitive & fast GUI"
authors = ["Michael Grupp"]
license = "Apache-2.0"
version = "0.1.0"
edition = "2021"
readme = "README.md"

[dependencies]
clap = { version = "4.5.23", features = ["derive"] }
Expand Down
105 changes: 105 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# maps

**Inspect, compare and align multiple grid maps in an intuitive & fast GUI**

## Audience

`maps` can be useful for you if ...

* ...you work with robots using SLAM.
* ...your SLAM system supports exporting maps as grid maps.
* ...you want to view the maps, but other viewers are...
* ...tedious to spin up (e.g. ROS nodes/topics + RViz).
* ...not supporting grid coordinates (any pure image viewer).


## Goals

At its core, `maps` is an image viewer that is aware of the metric properties of the grid maps.

### Intuitive
* Maps of different resolutions can be displayed in a shared coordinate system with correct scale and position.
* Details of large maps can be quickly inspected using a lens tool without zooming & dragging.
* Files can be loaded both via GUI and CLI.
### Fast
* Interaction should be fast and responsive, also with very large high resolution maps.
* Built with [Rust](https://www.rust-lang.org/) using [egui](https://github.com/emilk/egui) + [wgpu](https://github.com/gfx-rs/wgpu).

> ⚠️ `maps` is ready to use, but also under active development. Some features may be added or changed in upcoming versions.
## Input

The supported grid map file format is ROS map_server files, i.e. a pair of image and metadata per map:

* YAML metadata file containing information about the origin, resolution and other properties.
* Image file containing the grid cells.

See the [ROS documentation](http://wiki.ros.org/map_server#Map_format) for all details.

## User Interface

### Views

`maps` provides three different main view modes.

* `Aligned`:
* Maps are shown in a metric grid, with their origin at zero.
* The grid can be dragged and zoomed, grid lines can be shown etc.
* `Tiles`:
* Map images are shown in separate tab tiles.
* The tab tiles can be freely rearranged, for example to view images side by side.
* `Stacked`: Map images are shown stacked in a scrollable view.

### Lens

The lens tool magnifies a region below the mouse cursor to the original image size. This makes it fast to inspect details of large maps in selected regions without tedious zooming and/or dragging.

* Right-click the mouse on a map to enable/disable the lens (or press L).
* Scroll to adjust the size of the lens.

### Menu & Settings

* Click `` to open the sidebar to manage maps and their visibility.
* Click `` to open the sidebar for settings.

## Install

First, you need to [install the Rust toolchain](https://www.rust-lang.org/tools/install).

Then you can install the latest release from [crates.io](https://crates.io/):
> ⚠️ TODO
---

You can also build completely from source if you want.
<details>
<summary>Details</summary>

Clone this repository, then:
```bash
cargo install --path maps/
```

(or `cargo build --release` if you just want to build)

</details>

## Run

Start the app with:

```bash
maps
```
Use the `Load Maps` button to add your map files.


You can also already pass map file paths from the command line:

```bash
maps some/map.yaml some/other/map.yaml
```

## License

Apache 2.0

0 comments on commit dba114e

Please sign in to comment.