Skip to content

Commit

Permalink
FFT Waves: Update README and CI workflow. (#103)
Browse files Browse the repository at this point in the history
* Gazebo11: Update README and CI workflow.

- Update README
- Update status badge.
- Remove branch restriction from CI workflow.

* Gazebo11: Migrate from Gazebo9 to Gazebo11.

- Update README: correct branch details.

Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
  • Loading branch information
srmainwaring authored Dec 6, 2022
1 parent 489c564 commit dc279b0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 25 deletions.
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

0 comments on commit dc279b0

Please sign in to comment.