Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Presubmission inquiry: A python package for complete coverage path planning #140

Closed
2 of 14 tasks
sanjeevrs2000 opened this issue Oct 9, 2023 · 5 comments
Closed
2 of 14 tasks
Assignees

Comments

@sanjeevrs2000
Copy link

sanjeevrs2000 commented Oct 9, 2023

Submitting Author: Sanjeev Kumar (@sanjeevrs2000)
Package Name: cc_pathplanner
One-Line Description of Package: This repository contains a program which generates a guidance trajectory for complete 2D coverage. It can be used for operations where complete coverage of an Area of Interest (AoI) is required.

Repository Link (if existing): https://github.com/sanjeevrs2000/cpp


Description

This repository contains software to generate guidance trajectories that enable the robot to cover the specified region of interest using boustrophedon or lawn-mower motions. If the area of interest is large or if it has any forbidden regions or obstacles, it could be divided into smaller sections and covered one after the other. The order of visits to the sections is optimized using a travelling salesman problem (TSP) solver to minimize the overall distance. It also uses Dubins curves to generate continuous and feasible trajectories. The distance between the parallel tracks, and the driving angle, which is the fixed angle of the tracks, can be selected as per the requirements of the specific application.

Code of Conduct & Commitment to Maintain Package

Community Partnerships

We partner with communities to support peer review with an additional layer of
checks that satisfy community requirements. If your package fits into an
existing community please check below:

Scope

Scope

  • Please indicate which category or categories.
    Check out our package scope page to learn more about our
    scope. (If you are unsure of which category you fit, we suggest you make a pre-submission inquiry):

    • Data retrieval
    • Data extraction
    • Data processing/munging
    • Data deposition
    • Data validation and testing
    • Data visualization
    • Workflow automation
    • Citation management and bibliometrics
    • Scientific software wrappers
    • Database interoperability

Domain Specific & Community Partnerships

- [ ] Geospatial
- [ ] Education
- [ ] Pangeo
- [x ] Unsure/Other (explain below)
  • Explain how and why the package falls under these categories (briefly, 1-2 sentences). Please note any areas you are unsure of:

We believe it comes under artificial intelligence and robotics. Unsure if it is within scope of PyOpenSci

  • Who is the target audience and what are the scientific applications of this package?

It could be useful for researchers working in robotics and automation. It has potential applications like surveying, cleaning, mapping where coverage of a specific region of interest is required.

  • Are there other Python packages that accomplish similar things? If so, how does yours differ?

This package does have a sample program for coverage path planning. But it considers a grid based map which makes it harder to implement for several applications as additional preprocessing is required. Our work takes in latitude-longitude coordinates to generate realistic and feasible trajectories that are more suitable for real-world applications.

  • Any other questions or issues we should be aware of:

P.S. Have feedback/comments about our review process? Leave a comment here

@NickleDave
Copy link
Contributor

Hi @sanjeevrs2000 and welcome to pyOpenSci, thank you for making this presubmission inquiry.

A package that implements coverage planning algorithms from robotics would be in scope, yes, particularly if it focuses on (1) implementations / replications of some broad set of algorithms and (2) convenient to use data formats.

However, I am able to find at least two similar packages that look like they are already well developed. I found these with a Google search for "coverage path planning python".

To be in scope and proceed with a review:

I don't mean to discourage you, and I am impressed by your initiative. But at first glance, this looks to me like a case where it might benefit your research community more if you were to contribute to those existing packages, instead of building another.

Please let me know if that makes sense. I am happy to discuss here further.

@sanjeevrs2000
Copy link
Author

@NickleDave, thanks for the detailed response.

Fields2cover does seem to be pretty well developed and documented. While it is similar to ours, our approach also considers obstacle regions and solves it by separating the region into sections and use of optimization to minimize distance. We believe ours also uses a convenient format (only latitude-longitude coordinates) that makes it easier to transfer to potential applications.

Our work is an updated version of previously published work which has most of these described functionalities (https://journals.sagepub.com/doi/full/10.5772/56248). I do agree with your suggestions, but our initial intention was to make this existing work open source as we have been getting some requests for it. It is already packaged and released on PyPI, and we can update the documentation on github to be more detailed. Kindly let us know if you think this is sufficient to go into the review process, and if you have any other suggestions.

@NickleDave NickleDave self-assigned this Oct 17, 2023
@NickleDave
Copy link
Contributor

NickleDave commented Oct 19, 2023

Hi again @sanjeevrs2000, thank you for your patience.

I will make a judgement call here and say that, yes, this submission is in scope.

However, it will be a requirement for us to start the review that you (1) have complete documentation, as I will describe below, and (2) have the library installable from pip and/or conda (e.g. using conda-forge). There are other requirements I will link to below.

These two items are crucial for you to do before you submit, so that it will pass the initial editor checks required to start the review:

  • have complete documentation, that meets the requirements listed in the editor checks: (1) installation + getting started info, (2) detailed tutorials, (3) API documentation, all on a separately rendered site (e.g. readthedocs or GitHub Pages)
  • be able to install your package from pip and/or conda. Right now you do not list your package's dependencies in your pyproject.toml, such as numpy and scipy, so even though I can technically run pip install cc-pathplanner into a new environment, I will be missing those required dependencies. Please see this page of our packaging guide for more information: https://www.pyopensci.org/python-package-guide/package-structure-code/pyproject-toml-python-package-metadata.html

There are other requirements but I wanted to call those two out based on my initial read-through of your repository. The rest of the requirements you will find here:
https://www.pyopensci.org/software-peer-review/how-to/author-guide.html#does-your-package-meet-packaging-requirements

These are not requirements, but strong suggestions:

  • You said "Our work is an updated version of previously published work which has most of these described functionalities (https://journals.sagepub.com/doi/full/10.5772/56248)." I understand you to be saying that your library implements the algorithm described in that paper. If I were you I would make it absolutely clear in your documentation that you are implementing the algorithm in the paper you cite. This should be at the top of your README as well as the index for your rendered docs. It's one of the selling points of your package, and it tells people why they should care about it as opposed to other packages
  • I would provide some sort of command-line interface so that people aren't required to write a script to use your package, as shown now in the minimal example usage, but can instead it invoke it from the terminal. In case it's not clear, I mean a CLI like the one described here: https://merely-useful.tech/py-rse/scripting.html
  • I would change your package name so that (1) it has a few letters, say five-ten, and (2) the project name (on PyPI) matches the actual import name. E.g., both should be named ccpp or pathplan. This minimizes typing and also avoids confusion--I read several different names in your README at the moment and I'm not sure which one I should use when.

Please let me know if all that is clear.

If that makes sense to you, then confirm to me that you will submit when you have met those requirements, and I will then close this issue.

@sanjeevrs2000
Copy link
Author

sanjeevrs2000 commented Oct 25, 2023

Hi @NickleDave, thanks a lot again for your suggestions.
We shall try to meet the requirements and submit it.

So do I raise a new issue for submission when it is ready?

@NickleDave
Copy link
Contributor

Yes @sanjeevrs2000 please raise a new issue for the submission, and reference this one by number when you do.

Thank you, looking forward to your submission! I'll go ahead and close this

@sanjeevrs2000 sanjeevrs2000 mentioned this issue Mar 25, 2024
32 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

2 participants