Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wil3/gymfc
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.1.0
Choose a base ref
...
head repository: wil3/gymfc
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref

Commits on Jul 20, 2018

  1. add comment

    wil3 committed Jul 20, 2018
    Copy the full SHA
    9f68b58 View commit details

Commits on Aug 22, 2018

  1. Copy the full SHA
    2cb7ee2 View commit details
  2. Remove pygazebo dependency

    wil3 committed Aug 22, 2018
    Copy the full SHA
    8bb2c3c View commit details
  3. Update class to allow reset to be sent to the plugin, thereby replaci…

    …ng reset functionality of pygazebo
    wil3 committed Aug 22, 2018
    Copy the full SHA
    d3e08f9 View commit details
  4. Update class function definitions to pass the reset and clean up how …

    …exception handling occurs which will happen if Gazebo hhasnt been started yet, a connection refuse will occur
    wil3 committed Aug 22, 2018
    Copy the full SHA
    a9e3708 View commit details
  5. Implement connection timeout

    wil3 committed Aug 22, 2018
    Copy the full SHA
    b7b8d04 View commit details
  6. Copy the full SHA
    b991df9 View commit details
  7. Copy the full SHA
    028c094 View commit details
  8. Add reset flag

    wil3 committed Aug 22, 2018
    Copy the full SHA
    a6c4f17 View commit details
  9. Copy the full SHA
    3e72dfa View commit details
  10. Copy the full SHA
    6011936 View commit details

Commits on Aug 23, 2018

  1. Copy the full SHA
    670486b View commit details
  2. Update compiled plugin

    wil3 committed Aug 23, 2018
    Copy the full SHA
    130873f View commit details
  3. Pass reset parameter along

    wil3 committed Aug 23, 2018
    Copy the full SHA
    19ac4ab View commit details
  4. Asserts still being raised, maybe a timing issue with multiple gzseve…

    …r instances. Provide additional error checking
    wil3 committed Aug 23, 2018
    Copy the full SHA
    68323ba View commit details

Commits on Aug 28, 2018

  1. add additional debugging

    wil3 committed Aug 28, 2018
    Copy the full SHA
    5019f95 View commit details

Commits on Aug 30, 2018

  1. Copy the full SHA
    4fa8586 View commit details

Commits on Sep 5, 2018

  1. Copy the full SHA
    7985473 View commit details

Commits on Oct 2, 2018

  1. Copy the full SHA
    ac68914 View commit details

Commits on Oct 19, 2018

  1. Copy the full SHA
    8606e88 View commit details
  2. Clean up code, add post stats

    wil3 committed Oct 19, 2018
    Copy the full SHA
    205bc13 View commit details
  3. Copy the full SHA
    afaa2c5 View commit details
  4. Copy the full SHA
    d12cf9a View commit details

Commits on Nov 28, 2018

  1. Copy the full SHA
    7ad4f23 View commit details
  2. Copy the full SHA
    204dd80 View commit details
  3. Remove hardeded Gazebo paths. Setup file is now passed in when enviro…

    …nment is registered
    wil3 committed Nov 28, 2018
    Copy the full SHA
    3766922 View commit details
  4. Removing unused function

    wil3 committed Nov 28, 2018
    Copy the full SHA
    20bffb3 View commit details
  5. Adding motor mappings to be configured, these are used for sending pw…

    …m values to the aircraft and also for obtaining the ESC telementry
    wil3 committed Nov 28, 2018
    Copy the full SHA
    b3860ef View commit details

Commits on Dec 5, 2018

  1. Moving configurations from environment registration to a file so the …

    …user has more flexability in chaning these parameters
    wil3 committed Dec 5, 2018
    Copy the full SHA
    3edc750 View commit details
  2. Copy the full SHA
    0e46413 View commit details
  3. Copy the full SHA
    948e0a1 View commit details
  4. Copy the full SHA
    8fb0c1d View commit details
  5. Copy the full SHA
    7d2ad37 View commit details
  6. Update how to run example

    wil3 committed Dec 5, 2018
    Copy the full SHA
    e073584 View commit details
  7. Copy the full SHA
    54f3071 View commit details
  8. Small edits

    wil3 committed Dec 5, 2018
    Copy the full SHA
    e7a2aec View commit details
  9. Skeleton model files added

    wil3 committed Dec 5, 2018
    Copy the full SHA
    db087c4 View commit details

