How to support a customized task sequence of food_delivery (#297)

Posted by @[Missing data]:

Hi,
My requirement is to submit a task to one robot to request it to do food_delivery at a specified destination. The task does not involve pick-up food phase, but only include go_to_place and dropoff phases. And I hope when the robot reaches the destination, it will not be moved or collided until new task is submitted to it. To be simple, the robot will occupy that point until new task is submitted to it.

After reviewing RMF document, I feel perform_action can meet the requirement. right?

Do you have other better idea besides using perform_action for this requirement?

I find there is one function in RobotUpdateHandle: unstable_declare_holding, I am not very clear about what this function does, could you please explain more to me? Literally, it sounds like the robot declars one point as occupied by it.

And I also find one task sequence event - WaitFor, can I use it for my requirement?

So many questions…
Thanks

Posted by @mxgrey:

The task does not involve pick-up food phase

Does this mean it’s always guaranteed that the robot is loaded with food before the task begins? Generally speaking, I would recommend always having a “pickup phase” so that the task management system can get some kind of assurance that the item has been loaded before attempting to deliver it. Even if the “pickup phase” just means waiting for a human to press a button to tell the robot that it’s been loaded with food.

hope when the robot reaches the destination, it will not be moved or collided until new task is submitted to it.

The best and only way to ensure this is to always have the food drop-off points be leaf nodes in your navigation graph that place the robot outside of the flow of ordinary traffic. Furthermore there would have to not be any more deliveries to the point where the robot is waiting.

I suspect the behavior that you’d prefer is if the robot automatically parks itself in an out-of-the-way location after each delivery. That’s a feature we intend to implement alongside the reservation system, but there isn’t a straightforward way to have RMF do that for you automatically at this time. Maybe the best you could do with RMF’s current feature set is put a go_to_place after your delivery where the go_to_place is a nearby parking spot that you’ve selected.

After reviewing RMF document, I feel perform_action can meet the requirement. right?

I don’t think perform_action will help with the concerns that you’ve brought up. perform_action is meant for implementing miscellaneous robot behaviors like scanning inventory or cleaning floors.

I find there is one function in RobotUpdateHandle: unstable_declare_holding

As indicated by unstable_ this is part of the unstable fleet adapter API, meaning it is experimental and a use-at-your-own-risk type of function. It’s meant to be used while the robot is in a teleoperated mode, meaning it’s receiving manual instructions from humans instead of receiving automated task instructions from RMF.

And I also find one task sequence event - WaitFor, can I use it for my requirement?

WaitFor is meant as a tool to help implement task models and is not generally considered helpful as an actual element of a task sequence.

Posted by @[Missing data]:

I see , thanks a lot. Gray.