Skip to content

Commit

Permalink
Updated to current state of system
Browse files Browse the repository at this point in the history
  • Loading branch information
evan-palmer committed May 13, 2024
1 parent d3b340c commit 0cc6ebd
Show file tree
Hide file tree
Showing 15 changed files with 89 additions and 577 deletions.
22 changes: 11 additions & 11 deletions docs/docs/contributing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@ sidebar_position: 5
title: Contributing
---

Thank you for considering contributing to Blue! Here we provide a set of
Thank you for considering contributing to Angler! Here we provide a set of
guidelines for contributing to the project.

Contributions include but are not restricted to:

* Contributing to the Blue codebase
* Writing documentation
* Reporting bugs
* Answering [discussion questions](https://github.com/Robotic-Decision-Making-Lab/blue/discussions)
- Contributing to the Angler codebase
- Writing documentation
- Reporting bugs
- Answering [discussion questions](https://github.com/Robotic-Decision-Making-Lab/angler/discussions)

## Workflow

* Send all pull requests to the `main` branch (unless otherwise requested).
* Limit each pull request to resolving a single issue
* It is your responsibility to ensure that your development branch is
- Send all pull requests to the `main` branch (unless otherwise requested).
- Limit each pull request to resolving a single issue
- It is your responsibility to ensure that your development branch is
up-to-date with the main branch. You may either rebase on main or merge main
into your development branch.
* Always test and document your code.
* Ensure that your changes pass our CI! If you encounter issues with this,
- Always test and document your code.
- Ensure that your changes pass our CI! If you encounter issues with this,
please ask for help.

## Support

If you have questions regarding your contribution, please create a new
discussion post on the [Discussions](https://github.com/Robotic-Decision-Making-Lab/blue/discussions)
discussion post on the [Discussions](https://github.com/Robotic-Decision-Making-Lab/angler/discussions)
board.
51 changes: 16 additions & 35 deletions docs/docs/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,68 +4,49 @@ sidebar_position: 3

# Installation

Blue is currently supported on Linux and is available for the ROS distributions
Humble and Iron. Blue can be installed from source or using one of
the provided Docker images. If you plan to use Blue for simulation and have
a system with limited compute power, we recommend installing Blue from source.
For all other cases, we recommend installing Blue using Docker.
Angler is currently supported on Linux and is available for the ROS distributions
Humble and Iron. Angler can be installed from source or using one of
the provided Docker images. If you plan to use Angler for simulation and have
a system with limited compute power, we recommend installing Angler from source.
For all other cases, we recommend installing Angler using Docker.

## Docker installation

Prior to installing Blue using Docker, make sure that Docker is installed on
Prior to installing Angler using Docker, make sure that Docker is installed on
your system and that you are logged into the GitHub Container Registry. If
Docker is not installed, you may follow the instructions provided
[here](https://docs.docker.com/get-docker/). If you are not already logged into
the GitHub Container Registry, please do so by following the instructions
provided [here](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry).
Once you have successfully installed Docker and logged into the GitHub Container
Registry, you can install Blue by pulling one of the provided [Docker
images](https://github.com/Robotic-Decision-Making-Lab/blue/pkgs/container/blue).
Registry, you can install Angler by pulling one of the provided [Docker
images](https://github.com/Robotic-Decision-Making-Lab/angler/pkgs/container/angler).
A complete list of the provided images is documented below (where `*` should be
replaced with the desired ROS distribution, e.g., `humble-robot`):

| Supported ROS Versions | Image Tag | Build Architectures | Description |
| ---------------------- | --------- | ------------------- | ----------- |
| Humble, Iron | *-robot | `amd64`, `arm64` | A bare-bones image that includes all dependencies without simulation or visualization features. This can be used to deploy Blue to hardware. |
| Humble, Iron | *-desktop | `amd64` | Image that includes all dependencies, including simulation and visualization features. This can be used for development, testing, and top-side deployment. |
| Humble, Iron | *-desktop-nvidia | `amd64` | Extension of the `*-desktop` image that provides support for NVIDIA GPU drivers. This image is *strongly* recommended for systems that have an NVIDIA GPU, and requires the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html). |

If you plan to use either the `*-desktop` or `*-desktop-nvidia` images, you may
use the provided [Docker Compose scripts](https://github.com/Robotic-Decision-Making-Lab/blue/tree/main/.docker/compose)
to install and run Blue. For instance, to pull and run the `iron-desktop` image,
first run the command:

```bash
wget https://raw.githubusercontent.com/Robotic-Decision-Making-Lab/blue/iron/.docker/compose/nouveau-desktop.yaml && \
docker compose -f nouveau-desktop.yaml up
```

then in a new tab, enter the container by running

```bash
docker exec -it <image-name> /bin/bash
```

where `<image-name>` should be replaced with the name of the container that was
created.
| Supported ROS Versions | Image Tag | Build Architectures | Description |
| ---------------------- | ----------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Humble, Iron | \*-robot | `amd64`, `arm64` | A bare-bones image that includes all dependencies without simulation or visualization features. This can be used to deploy Angler to hardware. |
| Humble, Iron | \*-desktop | `amd64` | Image that includes all dependencies, including simulation and visualization features. This can be used for development, testing, and top-side deployment. |
| Humble, Iron | \*-desktop-nvidia | `amd64` | Extension of the `*-desktop` image that provides support for NVIDIA GPU drivers. This image is _strongly_ recommended for systems that have an NVIDIA GPU, and requires the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html). |

### Development container

We recommend using one of the provided Visual Studio Code
[development containers](https://github.com/Robotic-Decision-Making-Lab/blue/tree/main/.devcontainer)
[development containers](https://github.com/Robotic-Decision-Making-Lab/angler/tree/main/.devcontainer)
to implement and test your own packages. These containers use the `*-desktop`
and `*-desktop-nvidia` images as base images. To use the development containers,
first verify that you can run Visual Studio Code inside a Docker container by
following the tutorial provided [here](https://code.visualstudio.com/docs/devcontainers/tutorial).
Once you have successfully verified that you can run Visual Studio Code inside a
Docker container, open the Blue repository in Visual Studio Code and select the option
Docker container, open the Angler repository in Visual Studio Code and select the option
to reopen the folder inside a container when prompted. This will automatically
build the development container and install all necessary dependencies. Once the
container is built, you can start developing your own packages!

## Source installation

We recommend using the project [Dockerfile](https://github.com/Robotic-Decision-Making-Lab/blue/blob/main/.docker/Dockerfile)
We recommend using the project [Dockerfile](https://github.com/Robotic-Decision-Making-Lab/angler/blob/main/.docker/Dockerfile)
(beginning at the `robot` stage) for complete source installation details. This
installation may be customized according to your specific needs. For example,
if you do not plan to use the simulation environment, you may forego installing
Expand Down
106 changes: 39 additions & 67 deletions docs/docs/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,96 +2,68 @@
sidebar_position: 2
---

import Vehicle from "@site/src/components/Vehicle";
import BlueROV2 from "@site/static/img/vehicles/bluerov2.png";
import BlueROV2Heavy from "@site/static/img/vehicles/bluerov2_heavy.png";
import BlueROV2HeavyReach from "@site/static/img/vehicles/bluerov2_heavy_reach.png";
import UVMS from "@site/src/components/UVMS";
import BlueROV2HeavyAlpha from "@site/static/img/vehicles/bluerov2_heavy_alpha.png";

# Overview

Blue provides a set of tools implemented using ROS 2 that help you test and
deploy software for underwater vehicles. This is accomplished through the
Angler is an autonomy framework implemented using ROS 2 that is designed to
support development, testing, and sim-to-real deployment of lightweight
underwater vehicle manipulator systems (UVMS). This is accomplished through the
following features:

1. **Simulation using Gazebo**: Vehicle models and configurations have been
created for Gazebo. We have found that Gazebo provides a good representation
of how the vehicle will behave in the real world.
2. **CI/CD pipelines**: Blue implements CI/CD pipelines to help you deploy your
1. **Custom whole-body controllers**: Angler supports the development and
integration of custom whole-body UVMS controllers using [angler_control](https://github.com/Robotic-Decision-Making-Lab/angler/tree/main/angler_control).
2. **High-level autonomy with behavior trees**: High-level autonomy capabilities
needed to perform complex intervention tasks are supported using behavior
trees. Angler implements several primitive behaviors from which more complex
intervention behaviors can be constructed using [angler_behaviors](https://github.com/Robotic-Decision-Making-Lab/angler/tree/main/angler_behaviors).
3. **Localization and vehicle control**: Angler supports system localization
and vehicle-specific integration using its sibling project, [Blue](https://robotic-decision-making-lab.github.io/blue/).
4. **Simulation using Gazebo**: Vehicle models and configurations have been
created for Gazebo.
5. **CI/CD pipelines**: Angler implements CI/CD pipelines to help you deploy your
software in the same environment that you performed development and testing
in. Docker images are built for the `amd64` and `arm64` CPU architectures so
that you can easily deploy your software to a variety of hardware platforms.
3. **Development environment**: Blue provides a development environment that
includes all of the tools you need to develop software for underwater
vehicles, such as ROS 2, Gazebo, linters, and formatters. This helps you
avoid spending resources setting up your development environment and focus on
writing your robotics algorithms 😀
4. **Custom control and localization algorithms**: Blue supports custom
controllers implemented using [auv_controllers](https://github.com/Robotic-Decision-Making-Lab/auv_controllers)
and localization algorithms implemented using [marine_localization](https://github.com/Robotic-Decision-Making-Lab/marine_localization).
6. **Development environment**: Angler provides a development environment that
includes all of the tools you need to develop software for UVMS, such as
ROS 2, Gazebo, linters, and formatters. This helps you avoid spending
resources setting up your development environment and focus on writing your
robotics algorithms 😀

## Recommended workflow

Blue is designed to be flexible and modular, enabling you to make changes
Angler is designed to be flexible and modular, enabling you to make changes
according to the needs of your project. However, our commitment to flexibility
does not compromise our effort to ensure that the provided system caters to
a wide range of use cases. With this in mind, we recommend the following
workflow for using Blue:
workflow for using Angler:

```mermaid
graph TD
A(Making your </br> own changes?) -- Yes --> B(Create a fork of the </br> repository)
A -- No --> C(Install Blue)
A -- No --> C(Install Angler)
B --> D(Update CI/CD pipelines </br> to point to your fork)
D --> E(Install Blue from your fork </br> and add your changes)
D --> E(Install Angler from your fork </br> and add your changes)
E --> F(Test your system </br> in simulation)
C --> F
F --> G(Deploy Blue to hardware!)
F --> G(Deploy Angler to hardware!)
```

## Supported vehicles
## Supported Systems

Several vehicle models have been implemented and tested with Blue in
**simulation** and on **hardware**. These vehicles include:
Angler has been integrated and tested on the following systems:

<div className="vehicles">
<Vehicle name="BlueROV2" img={BlueROV2}>
The BlueROV2 is a popular lightweight underwater vehicle made by [Blue
Robotics](https://bluerobotics.com/) that is used for hobby, research, and
commercial applications.
</Vehicle>
<Vehicle name="BlueROV2 Heavy" img={BlueROV2Heavy}>
The BlueROV2 Heavy is an extension to the BlueROV2 made by [Blue
Robotics](https://bluerobotics.com/) that includes additional thrusters and
a larger frame to improve the vehicle's manueverability.
</Vehicle>
<Vehicle name="BlueROV2 Heavy Reach" img={BlueROV2HeavyReach}>
The BlueROV2 Heavy Reach modifies the BlueROV2 Heavy by moving the thrusters
located on the upper chassis to the lower chassis. This was proposed by
[Reach Robotics](https://reachrobotics.com/) to enable integration of a
small manipulator for intervention tasks.
</Vehicle>
</div>

## Supported manipulators

Several vehicle models have been implemented and tested with Blue in
**simulation** and on **hardware**. These vehicles include:

<div className="vehicles">
<Vehicle name="BlueROV2" img={BlueROV2}>
The BlueROV2 is a popular lightweight underwater vehicle made by [Blue
Robotics](https://bluerobotics.com/) that is used for hobby, research, and
commercial applications.
</Vehicle>
<Vehicle name="BlueROV2 Heavy" img={BlueROV2Heavy}>
The BlueROV2 Heavy is an extension to the BlueROV2 made by [Blue
Robotics](https://bluerobotics.com/) that includes additional thrusters and
a larger frame to improve the vehicle's manueverability.
</Vehicle>
<Vehicle name="BlueROV2 Heavy Reach" img={BlueROV2HeavyReach}>
The BlueROV2 Heavy Reach modifies the BlueROV2 Heavy by moving the thrusters
located on the upper chassis to the lower chassis. This was proposed by
[Reach Robotics](https://reachrobotics.com/) to enable integration of a
small manipulator for intervention tasks.
</Vehicle>
<div className="platforms">
<UVMS name="BlueROV2 Heavy Alpha" img={BlueROV2HeavyAlpha}>
The BlueROV2 Heavy Alpha modifies the [Blue
Robotics](https://bluerobotics.com/) BlueROV2 Heavy by moving the thrusters
located on the upper chassis to the lower chassis. This modification
facilitates the integration of a [Reach
Robotics](https://reachrobotics.com/) Reach Alpha 5 manipulator, a popular
lightweight 5 degree-of-freedom manipulator. This configuration was first
proposed by [Reach Robotics](https://reachrobotics.com/) to enable
intervention tasks.
</UVMS>
</div>
4 changes: 0 additions & 4 deletions docs/docs/tutorials/_category_.json

This file was deleted.

88 changes: 0 additions & 88 deletions docs/docs/tutorials/control.mdx

This file was deleted.

Loading

0 comments on commit 0cc6ebd

Please sign in to comment.