How to Contribute

If you want to contribute to the project, i.e. by designing new controllers, you are very welcome to do so.

If you implement a controller please consider the following guidelines:

  1. Create a folder with a unique and descriptive name for your controller in software/python/controllers.

  2. Make sure your controller inherits from the AbstractController class.

  3. Create a README.md file in your controller directory in which you explain how the controller works and how it can be used.

  4. Create a requirements.txt file where you list required packages that are not listed in the main requirements file of the project.

If you implement an offline trajectory optimization or reinforcement learning algorithm follow these guidelines:

  1. Create a folder with a unique and descriptive name for your controller in software/python/simple_pendulum/trajectory_optimization.

  2. Create a README.md file in your controller directory in which you explain how the method works and how it can be used.

  3. Create a requirements.txt file where you list required packages that are not listed in the main requirements file of the project.

  4. Either

    1. write a controller class which makes it possible to execute your policy in simulation and on the real system. Make sure it inherits from the AbstractController class.

    2. export your trajectory to a csv file and save it at data/trajectories. The columns of the csv file should be: time, position, velocity, control_inputs. The first line is reserved for a header. In this format the csv file can be simulated or applied to the real system with the open loop controller class

If you want to contribute software in another programming language besides python, create a new top level directory named after the programming language of your choice (eg, ./c++) and try to follow the structure of the Python code as closely as possible, that will aid us when looking through it.

If you discover bugs, have feature requests, or want to improve the documentation, please open an issue at the issue tracker of the project.

If you want to contribute code, please open a pull request via GitHub by forking the project, committing changes to your fork, and then opening a pull request from your forked branch to the main branch of gmr.