Commits on Jan 18, 2019

  1. Increment Gazebo version

    wil3 committed Jan 18, 2019
    Copy the full SHA
    21f1b0a View commit details
  2. Copy the full SHA
    d6a681f View commit details
  3. Copy the full SHA
    3c73ce5 View commit details
  4. Add requirements for example

    wil3 committed Jan 18, 2019
    Copy the full SHA
    dd7c4bf View commit details
  5. Copy the full SHA
    ff14734 View commit details
  6. Copy the full SHA
    6d0f7aa View commit details
  7. Copy the full SHA
    9d4ed9e View commit details
  8. Update install instructions

    wil3 committed Jan 18, 2019
    Copy the full SHA
    9ba539f View commit details

Commits on Jan 22, 2019

  1. Copy the full SHA
    7797ec9 View commit details
  2. Removing aircraft dependencies

    wil3 committed Jan 22, 2019
    Copy the full SHA
    b522036 View commit details

Commits on Jan 25, 2019

  1. Renaming files

    wil3 committed Jan 25, 2019
    Copy the full SHA
    68512d2 View commit details
  2. ignore local vimrc files

    wil3 committed Jan 25, 2019
    Copy the full SHA
    6ebcf0d View commit details
  3. Copy the full SHA
    bb5e287 View commit details
