Replies: 1 comment
-
Hi @dillonloh, Thanks for sharing your positive experience with Open-RMF! You raise a valid concern about bidding_time_window parameter being almost a "magic number" to get right esp over the course of the application's lifetime. The There are a few ways to approach this
To make either of these approaches work, we'd need to encode information about the capability of a fleet (full contorl, traffic light, etc) into the above msgs published and update fleet adapters to report this. But exposing this information is not great imo since users can use the Some other workarounds that come to mind are
Open to other suggestions as well! |
Beta Was this translation helpful? Give feedback.
-
Background
Hello OpenRMF developers,
First of all, thank you for building this amazing piece of software. My team has been testing it extensively for use in large-scale simulations, and it has worked great. However, one thing that has been difficult to work around has been the strict bidding time window that we must predefine as a launch parameter. We noticed that openRMF's bidding system is such that even if all connected fleet adapters have submitted their bids to the core, the system does not immediately end the "auction" and instead waits till the full duration of the bidding window has passed. Normally, this probably isnt an issue, since I assume that the system wants to be flexible enough for late bids to come in.
However, in our use case where we expect >20 tasks to eventually be in the robot's task queue, this system becomes difficult to work with. In particular, it is difficult for us to define a good bidding time window that balances the need to give sufficient time to fleet adapters for cost calculation, and the need to assign tasks within a reasonable amount of time.
I illustrate this with 2 scenarios below:
Scenario 1
Say we set the bidding time window to a reasonably short value of 10 seconds. When the robot still has short task queues at the start of its lifetime, this works fine, as all bids can come in within seconds. However, as task queues grow longer, robots will not be able to calculate costs quickly enough to submit bids within the window. In the extreme case where this applies to all robots, the task is skipped and never assigned again.
Scenario 2
We set a longer bidding time window, hypothetically long enough (e.g. 10 minutes) that a fleet adapter will always be able to submit a bid before the window expires, irregardless of how long the task queues get. However, this means that even when task queues are short and all bids come in within seconds, the auctioneer still waits for the full 10 minutes to pass before actually assigning the task, which is extremely inconvenient.
Question
Given my limited perspective of the above issues, I would greatly appreciate it if I could better understand the reason behind this design decision.
It seems to me that a "loose" timeout system would be a better fit, since we can now handle both short/long task queue situations. Specifically, we solve the problem of excessive waiting for short task queues scenario.
I illustrate this below (assume we set a timeout of 10minutes).
Short Task Queue
Bids will come in within seconds here. Once all bids come in, since our system is loose, we immediately close the auction. This keeps auction times short when task queues are short and cost calculations are fast.
Long Task Queue
Works same as before, but now I am not worried about how long I set my timeout since it wont affect short task queue situation.
I am still learning about how traffic deconfliction, task bidding systems, etc. work, so I would greatly appreciate if you could help me better understand the design decisions taken by your team in building this system, along with your thoughts on my idea.
Thank you.
Beta Was this translation helpful? Give feedback.
All reactions