Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b9a5065
docs: add documentation template
nikhiljha May 16, 2022
e0c459b
doc: add description to docs website
nikhiljha May 16, 2022
7b37372
chore: mdlint
nikhiljha May 16, 2022
b0cc559
doc: remove forced base url
nikhiljha May 16, 2022
728a607
doc: fix line wrap
nikhiljha May 16, 2022
aa83c14
Rename about.markdown to about.md
May 17, 2022
0166895
Update about.md
May 17, 2022
9c77eae
Added example apps
jeffi May 17, 2022
e1ea6e1
Added links to example images.
May 17, 2022
f1587c2
Create cloud_robotics.md
May 18, 2022
f11c5c0
Create getting_started.md
May 18, 2022
7f26eec
add cli docs
mjd3 May 18, 2022
359c29c
nav order, fix some links and typos
mjd3 May 18, 2022
38a24cb
Update about.md
SimeonOA May 18, 2022
05ddbad
Update cloud_robotics.md
SimeonOA May 18, 2022
3785d7e
add redirect from home to about
mjd3 May 18, 2022
62effb6
Create quickstart_instructions.md
SimeonOA May 18, 2022
d93dc76
Formatting Corrections
SimeonOA May 18, 2022
5e3cc74
Update quickstart_instructions.md
SimeonOA May 18, 2022
ea6c10c
Update quickstart_instructions.md
SimeonOA May 18, 2022
7228903
Update quickstart_instructions.md
SimeonOA May 18, 2022
56fbb2c
Update quickstart_instructions.md
SimeonOA May 18, 2022
8cf2db9
Formatting Updates
SimeonOA May 18, 2022
79e8fd0
Update quickstart_instructions.md
SimeonOA May 18, 2022
205c78e
Added launch configuration documentation
KDharmarajanDev May 20, 2022
54114ee
Added H.264 and video compression documentation
KDharmarajanDev May 20, 2022
8f74ed7
Vidoe links, CLI text, minor changes
SimeonOA May 22, 2022
d726f75
Set Youtube Videos to Embed
SimeonOA Jun 17, 2022
f0534c2
Embed Docker and Native Install Videos
SimeonOA Jun 27, 2022
93e1b99
Update quickstart_instructions.md
SimeonOA Jun 27, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 26 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

