Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FFT Waves: Update README and CI workflow. #103

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 0 additions & 1 deletion .github/workflows/ubuntu-focal-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ jobs:
uses: actions/checkout@v3
with:
path: src/asv_wave_sim
ref: feature/gazebo11

- name: Install Build Essentials
run: |
Expand Down
32 changes: 8 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
# ASV Wave Simulator
# Wave Sim

[![Ubuntu Focal CI](https://github.com/srmainwaring/asv_wave_sim/actions/workflows/ubuntu-focal-ci.yml/badge.svg?branch=feature%2Fgazebo11)](https://github.com/srmainwaring/asv_wave_sim/actions/workflows/ubuntu-focal-ci.yml)
[![Ubuntu Focal CI](https://github.com/srmainwaring/asv_wave_sim/actions/workflows/ubuntu-focal-ci.yml/badge.svg)](https://github.com/srmainwaring/asv_wave_sim/actions/workflows/ubuntu-focal-ci.yml)

This package contains plugins that support the simulation of waves and surface vessels in Gazebo.

![Wave Simulation](https://github.com/srmainwaring/asv_wave_sim/wiki/images/ocean_waves_rs750_fft.jpg)

## Notes

This is a prototype branch `feature/fft_waves` which contains an updated wave engine
that uses FFTs to generate the wavefield physics and visuals.
This branch is for legacy support and is now maintenance only. The plugins target Gazebo11 / ROS Noetic running on Ubuntu 20.04 (Focal).

There are changes in the way that the wave parameters need to be set, and it may
not be possible to avoid breaking the existing interface used to specify trochoidal waves.
This is still work in progress, and the current version has a fixed set of wave parameters.
It includes an in-development wave engine that uses FFTs to generate the wavefield physics and visuals. The current version of the FFT wave engine has a fixed set of wave parameters.

The library has additional dependencies on two FFT libraries:

Expand All @@ -26,25 +23,12 @@ These can be installed on linux with:
sudo apt-get update && apt-get install fftw clfft
```

And on macOS with:

```bash
brew fftw3 libclfft-dev libfftw3-dev
```

Aside from adding the option to use a FFT generated wavefield, the major change is
in the way that the visuals are generated. Previously the wave displacements for visuals
were generated in the shader code, the visual plugin was used to update shader parameters for wave amplitudes and frequency. Now the entire mesh for the visual is dynamically
updated in the the library then pushed into the rendering engine. This means there is no
need to maintain various sized meshes in the media files, however it does require working
around Gazebos requirement for static meshes and there is a custom Visual that implements
this. The OpenCL FFT library allows this work to be offloaded to the GPU when configured.
Aside from adding the option to use a FFT generated wavefield, the major change is in the way that the visuals are generated. Previously the wave displacements for visuals were generated in the shader code, the visual plugin was used to update shader parameters for wave amplitudes and frequency. Now the entire mesh for the visual is dynamically updated in the the library then pushed into the rendering engine. This means there is no need to maintain various sized meshes in the media files, however it does require working around Gazebos requirement for static meshes and there is a custom Visual that implements this. The OpenCL FFT library allows this work to be offloaded to the GPU when configured.

## Dependencies

You will need a working installation of ROS and Gazebo in order to use this package.


## Ubuntu

- Ubuntu 20.04 Focal
Expand All @@ -64,7 +48,7 @@ sudo apt-get install libcgal-dev
Source your ROS installation:

```bash
source /opt/ros/melodic/setup.bash
source /opt/ros/noetic/setup.bash
```

Create a catkin workspace:
Expand All @@ -83,11 +67,11 @@ catkin config --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo

### Clone and build the package

Clone the `asv_wave_sim` repository:
Clone the `feature/gazebo11-fft-waves` branch of the `asv_wave_sim` repository:

```bash
cd src
git clone https://github.com/srmainwaring/asv_wave_sim.git -b feature/gazebo11
git clone https://github.com/srmainwaring/asv_wave_sim.git -b feature/gazebo11-fft-waves
```

Compile the packages:
Expand Down