NREL / ROSCO

A Reference Open Source Controller for Wind Turbines
https://rosco.readthedocs.io/en/latest/
Apache License 2.0
116 stars 93 forks source link

Lidar-assisted control addition #223

Closed Russell9798 closed 1 year ago

Russell9798 commented 1 year ago

This PR proposes adding Lidar-assisted feedforward pitch control capability within ROSCO and is designed to interface with the accompanying PR for lidar measurement from InflowWind.

Feedforward controls have been verified for the IEA 15MW UMaine floating model.

dzalkind commented 1 year ago

Hi Andrew, thanks for contributing to this PR. We'll need to make a few changes to tidy up the code. Some supporting documentation for the control algorithm is also helpful. Also, we'll want to set up an example so that we can test the functionality. That may require a future version of OpenFAST, which might delay this PR. But overall, it's a nice contribution I would like to support!

dzalkind commented 1 year ago

Hi @Russell9798, thanks for making these updates.

I will follow up with detailed comments, but I have a couple of high-level questions.

Does this require a specific version of OpenFAST? If so, we'll need to wait until that becomes a release.

Would you happen to have a working example that we can use to test this functionality? Ideally, we would test all new features in those examples.

Do you have any documentation describing how this is supposed to work? A paper or readme?

Are you okay with me pushing to your branch to keep you up with the latest develop branch? As a reviewer I have permission.

Best, Dan

P.S. Here are some git commit message best practices.

Russell9798 commented 1 year ago

Hi Dan,

This would require an updated version of OpenFAST to gather Lidar measurements within InflowWind. I have submitted this as a pull request on OpenFAST : https://github.com/OpenFAST/openfast/pull/1464

I have a working example that I can share. What would be the best way to do this.

As for documentation, I have a paper under review which demonstrates the Lidar-assisted control methodology. I'm also currently writing up a paper to demonstrate how it works with the updated OpenFAST and ROSCO versions that I'm proposing.

I'm fine with you pushing to my branch.

Thanks,

Andrew

dzalkind commented 1 year ago

Here are the set of ROSCO examples: https://github.com/NREL/ROSCO/tree/main/Examples

Russell9798 commented 1 year ago

Hi @dzalkind, apologies for the silence on this lately. I have been waiting for approval and merging of my pull request to OpenFAST (https://github.com/OpenFAST/openfast/pull/1464) which came a couple of weeks ago. I'm now waiting for OpenFAST 3.5 to be released to allow for testing of these changes within the examples you shared.

Thanks,

Andrew

Russell9798 commented 1 year ago

Hi @dzalkind, I am attempting to run the ROSCO examples you shared following the merging of my OpenFAST pull request into v3.5 (https://github.com/OpenFAST/openfast/pull/1464). However, I'm running into some errors with running the examples. Please could you assist me on this?

Thank you,

Andrew

dzalkind commented 1 year ago

We have some reservations about supporting a specific lidar control scheme long term. It’s my understanding that the IEA Task 32 has a few methods they are sharing and supporting as dynamic libraries that can be called by ROSCO.

ROSCO could support any of these methods by using its ability to call external libraries. More information can be found in these locations:

Ideally, ROSCO would send information from OpenFAST to the external lidar control library, where the lidar processing and feedforward calculations would occur, then that library would pass it back to ROSCO. I would add a simple control mode in ROSCO that uses that information.

I think this flexible software arrangement is best for ROSCO long term, while specific lidar control schemes could be hosted elsewhere.