[`FogROS2`](https://github.com/BerkeleyAutomation/FogROS2) extends ROS 2 for cloud deployment of computational graphs in a security-conscious manner. It allows researchers to easily and securely deploy ROS abstractions across cloud providers with minimal effort, thus gaining access to additional computing substrates including CPU cores, GPUs, FPGAs, or TPUs, as well as pre-deployed software made available by other researchers. To do so, `FogROS2` extends the ROS 2 launch system, introducing additional syntax to allow roboticists to specify at launch time which components of their architecture will be deployed to the cloud and which components will be deployed on the edge.


- [FogROS2](#fogros2)
- [Install](#install)
- [Quickstart](#quickstart)
Expand All @@ -16,13 +15,18 @@
- [Setting Up Automatic Image Transport](#setting-up-automatic-image-transport)
- [Command Line Interface](#command-line-interface)
- [Some Common Issues](#some-common-issues)
- [Running Examples:](#running-examples)
- [Running Examples](#running-examples)

## Install

### Quickstart

If you are new to ROS and Ubuntu, and want to install FogROS 2 (and ROS 2) and its requisites from scratch, follow instructions [here](https://github.com/BerkeleyAutomation/FogROS2/blob/humble/QUICKSTART.md).

### Docker (Recommended)

Alternatively, you can simplify reproduction using an OS virtualization environment with Docker:

```bash
git clone -b humble https://github.com/BerkeleyAutomation/FogROS2
cd FogROS2
Expand All @@ -36,22 +40,26 @@ aws configure
#Build Docker Image
docker build -t fogros2 .
```

By default, this command will build a docker image for ROS Rolling and Ubuntu 22.04 (jammy). These defaults can be changed using the `--build-arg` flag (e.g., `docker build -t fogros2:focal-humble . --build-arg UBUNTU_DISTRO=focal --build-arg ROS_DISTRO=humble` will build a ROS Humble image with Ubuntu 20.04 (focal)).
*Note: the Dockerfile is cooked for x86_64. If you're using a workstation with an Arm-based architecture (e.g. an M1), build the container with the `docker build --platform linux/amd64 -t fogros2 .`*.

### Natively

`FogROS2` is actually a ROS meta-package, so you can just fetch it in your workspace, build it, source the workspace as an overlay and start using its capabilities.

#### Install Dependencies

ROS 2 dependencies:
```

```bash
# If using Ubuntu 22.04
sudo apt install ros-rolling-rmw-cyclonedds-cpp
```

FogROS 2 dependencies:
```

```bash
sudo apt install python3-pip wireguard unzip
sudo pip3 install wgconfig boto3 paramiko scp

Expand All @@ -72,7 +80,6 @@ colcon build # re-build the workspace
source install/setup.bash
```


## Launch ROS 2 computational graphs in the cloud

### Docker (Recommended)
Expand All @@ -88,7 +95,9 @@ ros2 launch fogros2_examples talker.aws.launch.py
(*Note: the Dockerfile is cooked for x86_64. If you're using a workstation with an Arm-based architecture (e.g. an M1), run the container with the `docker run -it --platform linux/amd64 --rm --net=host --cap-add=NET_ADMIN fogros2`*.)

### Native

Note: These commands must be run from the root of your ROS workspace.

```bash
source /opt/ros/<your-ros2-distro>/setup.bash
source install/setup.bash
Expand All @@ -99,25 +108,27 @@ ros2 launch fogros2_examples talker.aws.launch.py
```

## Run your own robotics applications

If using, for example, Docker take the following steps:

Step 1: Mount your robotics application to docker's folder.
For example,
```

```bash
docker run -it --rm \
--net=host --cap-add=NET_ADMIN \
....
-v FOLDER_IN_YOUR_LOCAL_DIR:/home/root/fog_ws/src/YOUR_PKG_NAME \
...
keplerc/ros2:latest /bin/bash
```
You may also `git clone` your development repo to the docker container instead.

You may also `git clone` your development repo to the docker container instead.

Step 2: Write the FogROS2 launch file. Examples of launch files can be found in the talker*.launch.py [here](https://github.com/BerkeleyAutomation/FogROS2/tree/humble/fogros2_examples/launch).


## Setting Up Automatic Image Transport

Step 1: Identify all topics that need to use a compressed transport.

Step 2: In a `fogros2.CloudNode`, add the parameter `stream_topics=[]`, where `stream_topics` is a list of tuples
Expand All @@ -138,6 +149,7 @@ Adding the above argument to a `fogros2.CloudNode` makes the topic `/camera/imag
Please note that all cloud nodes that are expecting raw images will be remapped to `TOPIC_NAME/cloud` to remove any topic naming conflicts. (TODO: Automate remapping)

## Command Line Interface

We currently support the following CLI commands for easier debugging and development.

```bash
Expand All @@ -155,9 +167,11 @@ ros2 fog delete all
```

## Some Common Issues
1. Warning: _2 packages has stderr outputs: fogros2 fogros2_examples_ after running colcon build. This warning occurs in Ubuntu 22.04 (jammy) builds, but does not affect functionality. See https://github.com/BerkeleyAutomation/FogROS2/issues/45. Your installation should still work.
2. _[WARN] [1652044293.921367226] [fogros2.scp]: [Errno None] Unable to connect to port 22 on xx.xx.xx.xxx, retrying..._ . This warning occurs when AWS has not yet started the instance. This message should eventually be replaced by _SCP Connected!_ once the instance is started.
3. _WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behavior with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv_. This warning is often seen when installing packages on the cloud instance, but can be ignored.

## Running Examples:
1. Warning: *2 packages has stderr outputs: fogros2 fogros2_examples* after running colcon build. This warning occurs in Ubuntu 22.04 (jammy) builds, but does not affect functionality. See <https://github.com/BerkeleyAutomation/FogROS2/issues/45>. Your installation should still work.
2. *[WARN] [1652044293.921367226] [fogros2.scp]: [Errno None] Unable to connect to port 22 on xx.xx.xx.xxx, retrying...* . This warning occurs when AWS has not yet started the instance. This message should eventually be replaced by *SCP Connected!* once the instance is started.
3. *WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behavior with the system package manager. It is recommended to use a virtual environment instead: <https://pip.pypa.io/warnings/venv>*. This warning is often seen when installing packages on the cloud instance, but can be ignored.

## Running Examples

We have used FogROS for 3 example use-cases (motion planning, grasp planning, and SLAM map building). Please see our [examples repo](https://github.com/BerkeleyAutomation/fogros2-examples) for these and how to run them.
5 changes: 5 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor
25 changes: 25 additions & 0 deletions docs/404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
permalink: /404.html
layout: default
---

<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>

<div class="container">
<h1>404</h1>

<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
</div>
35 changes: 35 additions & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
# gem "jekyll", "~> 4.2.2"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
end

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", "~> 1.2"
gem "tzinfo-data"
end

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]

gem "webrick", "~> 1.7"
Loading