Skip to content

Commit

Permalink
Linting and doc update
Browse files Browse the repository at this point in the history
  • Loading branch information
AgarwalSaurav committed Mar 19, 2024
1 parent 23611cf commit c723015
Show file tree
Hide file tree
Showing 49 changed files with 1,507 additions and 1,062 deletions.
42 changes: 21 additions & 21 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,27 @@ jobs:
uses: actions/checkout@v4
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@v1.3.1
# - name: 'CI docker base'
# uses: ./.github/docker-base-action
# with:
# base_tag: pytorch2.2.1-cuda12.3.1-ros2humble
# github_token: ${{ secrets.GITHUB_TOKEN }}
# - name: cleanup
# run: docker system prune -a -f
# - name: 'CI docker base'
# uses: ./.github/docker-base-action
# with:
# base_tag: pytorch2.2.1-ros2humble
# github_token: ${{ secrets.GITHUB_TOKEN }}
# - name: cleanup
# run: docker system prune -a -f
# - name: 'CI docker base'
# uses: ./.github/docker-base-action
# with:
# base_tag: pytorch2.2.1-cuda12.3.1
# github_token: ${{ secrets.GITHUB_TOKEN }}
# - name: cleanup
# run: docker system prune -a -f
- name: 'CI docker base'
uses: ./.github/docker-base-action
with:
base_tag: pytorch2.2.1-cuda12.3.1-ros2humble
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: cleanup
run: docker system prune -a -f
- name: 'CI docker base'
uses: ./.github/docker-base-action
with:
base_tag: pytorch2.2.1-ros2humble
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: cleanup
run: docker system prune -a -f
- name: 'CI docker base'
uses: ./.github/docker-base-action
with:
base_tag: pytorch2.2.1-cuda12.3.1
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: cleanup
run: docker system prune -a -f
- name: 'CI docker base'
uses: ./.github/docker-base-action
with:
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ See full documentation at [https://KumarRobotics.github.io/CoverageControl/](htt

Coverage control is the problem of navigating a robot swarm to collaboratively monitor features or a phenomenon of interest not known _a priori_.
The library provides a simulation environment, algorithms, and GNN-based architectures for the coverage control problem.
<img align="right" width="300" src="doc/graphics/LPAC.gif">
<img align="right" width="300" src="https://github.com/KumarRobotics/CoverageControl/blob/main/doc/graphics/LPAC.gif">

**Key features:**
- The core library `CoverageControlCore` is written in `C++` and `CUDA` to handle large-scale simulations
Expand Down Expand Up @@ -34,7 +34,7 @@ The library provides a simulation environment, algorithms, and GNN-based archite
> arXiv preprint arXiv:2401.04855 (2024).

## Open Source Libraries Dependency
## Acknowledgements
- [PyTorch](https://pytorch.org/)
- [PyTorch Geometric](https://pytorch-geometric.readthedocs.io/en/latest/)
- [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page)
Expand Down
9 changes: 6 additions & 3 deletions doc/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@

PROJECT_NAME = "Coverage Control Library"
PROJECT_NUMBER = $(GIT_TAG)
EXTRACT_STATIC = YES
USE_MDFILE_AS_MAINPAGE = doc/manual/README.md
INPUT = doc/manual/README.md \
doc/manual/ref_manual.txt \
doc/manual/installation.md \
doc/manual/quick_start.md \
doc/manual/coverage-control.md \
doc/manual/lpac.md \
doc/manual/coverage-control.md \
cppsrc/core \
params \
cppsrc/main/coverage_algorithm.cpp \
python/coverage_control
python/coverage_control \
python/scripts \
python/utils
EXCLUDE = doc/cppsrc/torch doc/cppsrc/main/torch
OUTPUT_DIRECTORY = doc/
LAYOUT_FILE = doc/config/DoxygenLayout.xml
Expand All @@ -22,4 +25,4 @@ IMAGE_PATH = doc/graphics
HTML_EXTRA_FILES += doc/graphics/LPAC.gif doc/graphics/coveragecontrol_global.png doc/graphics/learnable_pac.png
FILTER_PATTERNS = "*.md=python doc/bash-filter.py" *.py=doc/py-filter.sh
ALIASES += repo_owner_lower="kumarrobotics"
ALIASES += docker_cr="ghcr.io/kumarrobotics/testdoc"
ALIASES += docker_cr="ghcr.io/kumarrobotics/coveragecontrol"
2 changes: 1 addition & 1 deletion doc/manual/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ The library provides a simulation environment, algorithms, and GNN-based archite
> arXiv preprint arXiv:2401.04855 (2024).

## External Dependencies
## Acknowledgements
- [PyTorch](https://pytorch.org/)
- [PyTorch Geometric](https://pytorch-geometric.readthedocs.io/en/latest/)
- [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page)
Expand Down
38 changes: 37 additions & 1 deletion doc/manual/coverage-control.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
\page coverage-control-problem Problem Statement
\page coverage-control-problem Theoretical Background
\tableofcontents

# Coverage Control Problem
## Introduction
Coverage control is the problem of navigating a robot swarm to collaboratively monitor features or a phenomenon of interest not known _a priori_.
The goal is to provide sensor coverage based on the importance of information at each point in the environment.
Expand Down Expand Up @@ -63,3 +64,38 @@ In such a setting, a coverage control algorithm needs to provide the following b
Designing such decentralized algorithms is challenging and can be intractable for complex systems.
This motivates us to use a learning-based approach to design a decentralized coverage control algorithm.
The \ref lpac with GNN addresses the above challenges and provides a scalable and robust solution to the problem.

------

# LPAC Architecture

## Navigation of Robot Swarms
Navigating a swarm of robots through an environment to achieve a common collaborative goal is a challenging problem, especially when the sensing and communication capabilities of the robots are limited.
These problems require systems with high-fidelity algorithms comprising three key capabilities: perception, action, and communication, which are executed in a feedback loop, i.e., the Perception-Action-Communication (PAC) loop.
To seamlessly scale the deployment of such systems across vast environments with large robot swarms, it is imperative to consider a decentralized system wherein each robot autonomously makes decisions, drawing upon its own observations and information received from neighboring robots.

## The Challenge
Designing a navigation algorithm for a decentralized system is challenging.
The robots perform perception and action independently, while the communication module is the only component that can facilitate robot collaboration.
Under limited communication capabilities, the robots must decide _what_ information to communicate to their neighbors and _how_ to use the received information to take appropriate actions.
The motivation of designing this library is to study the coverage control problem as a canonical problem for the decentralized navigation of robot swarms.
We develop the learnable PAC (LPAC) architecture that can learn to process sensor observations, communicate relevant information, and take appropriate actions.

## Architecture
The learnable Perception-Action-Communication (LPAC) architecture is composed of three different types of neural networks, one for each module of the PAC system.
1. In the perception module, a convolution neural network (CNN) processes localized IDF observations and generates an abstract representation.
2. In the communication module, a GNN performs computation on the output of the perception module and the messages received from neighboring robots.
It generates a fixed-size message to communicate with the neighbors and aggregates the received information to generate a feature vector for the action module of the robot.
3. In the action module, a shallow multilayer perceptron (MLP) predicts the control actions of the robot based on the feature vector generated by the GNN.

\htmlonly
<img class="center" style="width: 80%; margin-left: auto; margin-right: auto;" src="learnable_pac.png"/>
<figcaption>Learnable Perception-Action-Communication (LPAC) architecture:
The three modules are executed on each robot independently, with the GNN in the communication module facilitating collaboration between robots.
</figcaption>
\endhtmlonly

> [LPAC: Learnable Perception-Action-Communication Loops with Applications to Coverage Control.](https://doi.org/10.48550/arXiv.2401.04855)
> Saurav Agarwal, Ramya Muthukrishnan, Walker Gosrich, Vijay Kumar, and Alejandro Ribeiro.
> arXiv preprint arXiv:2401.04855 (2024).
88 changes: 0 additions & 88 deletions doc/manual/installation-from-source.md

This file was deleted.

Loading

0 comments on commit c723015

Please sign in to comment.