Fields2Cover / fields2cover_ros

A ROS interface of Fields2Cover
BSD 3-Clause "New" or "Revised" License
44 stars 19 forks source link

Inquiry on ROS application and paper #6

Closed PhilipAmadasun closed 1 year ago

PhilipAmadasun commented 1 year ago

Hi, I came across your paper while searching coverage path planning applications, I'm also doing research in this area although my direction is somewhat different. Firstly, I am glad to not be alone discovering the sheer lack of open source applications in he coverage path planning field. I have been seeking other applications I could use for testing and comparison to what I'm trying to develop. Your paper compiles all the accessible applications you could find(I believe about 6 in total). Your addition provides 7 in total.

I would like your view point on which of these applications would provide the most comprehensive comparison. My coverage path planning application calculates coverage based on how much of the map the robot has "seen" with it's sensor because the application is for surveillance and search. The other path planners(as well as yours) seem to be mostly based on boustrophedon patterns that base coverage calculation on how much the map the robot has "physically" travelled across. Because of these two differing directions, it's a bit difficut for me to come up with a performance metric that makes sense, if I wish to compare my application with whats already out there. What would you suggest?

I would also like to know if your algorithms can be used with just an occupancy grid map. From what I glean, the robot must have access to GPS?

Gonzalo-Mier commented 1 year ago

Hi Philip, welcome to the research topic in general, and to this repo in particular. Quite a dense question. I'll do my best to help you, but please ask again if clarification is needed.

My coverage path planning application calculates coverage based on how much of the map the robot has "seen" with it's sensor because the application is for surveillance and search.

First thing first, your application is a classical example of online coverage path planning. Moreover, your task is not to fully cover the space as fast as possible, but to cover as much space as possible in a given time. This make your and our problems similar, but completely different. Our solution has constraints that are not applied in your case, like avoid covering already covered space (because soil compaction in agriculture).

Because of these two differing directions, it's a bit difficult for me to come up with a performance metric that makes sense, if I wish to compare my application with whats already out there. What would you suggest?

I mentioned it in the previous paragraph but I will explain myself a bit better. You want to cover as much space as possible in a given time. According to your comment, your objective function is covered area / total area. Good news, if you use our library you will get 100% of coverage :smile:. As mention before, our problem is complete coverage path planning. However, it is not optimal for your study case. The objective function I have seen other researchers use is the percentage previously mention for given time stamps (which is the coverage percentage in the second 300?). Then you can compare algorithms of the same type better.

I would also like to know if your algorithms can be used with just an occupancy grid map.

Not really. Our solution is swath-based (based on boustrophedon patterns, as you called it). We avoid losing precision with the grid by not using a grid at all. There are other repositories that actually use them: https://github.com/athakapo/DARP and https://github.com/18alantom/CoveragePathPlanning. Both implement the same algorithm, but you can compare them.

From what I glean, the robot must have access to GPS?

No, the GPS is because it's nice for visualization, but not required. Our package is focused on agriculture, so our data usually is georeferenced. However, the package works in local coordinates, so no georeferenced is required. I'll recommend you to take a deep look into the docs of the main repo https://github.com/Fields2Cover/Fields2Cover.

Three more things:

Right now this algorithms get out of the scope of the library, but if you want to contribute, I'm open to broaden it.

I hope it helps you :)

PhilipAmadasun commented 1 year ago

Thank you for the brisk response, let me try to clarify this first: your task is not to fully cover the space as fast as possible, but to cover as much space as possible in a given time. It's both, for instance, if I'm aiming for 90 percent coverage, I want to "see" 90% of that area as fast as possible, so my application depends alot on sensing range and sensor data. but for the most part you are correct. covered area / total area is correct. I must mention my algorithm makes it possible that the robot favors moving to areas of the map it has not yet covered, so there is some mechanism that prevents the robot just keeps moving around areas already covered. I don't know if your environment is known or not before-hand, but it will also change the planner you need to use. With our library https://github.com/Fields2Cover/Fields2Cover is quite easy to program those solution without occupancy grid. Use this function over and over for the random planner: https://github.com/Fields2Cover/Fields2Cover/blob/2fa250253dd2852509b9cf12b84dbc88a49c9c1d/include/fields2cover/types/Cell.h#L90 My application(in ROS by the way) uses the known occupancy grid map of whatever environment I wish to cover, the map is known beforehand. I'm not sure random walk would be a good comparison as we want to compare with something that provides optimal coverage time. I think random walk or boustrophedon algorithms your team created can still be used? I'm not sure, please provide your thoughts. This is an example of a map I want to use for testing and comparison.

LDW1

This map is about 30 by 35 meters in area. If there is a way, how would you calibrate your algorithm(in ROS) for a robot wheeled robot with maximum velocity of 0.22m/s and accleration of 1.0m/s to cover this area in optimal time? If this is possible I think I can work around some of my comparison issues I think.

Gonzalo-Mier commented 1 year ago

I think random walk or boustrophedon algorithms your team created can still be used?

Unfortunately, this version of the library only supports convex environments, so your example is a bit problematic for this case. As mentioned, I would recommend you using any of the other packages oriented for online coverage path planning. Sorry for not being able to help you more.

PhilipAmadasun commented 1 year ago

Please be sure that you still helped me regardless. Just to make sure, does your application also require a known map before hand?

On Sat, Dec 3, 2022 at 8:46 AM Gonzalo Mier @.***> wrote:

I think random walk or boustrophedon algorithms your team created can still be used?

Unfortunately, this version of the library only supports convex environments, so your example is a bit problematic for this case. As mentioned, I would recommend you using any of the other packages oriented for online coverage path planning. Sorry for not being able to help you more.

— Reply to this email directly, view it on GitHub https://github.com/Fields2Cover/fields2cover_ros/issues/6#issuecomment-1336196246, or unsubscribe https://github.com/notifications/unsubscribe-auth/AND3KDQ4LTWTXYKIAABBGYDWLN2M5ANCNFSM6AAAAAASSIETMY . You are receiving this because you authored the thread.Message ID: @.***>

Gonzalo-Mier commented 1 year ago

Yes, it's designed for offline coverage path planning, and it's difficult to create a plan beforehand without knowing the map.