executive_smach icon indicating copy to clipboard operation
executive_smach copied to clipboard

SMACH for multi-agent systems

Open AlexisTM opened this issue 6 years ago • 1 comments

I have a multi-agent application which is like a big state machine: Parcel sorting.

To deliver parcels, we are currently using Actionlib to provide tasks to the UGVs, and the tasks are defined by a simple state machine.

I just bumped into SMACH and wonder if it is suitable for multi-agent systems like my application. For one UGV, it would be super simple to use SMACH, but I do not see how I could use it for multiple agents.

The state machine for each UGVs looks like:

START
   * INIT
INIT
   * GET_PARCEL
GET_PARCEL
   * when parcel_put: SCAN_PARCEL
SCAN_PARCEL
   * when parcel_scanned DELIVER_PARCEL
DELIVER_PARCEL
   * when parcel_removed: GET_PARCEL
   * if timeout: EMERGENCY_GATE
EMERGENCY_GATE
   * when parcel_removed: GET_PARCEL

AlexisTM avatar Mar 08 '18 13:03 AlexisTM

Each UGV should be able to run it's own state machine. Even if all state machines are running on the same roscore, as long as they run in different namespaces I think this should be fine.

LoyVanBeek avatar Dec 03 '19 09:12 LoyVanBeek