Replies: 5 comments 9 replies
-
Your question is lacking several details on your specific use case. Please be more descriptive in the future in explaining the setup. For example
Depending on your answers above, there are multiple ways to address the problem. |
Beta Was this translation helpful? Give feedback.
-
The problem is that you have the robot idle while loading items but expect Open-RMF to somehow know that it is actually being utilised. This is not a good way to execute your task with Open-RMF. There are a couple ways to fulfil your task in a safe manner: Option 1: use the existing Delivery task. This task will guide a robot to a pickup location (if the robot is already at this location, it will skip this step), wait for conformation that items have been loaded (via rmf_dispenser_msgs), go to a dropoff location, and wait for confirmation that items have been unloaded (via rmf_ingestor_msgs). If a human is loading the items, you can implement a interface somewhere on the robot or a dashbaord for them to confirm the loading/unloading which will then publish the suitable confirmation messages. While the robot is executing any of these steps including waiting, it will not be assigned a different task. if your delivery task is more complicated, eg you have multiple pickup and multiple dropoff locations, you can still create such a task by defining a custom Compose task with a list of Option 2: An alternative to not publishing ROS 2 messages for confirmation.
The |
Beta Was this translation helpful? Give feedback.
-
Hi, This could be related to this issue |
Beta Was this translation helpful? Give feedback.
-
Hi @Yadunund , Assuming the robot has been added (using fleet_handle.add_robot) and unregister participant is called against that robot, will calling '/rmf_traffic/register participant' for the robot put things back to normal (before unregister participant is called) ? |
Beta Was this translation helpful? Give feedback.
-
@cwrx777 After thinking over the questions you've been asking, it's become clear to me that RMF needs a built-in way to take robots temporarily offline and make it clear to the task planning system that they are not available to perform new tasks. To that end, I've opened this PR which allows you to "decommission" your robots. When a robot is decommissioned it will no longer accept new tasks. RMF does not currently have a builtin way to reassign tasks from one robot to another. We want to develop that feature but do not currently have funding to do so. Therefore decommissioning will not affect the robot's current task queue. After you've decommissioned a robot, it will continue to perform any tasks that it was already assigned. If you need the robot to stop what it's doing immediately, you will need to use the task interrupt, cancel, or kill APIs that are described in the pull request that I linked. We intend to do a code freeze for the next release on 16 September (Friday), so if you can test out that PR for your use case and give us some feedback that would be very helpful. We have very limited time for testing before the code freeze, so I can't promise that the feature will be merged for the release without your feedback. |
Beta Was this translation helpful? Give feedback.
-
Hi,
Consider a fleet of food delivery robot in a multi storey hotel. When food is being loaded into the robot (robot A), users on another floor may request for a to collect empty cart (on-demand/adhoc) how to prevent the empty cart collection cart task to be assigned to robot A ?
Beta Was this translation helpful? Give feedback.
All reactions