Showing with 7,524 additions and 4,980 deletions.
  1. +76 −0 .all-contributorsrc
  2. +35 −0 .github/ISSUE_TEMPLATE/bug_report.md
  3. +20 −0 .github/ISSUE_TEMPLATE/feature_request.md
  4. +14 −0 .github/PULL_REQUEST_TEMPLATE/bug_fix.md
  5. +29 −0 .github/PULL_REQUEST_TEMPLATE/feature_change.md
  6. +27 −0 .github/pull_request_template.md
  7. +5 −0 .gitignore
  8. +3 −0 .gitmodules
  9. +16 −0 .travis.yml
  10. +68 −0 CONTRIBUTING.md
  11. +342 −66 README.md
  12. +105 −0 docker/demo/Dockerfile
  13. +73 −0 docker/environment/Dockerfile
  14. +141 −0 examples/README.md
  15. 0 {gymfc/controllers → examples/gymfc_nf}/__init__.py
  16. 0 gymfc/pygazebo/msg/__init__.py → examples/gymfc_nf/controllers/README.md
  17. +22 −0 examples/gymfc_nf/controllers/ZieglerNichols.py
  18. +154 −0 examples/gymfc_nf/controllers/pid.py
  19. +25 −0 examples/gymfc_nf/envs/__init__.py
  20. +159 −0 examples/gymfc_nf/envs/base.py
  21. +78 −0 examples/gymfc_nf/envs/continuous.py
  22. +169 −0 examples/gymfc_nf/envs/delta.py
  23. +92 −0 examples/gymfc_nf/envs/ramp.py
  24. +390 −0 examples/gymfc_nf/envs/reference.py
  25. +143 −0 examples/gymfc_nf/envs/rewards.py
  26. +146 −0 examples/gymfc_nf/envs/states.py
  27. +70 −0 examples/gymfc_nf/envs/step.py
  28. +1 −0 examples/gymfc_nf/policies/README.md
  29. +4 −0 examples/gymfc_nf/policies/__init__.py
  30. +14 −0 examples/gymfc_nf/policies/baselinespolicy.py
  31. 0 requirements.txt → examples/gymfc_nf/policies/graphpolicy.py
  32. +25 −0 examples/gymfc_nf/policies/pbpolicy.py
  33. +17 −0 examples/gymfc_nf/policies/pidpolicy.py
  34. +11 −0 examples/gymfc_nf/policies/policy.py
  35. +10 −0 examples/gymfc_nf/twins/nf1/README.md
  36. BIN examples/gymfc_nf/twins/nf1/cad/battery_tattu_rline_1550mah.fcstd
  37. BIN examples/gymfc_nf/twins/nf1/cad/fc_stack_simple.FCStd
  38. BIN examples/gymfc_nf/twins/nf1/cad/floss2_frame.fcstd
  39. BIN examples/gymfc_nf/twins/nf1/cad/motor_hyperlite_2204_2522.fcstd
  40. +56 −0 examples/gymfc_nf/twins/nf1/meshes/battery_tattu_rline_1550mah.dae
  41. BIN examples/gymfc_nf/twins/nf1/meshes/battery_tattu_rline_1550mah.stl
  42. +63 −0 examples/gymfc_nf/twins/nf1/meshes/fc_stack_simple.dae
  43. BIN examples/gymfc_nf/twins/nf1/meshes/fc_stack_simple.stl
  44. +56 −0 examples/gymfc_nf/twins/nf1/meshes/frame_floss2.dae
  45. BIN examples/gymfc_nf/twins/nf1/meshes/frame_floss2.stl
  46. +56 −0 examples/gymfc_nf/twins/nf1/meshes/motor_hyperlite_2204_2522.dae
  47. BIN examples/gymfc_nf/twins/nf1/meshes/motor_hyperlite_2204_2522.stl
  48. +63 −0 examples/gymfc_nf/twins/nf1/meshes/prop_gemfan_5152R_ccw.dae
  49. BIN examples/gymfc_nf/twins/nf1/meshes/prop_gemfan_5152R_ccw.stl
  50. +63 −0 examples/gymfc_nf/twins/nf1/meshes/prop_gemfan_5152R_cw.dae
  51. BIN examples/gymfc_nf/twins/nf1/meshes/prop_gemfan_5152R_cw.stl
  52. +17 −0 examples/gymfc_nf/twins/nf1/model.config
  53. +867 −0 examples/gymfc_nf/twins/nf1/model.sdf
  54. +26 −0 examples/gymfc_nf/utils/log.py
  55. +63 −0 examples/gymfc_nf/utils/monitor.py
  56. +69 −0 examples/pid_example.py
  57. +33 −0 examples/plot_flight.py
  58. +63 −0 examples/plot_flight_metrics.py
  59. +256 −0 examples/ppo_baselines_train.py
  60. +10 −0 examples/setup.py
  61. +119 −0 examples/tf_checkpoint_evaluate.py
  62. +3 −0 gen_pb.sh
  63. +0 −80 gymfc/__init__.py
  64. +0 −180 gymfc/controllers/iris_pid_eval.py
  65. +0 −269 gymfc/controllers/pid.py
  66. +2 −0 gymfc/envs/__init__.py
  67. 0 ...s/assets/gazebo/models/{quadcopter_attitude_control → attitude_control_training_rig}/model.config
  68. +39 −0 gymfc/envs/assets/gazebo/models/attitude_control_training_rig/model.sdf
  69. +0 −24 gymfc/envs/assets/gazebo/models/quadcopter/model.config
  70. +0 −144 gymfc/envs/assets/gazebo/models/quadcopter/model.sdf
  71. +0 −32 gymfc/envs/assets/gazebo/models/quadcopter_attitude_control/model.sdf
  72. +0 −160 gymfc/envs/assets/gazebo/models/quadcopter_model/meshes/iris.dae
  73. +0 −160 gymfc/envs/assets/gazebo/models/quadcopter_model/meshes/iris_prop_ccw.dae
  74. +0 −160 gymfc/envs/assets/gazebo/models/quadcopter_model/meshes/iris_prop_cw.dae
  75. +0 −36 gymfc/envs/assets/gazebo/models/quadcopter_model/model.config
  76. +0 −426 gymfc/envs/assets/gazebo/models/quadcopter_model/model.sdf
  77. +18 −0 gymfc/envs/assets/gazebo/plugins/AircraftConfigPlugin.cpp
  78. +66 −4 gymfc/envs/assets/gazebo/plugins/CMakeLists.txt
  79. +783 −0 gymfc/envs/assets/gazebo/plugins/FlightControllerPlugin.cpp
  80. +208 −0 gymfc/envs/assets/gazebo/plugins/FlightControllerPlugin.hh
  81. +0 −718 gymfc/envs/assets/gazebo/plugins/QuadcopterWorldPlugin.cpp
  82. +0 −185 gymfc/envs/assets/gazebo/plugins/QuadcopterWorldPlugin.hh
  83. +1 −1 gymfc/envs/assets/gazebo/plugins/README.md
  84. BIN gymfc/envs/assets/gazebo/plugins/build/libQuadcopterWorldPlugin.so
  85. +8 −0 gymfc/envs/assets/gazebo/plugins/build_plugin.sh
  86. +20 −0 gymfc/envs/assets/gazebo/plugins/msgs/Action.proto
  87. +13 −0 gymfc/envs/assets/gazebo/plugins/msgs/EscSensor.proto
  88. +7 −0 gymfc/envs/assets/gazebo/plugins/msgs/Float.proto
  89. +16 −0 gymfc/envs/assets/gazebo/plugins/msgs/Imu.proto
  90. +7 −0 gymfc/envs/assets/gazebo/plugins/msgs/MotorCommand.proto
  91. +38 −0 gymfc/envs/assets/gazebo/plugins/msgs/State.proto
  92. +0 −6 gymfc/envs/assets/gazebo/start_gazebo.sh
  93. +0 −100 gymfc/envs/assets/gazebo/worlds/attitude-iris.world
  94. +58 −0 gymfc/envs/assets/gazebo/worlds/attitude.world
  95. +56 −0 gymfc/envs/assets/gazebo/worlds/empty.world
  96. +0 −125 gymfc/envs/attitude_control_env.py
  97. +580 −0 gymfc/envs/fc_env.py
  98. +0 −354 gymfc/envs/gazebo_env.py
  99. +18 −0 gymfc/gymfc.ini
  100. +103 −0 gymfc/msgs/Action_pb2.py
  101. +205 −0 gymfc/msgs/State_pb2.py
  102. 0 gymfc/msgs/__init__.py
  103. +0 −14 gymfc/pygazebo/README.md
  104. +0 −31 gymfc/pygazebo/__init__.py
  105. +0 −67 gymfc/pygazebo/msg/gz_string_pb2.py
  106. +0 −67 gymfc/pygazebo/msg/gz_string_v_pb2.py
  107. +0 −78 gymfc/pygazebo/msg/log_playback_stats_pb2.py
  108. +0 −84 gymfc/pygazebo/msg/packet_pb2.py
  109. +0 −88 gymfc/pygazebo/msg/publish_pb2.py
  110. +0 −70 gymfc/pygazebo/msg/publishers_pb2.py
  111. +0 −95 gymfc/pygazebo/msg/subscribe_pb2.py
  112. +0 −74 gymfc/pygazebo/msg/time_pb2.py
  113. +0 −98 gymfc/pygazebo/msg/world_control_pb2.py
  114. +0 −81 gymfc/pygazebo/msg/world_reset_pb2.py
  115. +0 −116 gymfc/pygazebo/msg/world_stats_pb2.py
  116. +0 −782 gymfc/pygazebo/pygazebo.py
  117. 0 gymfc/tools/__init__.py
  118. +65 −0 gymfc/tools/plot.py
  119. BIN images/gymfc-logo.png
  120. BIN images/gymfc2-arch.png
  121. BIN images/gymfc2.png
  122. +82 −0 install_dependencies.sh
  123. +46 −5 setup.py
  124. +53 −0 tests/README.md
  125. +440 −0 tests/check_sim_stability.py
  126. +67 −0 tests/dyno.py
  127. +70 −0 tests/test_axis.py
  128. +32 −0 tests/test_start_sim.py
  129. +56 −0 tests/test_step_sim.py
