Skip to content

Commit

Permalink
Update Documentation (#282)
Browse files Browse the repository at this point in the history
* Added default doxygen file

* Updated Doxyfile; added DoxygenLayout.xml

* Added doxygen header for code documentation

* Updated code documentation

* Removed README content

* Moved docs location

* Added .gitignore

* Disable group graphs

* Added custom CSS themes from doxygen-awesome

* Commented setting of selected nav tree item to primary color

* Generated default header from style sheet

* Added icon to documentation

* Revised doxygen page layout

* Added workflow for building documentation

* Updated README to reference documentation website

* Disable copy and reference of source code
  • Loading branch information
marip8 authored Jan 21, 2025
1 parent 368aed5 commit 398087e
Show file tree
Hide file tree
Showing 68 changed files with 6,349 additions and 142 deletions.
54 changes: 54 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Build Documentation

on:
push:
branches:
- master
- dev
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Run Doxygen
working-directory: docs
run: |
sudo apt update
sudo apt install -y -qq doxygen graphviz
doxygen Doxyfile
touch build/html/.nojekyll
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/build/html

deploy:
needs: build
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docs/build
62 changes: 2 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,64 +12,6 @@ Lint (Clang-Format) | [![Build Status](https://github.com/ros-industrial/noethe

## Description
This repository provides software for performing tool path planning on arbitrary mesh surfaces.
We define tool path planning as the generation of an ordered set of waypoints for a robotic process (e.g., painting, sanding, inspection, routing, etc.) based on some input geometry.
The idea is that the tool of the robot should traverse through this set of waypoints in order to accomplish the desired task.

We think of the tool path planning process as a pipeline consisting of 3 steps:
1. Mesh modification
- Often input geometry (specifically meshes) does not actually reflect the surface from which we want to generate tool paths.
Usually we want to process the mesh in various ways, such as smoothing, segmentation, or primitive fitting and projection.
1. Tool path planning
- This is the generation of waypoints directly from the modified mesh(es).
Planners generally create waypoints directly on the surface of the input modified mesh(es).
1. Tool path modification
- Many robot processes require application specific changes or additions to a tool path.
These include operations like order reorganization, pose offsets, approaches/departures, etc.
Instead of building these changes directly into customized tool path planners, we implement them as a separate step in the pipeline.

## GUI
This project provides a GUI application for use of the provided tool path planning utilities.
Load an arbitrary mesh, configure your desired tool path planning pipeline, and experiment with different types of planners and modifiers.
The generated tool path can then be saved to a YAML file for use in other applications.

![GUI](docs/gui.png)

## Architecture

### Structure
![Architecture](docs/architecture.png)

### Interfaces
This repository provides three key abstract interfaces to facilitate the tool path planning pipeline:
- **[`MeshModifier`](noether_tpp/include/noether_tpp/core/mesh_modifier.h)**
- Takes an mesh and returns a vector of modified meshes
- Implementation examples include primitive fitting and projection, region of interest selection, smoothing, hole filling, etc.
- **[`ToolPathPlanner`](noether_tpp/include/noether_tpp/core/tool_path_planner.h)**
- Takes an input mesh and produces a tool path
- This repository also provides two sub-interfaces for planners with more specific behavior:
- [`RasterPlanner`](noether_tpp/include/noether_tpp/tool_path_planners/raster/raster_planner.h)
- [`EdgePlanner`](noether_tpp/include/noether_tpp/tool_path_planners/edge/edge_planner.h)
- Implementation examples include plane slice raster planner, CAM style planner, mesh half-edge planner
- **[`ToolPathModifier`](noether_tpp/include/noether_tpp/core/tool_path_modifier.h)**
- Takes an tool path and produces a modified tool path
- Implementation examples include order reorganization, orientation smoothing, approach/departure addition, pose offset, etc.

See the [`noether_tpp` documentation](noether_tpp/README.md) for more details on the architecture of the package.

### Customization
Custom behavior can be added by providing a class that overrides one of the interface classes.
See the implementations in the [`mesh_modifiers`](noether_tpp/include/noether_tpp/mesh_modifiers), [`tool_path_planners`](noether_tpp/include/noether_tpp/tool_path_planners), and [`tool_path_modifiers`](noether_tpp/include/noether_tpp/tool_path_modifiers) for reference.

See the [`noether_gui` documentation](noether_gui/README.md) for more details on how to a GUI plugin for a custom implementation of one of the interfaces.

## Build
Nominally, this project is ROS-independent, but it is convenient to use the ROS dependency management and build tools to build the repository.

Clone the repository into a workspace, download the dependencies, and build the workspace.

```commandLine
cd <ws>
vcs import src < dependencies.repos
rosdep install --from-paths src -iry
<colcon/catkin> build
```
## Documentation
See the [documentation](ros-industrial.github.io/noether) for more information on the capabilities and usage of this repository.
Loading

0 comments on commit 398087e

Please sign in to comment.