mactat / map-pacer

Multiple agents path planing algorithms using cloud and edge resources

Home Page:https://frontend-mactat.cloud.okteto.net/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Python 3.10 CI/CD Build Status thesis-release

Initial idea

MAP-PACER - multiple agents path planing algorithms using cloud and edge resources

Description

Comparison of path planning algorithms for multiple robots based on edge-cloud collaborative computing, cloud computing, and local computing

Initial idea

Initial idea

Services architecture

Services architecture

Local testing

  1. Install vagrant and virtualbox
  2. Use pre configured machine
  3. Start ssh session to machine:
ssh dev-vm@localhost -p 2222
  1. Clone repo
  2. Use tilt for development and testing
tilt up

This includes live cde changes and automatic deployment to local kubernetes cluster managed by kind.

General development

For spinning dev-env, tilt, kind and ctlptl has to be configured.
For cloud development add '.env' file with:
AZURE_SUBSCRIPTION_ID, AZURE_GROUP_NAME, AZURE_CLUSTER_NAME, DOCKER_TOKEN, DOCKER_USERNAME

Usage:
	make dev                      run dev cluster and tilt
	make clean                    stop local cluster and tilt
	make cloud-login              login to azure and setup kubectl
	make cloud-up                 start kubernetes cluster in azure
	make cloud-down               stop kubernetes cluster in azure
	make cloud-deploy             deploy to kubernetes cluster in azure
	make cloud-build	      build and push docker images
	make plots RESULTS=<res_file> creates plots, provide <RESULTS> file
	make ping-plots		      test RTT time to cloud
	make pdf		      compile thesis to pdf
	make local-observability      deploy prometheus and graphana
	make performance 	      make performance test against
	  SYSTEM_ID=<system_id>       selected system
	  FLAGS=<--json > file.json>
	

Algorithms

# Basic A*, Dijkstra, BFS
# Advanced CA*

CA* sequence diagram

CA* sequence diagram

Map

Maps are set to be grid based and are represented as 2D array of integers. Each integer represents a cell in the grid. Those grids are transformed into graphs and then used for path planning.

Planning can be based on 2D maps(representing just space) or 3D maps(representing both time and space).

Principle of graph creation for 2D map:

2D map

Principle of graph creation for 3D map:

3D map

Logic for path planning

Example

Example of planned path:

Solved map

Example of solved map for multiple agents(development vis):

Solved map

Solved map

Observability

Observability in this project is based on prometheus and grafana. Grafana is used for visualizing metrics and prometheus is used for collecting them. To deply grafana and prometheus locally use:

make local-observability

It can be used in multiple setups: Observability

Example of grafana dashboard: Grafana dashboard

Multi tenancy

By design this is multi tenant system, tenants can share resources like broker and upstream computation to the cloud: Multi tenancy

Results

Path finding time

Path finding time

Path finding time(log)

Path finding time log

Other stats

other stats

Agent - Cloud - RTT

RTT

About

Multiple agents path planing algorithms using cloud and edge resources

https://frontend-mactat.cloud.okteto.net/


Languages

Language:Python 71.8%Language:HTML 17.5%Language:Makefile 4.1%Language:Starlark 2.8%Language:Dockerfile 2.3%Language:Mustache 1.5%