76 changes: 76 additions & 0 deletions .all-contributorsrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "wil3",
"name": "Wil Koch",
"avatar_url": "https://avatars3.githubusercontent.com/u/4587660?v=4",
"profile": "https://wfk.io",
"contributions": [
"code",
"doc",
"example",
"infra"
]
},
{
"login": "MichaelManz",
"name": "Michael Friedrich",
"avatar_url": "https://avatars0.githubusercontent.com/u/1280036?v=4",
"profile": "https://github.com/MichaelManz",
"contributions": [
"code",
"example",
"infra"
]
},
{
"login": "sidmysore",
"name": "Sid Mysore",
"avatar_url": "https://avatars2.githubusercontent.com/u/12174271?v=4",
"profile": "https://github.com/sidmysore",
"contributions": [
"bug"
]
},
{
"login": "SwapnilPande",
"name": "Swapnil Pande",
"avatar_url": "https://avatars3.githubusercontent.com/u/9200948?v=4",
"profile": "https://github.com/SwapnilPande",
"contributions": [
"bug",
"ideas",
"test"
]
},
{
"login": "xabierolaz",
"name": "xabierolaz",
"avatar_url": "https://avatars0.githubusercontent.com/u/31626226?v=4",
"profile": "https://github.com/xabierolaz",
"contributions": [
"test"
]
},
{
"login": "varunag18",
"name": "varunag18",
"avatar_url": "https://avatars0.githubusercontent.com/u/1232584?v=4",
"profile": "https://github.com/varunag18",
"contributions": [
"test"
]
}
],
"contributorsPerLine": 7,
"projectName": "gymfc",
"projectOwner": "wil3",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true
}
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''

