h2r/pomdp-py

Call for Contributions

zkytony opened this issue · 5 comments

pomdp-py has been useful to many since it was released two years ago. It is encouraging to receive emails from users of different backgrounds. I believe there is value and beauty in keep improving this library for what it is and making POMDP-related research more accessible to more people programmatically. This is the basis of pomdp-py.

I will keep maintaining this library, but I have also graduated from my PhD and am moving on to the next chapter. Therefore, I am calling for contributors who are willing to take part in improving & maintaining this library. Below, I provide some guidelines for how you could contribute. In the end, I include my own todo-list -- open for anybody. Feel free to contact me at kzheng10@cs.brown.edu if you have any thoughts or comments.

How to Contribute

There are multiple ways you could contribute:

  1. Open an issue. If you identify a problem or have questions, feel free to open an issue about it.

  2. Fork & make a pull request.

    • Existing tests under pomdp-py/tests should pass. Run python test_all.py before making your pull request.

    • If you make breaking changes, please write your own tests under the same directory and overwrite previous tests (and justify why).

    • Communicate effectively what you have done, how it works, and how should people use it. Effective communication is not limited to text writing.

  3. Blog. If you have used pomdp-py, it would be useful to others if you blog about the process of your use and your thoughts. Share your link with me - thanks!

Coding

Documentation

Read about how to build the docs on this documentation page.

Git and Github

  • Follow Github's Best Practices for Projects. In particular:
    • Break down large issues into smaller issues
    • Communicate
    • Make use of the description and README
    • Have a single source of truth

Caveats

  • Building a Cython-Python project for PyPI release is tricky. Make sure both Cython (.pyx, .pxd) and Python (.py) source files are included in the PyPI source package.
  • Writing documentation for a Cython-Python combined project is tricky.

TODO List

Your contribution could be about, but not limited to, the following TODO items in my notes. The ordering is somewhat random; they are each assigned to a potential future release.

  • Add a tutorial for writing tabular domains; Add crying-baby example; Add the tabular models into pomdp-py/utils/templates.py

  • Add a tutorial for using the functions in value_functions.py.

  • Add DESPOT support. It is best to integrate with the official DESPOT repository.

  • Add OctreeDistribution (octree belief; ref) as one of the distribution reps in pomdp_py.

  • Finish solving the light-dark domain; Existing B-LQR planning implementation does not work.

  • Add support for multi-agent POMDPs.

    • Issues requesting Dec-POMDP #19, #14
  • Add examples and solvers / planners for continuous POMDPs.

  • Benchmark comparison against David Silver's C++ codebase on RockSample. The codebase could be found in this repo: https://github.com/kyr-pol/pomcp

Hi, Thank you for the great library. I am using it for one of my projects. I would love to contribute to the project.

Specifically, I want to contribute to v1.4.0: "Add OctreeDistribution (octree belief; ref) as one of the distribution reps in pomdp_py."

I have already gone through the code and have updated parts of it for my current project so I can get started on this soon. Please let me know if there's anything else I need to know before getting started.

Thank you.

@RajeshDM Fantastic.

I have implemented OctreeDistribution here, which is better (more comprehensive) than the code for the paper you linked. I was imagining porting that over to pomdp_py and adding tests would be great. Tests have also been written here.

@RajeshDM Fantastic.

I have implemented OctreeDistribution here, which is better (more comprehensive) than the code for the paper you linked. I was imagining porting that over to pomdp_py and adding tests would be great. Tests have also been written here.

Thanks for pointing me to the updated code base. If the code already exists, I believe the work should not be too extensive except for adding some more testing perhaps? Maybe the useful thing might be also adding an example problem that actually uses the octTree belief so that it would be useful to learn from for someone trying to use the OctTree belief for their own use later down the line. What do you think about that?

Agree. I think the original 3D object search domain is a good candidate but needs to be greatly simplified for this. If there is something you are working on that can be an example that would be wonderful.

Agree. I think the original 3D object search domain is a good candidate but needs to be greatly simplified for this. If there is something you are working on that can be an example that would be wonderful.

That sounds good. I am currently working on a domain but that might take a while to be completed. It might be easier to use the existing domain. I will look at how to simplify it. Thank you