From 6b23aaf583f331c3ff58b2b34046f9d8d6fdbd05 Mon Sep 17 00:00:00 2001 From: Pavel Mokeev Date: Sun, 14 Apr 2024 10:59:51 +0300 Subject: [PATCH] feat(pip): minor README fixes --- README.md | 9 ++++----- assets/logo.png | Bin 4657 -> 18759 bytes 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3ee0508..7f0a4b5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ - + SOVA is a SLAM on Voxel Alignment and an open-source Python library, designed for fast and adaptive comparison of different approaches to solving the voxel-based planar SLAM problem. Our main goal is to provide extendable, simple and efficient interfaces for -testing various hypotheses, which include different subdivision/segmenter/backend criteria. +testing various voxel SLAM hypotheses, which include different subdivision/segmenter/backend criteria. [![Linters](https://github.com/prime-slam/voxel-slam/actions/workflows/lint.yaml/badge.svg)](https://github.com/prime-slam/voxel-slam/actions/workflows/lint.yaml) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) @@ -11,8 +11,7 @@ testing various hypotheses, which include different subdivision/segmenter/backen - - - # Installation -To use this library you need to download this repository and install necessary dependencies. -How to do this: +To use this library you need to: 1. Download and install Python 3.10 from the [official website](https://www.python.org/downloads/). 2. Install pip package: @@ -20,7 +19,7 @@ How to do this: pip install sova ``` If you want to use `MROBBackend` robust optimisations, you have to install mrob library manually: - 1. Download [wheels](https://drive.google.com/file/d/1rUdbybNvHx80ykr62aceAcBIPtlntWIz/view?usp=sharing) from source + 1. Download [wheels from source](https://drive.google.com/file/d/1rUdbybNvHx80ykr62aceAcBIPtlntWIz/view?usp=sharing) 2. Install mrob from wheels ```bash python -m pip install mrob --no-index --find-links ... --force-reinstall diff --git a/assets/logo.png b/assets/logo.png index 9b71fc32704d63467eb16d7ce2c38d3646b822ca..58fca7e500cbd4b5db89ecd9e3dfda883364d454 100644 GIT binary patch literal 18759 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 literal 4657 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 DIS~)7