---

### Prerequisites
* [ ] Put an X between the brackets on this line to verify you have done the following:
* I have checked that your issue isn't already filed.
* I am running Ubuntu 18.04
* I installed the environment and GymFC according to these [instructions](https://github.com/wil3/gymfc/#quick-start).

### Description
A clear and concise description of what the bug is.

### Steps to Reproduce
Provide the list of commands and the corresponding output. **Do not** post output as images/screenshots. Place output in a fenced [code block](https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks). Images are not searchable thus preventing others from finding similar issues and they are difficult to read.
1. Execute command X
```
Output from command X
```
2. Execute command Y
```
Output from command Y
```
3. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
14 changes: 14 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/bug_fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
### Requirements for Contributing a Bug Fix
* Read
[CONTRIBUTING.md](https://github.com/wil3/gymfc/blob/master/CONTRIBUTING.md)
* The pull request must only fix an existing bug. To contribute other changes, you must use a different template.
* Open an issue. Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of the pull request.
* Fill out the template below, any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.

### Identify the Bug

Closes: #XXX

### Description of the Change

### Verification and Validation of the Change
29 changes: 29 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/feature_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
### Requirements for Adding, Changing, or Removing a Feature
* Read
[CONTRIBUTING.md](https://github.com/wil3/gymfc/blob/master/CONTRIBUTING.md)
* Open an issue. Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of the pull request.
* Fill out the template below, any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.

### Description of the Change

Closes: #XXX

<!--
We must be able to understand the design of your change from this description. If we can't get a good idea of what the code will be doing from the description here, the pull request may be closed at the maintainers' discretion. Keep in mind that the maintainer reviewing this PR may not be familiar with or have worked with the code here recently, so please walk us through the concepts.
-->

### Verification Process

<!--
What process did you follow to verify that your change has the desired effects?
- How did you verify that all new functionality works as expected?
- How did you verify that all changed functionality works as expected?
- How did you verify that the change has not introduced any regressions?
Describe the actions you performed (commands you ran, etc.), and describe the results you observed.
-->
27 changes: 27 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
### Requirements for Pull Request
* Read [CONTRIBUTING.md](https://github.com/wil3/gymfc/blob/master/CONTRIBUTING.md).
* Open an issue. Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of the pull request.
* Fill out the template below, any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.

### Description of the Change

Closes: #XXX

<!--
We must be able to understand the design of your change from this description. If we can't get a good idea of what the code will be doing from the description here, the pull request may be closed at the maintainers' discretion. Keep in mind that the maintainer reviewing this PR may not be familiar with or have worked with the code here recently, so please walk us through the concepts.
-->

### Verification Process
<!--
What process did you follow to verify that your change has the desired effects?
- How did you verify that all new functionality works as expected?
- How did you verify that all changed functionality works as expected?
- How did you verify that the change has not introduced any regressions?
Describe the actions you performed (commands you ran, etc.), and describe the results you observed.
-->
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -3,7 +3,12 @@
**/.gazebo/*
**/.sdformat/*
**/.config/*
**/build
Makefile
*.cmake
CMakeCache.txt
**/CMakeFiles/*
.vimrc
gymfc.json
.idea
env/
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "modules/control/pid/ivPID"]
path = modules/control/pid/ivPID
url = https://github.com/ivmech/ivPID
16 changes: 16 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# This travis script builds and installs gymfc via pip in a docker container.
# We need the docker container because we want to use the same running environment
# for the build and this can take over an hour exceeding the travis build timeout.
sudo: required
language: generic
matrix:
include:
- name: "Bionic beaver"
dist: bionic
services:
- docker
before-install:
- docker pull wil3/gymfc:testing
install:
- docker run -v $TRAVIS_BUILD_DIR:/tmp/gymfc wil3/gymfc:testing "cd /tmp/gymfc && pip3 install ."

68 changes: 68 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Contributing to GymFC

:+1::tada: Thank you for wanting to contribute to GymFC! :+1::tada:

Together we can build next
generation flight control systems :rocket: :airplane: :helicopter: and there are many ways you can help!

## Bug reporting
Please follow these steps when reporting a bug.

1) Search through the issues to ensure your bug has not already been submitted.
2) Open a new issue and describe at lengths how the bug can be reproduced.
3) Include the full verbose output in markdown
code block, not as an image. Images can't be searched.

## Code Contributions
Please follow these steps in order to have your contribution considered by
the maintainers.

1) Search through the issues to verify your code changes have not already been
discussed.
2) Open an issue on Github outlining the changes you would like to make. Scope
each issue to a single change (i.e., improvement to the documentation, a bug fix,
a new feature, etc.). If there are multiple changes you'd like to
propose, please open an new issue for each one. The issue serves as the location for discussing and
documenting the change to be made. Once the change is approved continue to the
next step.
2) If you haven't already done so, fork the gymfc repository.
2) Create a branch named `i[issue number]-brief-description` where `[issue
number]` is the issue number previously created and `brief-description` is a
brief description of the change you are making. For example `i45-contribution`.

3) Make changes on your new branch, follow the style guide below. Test you code changes. Double check your commits to ensure unnecessary commits are not being made to keep the commit history clean.

4) When you are happy with the code changes open up a pull request. Specify the
issue the PR closes, for example `Closes: #45`. When the PR is merged, this keyword will automatically close the corresponding issue.
Please provide testing results that will affect your code changes. A number of
testing scripts already exist in /test that may help.

## R&D

We are always in need of better models and reward functions.

## Documentation and Examples

It can be intimidating getting into this research, it is very
multi-disciplinary. Good documentation allows for more people to get involved.

## Style Guides

### Git messages

* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less
* Reference issues and pull requests liberally after the first line

### Code

We adhere to Google's style guide for Python code.
The Python guide can be found
[here](http://google.github.io/styleguide/pyguide.html).

To stay consistent with Gazebo, the Gazebo C++ plugins follow the Gazebo style guide found
[here](http://gazebosim.org/tutorials?tut=contrib_code&cat=development).

## Add your self as a contributor
GymFC uses the [all-contributors bot](https://allcontributors.org/docs/en/bot/overview) to maintain a list of all contributors. When you open a PR be sure to add your self as a contributor using the bot usage [here](https://allcontributors.org/docs/en/bot/usage).
Loading