From b1bc644c28970774b0ceaad0593056ceeb506388 Mon Sep 17 00:00:00 2001 From: Drew Bednar Date: Mon, 7 Jun 2021 13:10:28 -0400 Subject: [PATCH] intial commit --- .gitignore | 1 + data/slam_demo_floor_plan.png | Bin 0 -> 25144 bytes dev_requirements.in | 3 +++ dev_requirements.txt | 46 ++++++++++++++++++++++++++++++++++ requirements.in | 0 slam/__init__.py | 0 slam/environment.py | 0 slam/main.py | 0 slam/sensors.py | 0 9 files changed, 50 insertions(+) create mode 100644 data/slam_demo_floor_plan.png create mode 100644 dev_requirements.in create mode 100644 dev_requirements.txt create mode 100644 requirements.in create mode 100644 slam/__init__.py create mode 100644 slam/environment.py create mode 100644 slam/main.py create mode 100644 slam/sensors.py diff --git a/.gitignore b/.gitignore index f8b73e7..e3406be 100644 --- a/.gitignore +++ b/.gitignore @@ -138,3 +138,4 @@ dmypy.json # Cython debug symbols cython_debug/ +.idea/ diff --git a/data/slam_demo_floor_plan.png b/data/slam_demo_floor_plan.png new file mode 100644 index 0000000000000000000000000000000000000000..40b23a621457e3d5e75f01b222e610a241ddd2fb GIT binary patch literal 25144 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%0DTOu1K}6g1Vly!^aYaj?WlFlx%A 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 literal 0 HcmV?d00001 diff --git a/dev_requirements.in b/dev_requirements.in new file mode 100644 index 0000000..d4604c7 --- /dev/null +++ b/dev_requirements.in @@ -0,0 +1,3 @@ +black +pip-tools +pytest \ No newline at end of file diff --git a/dev_requirements.txt b/dev_requirements.txt new file mode 100644 index 0000000..997b844 --- /dev/null +++ b/dev_requirements.txt @@ -0,0 +1,46 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile dev_requirements.in +# +appdirs==1.4.4 + # via black +attrs==21.2.0 + # via pytest +black==21.5b2 + # via -r dev_requirements.in +click==8.0.1 + # via + # black + # pip-tools +iniconfig==1.1.1 + # via pytest +mypy-extensions==0.4.3 + # via black +packaging==20.9 + # via pytest +pathspec==0.8.1 + # via black +pep517==0.10.0 + # via pip-tools +pip-tools==6.1.0 + # via -r dev_requirements.in +pluggy==0.13.1 + # via pytest +py==1.10.0 + # via pytest +pyparsing==2.4.7 + # via packaging +pytest==6.2.4 + # via -r dev_requirements.in +regex==2021.4.4 + # via black +toml==0.10.2 + # via + # black + # pep517 + # pytest + +# The following packages are considered to be unsafe in a requirements file: +# pip diff --git a/requirements.in b/requirements.in new file mode 100644 index 0000000..e69de29 diff --git a/slam/__init__.py b/slam/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/slam/environment.py b/slam/environment.py new file mode 100644 index 0000000..e69de29 diff --git a/slam/main.py b/slam/main.py new file mode 100644 index 0000000..e69de29 diff --git a/slam/sensors.py b/slam/sensors.py new file mode 100644 index 0000000..e69de29