Show EOL distros:
Package Summary
The executive_smach stack contains the SMACH library, together with tools for introspection and a ROS integration package.
- Author: Jon Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: executive_smach-1.0)
Package Summary
The executive_smach stack contains the SMACH library, together with tools for introspection and a ROS integration package.
- Author: Jon Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: fuerte-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer: Jonathan Bohren <jbo AT jhu DOT edu>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: groovy-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer: Jonathan Bohren <jbo AT jhu DOT edu>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer status: maintained
- Maintainer: Isaac I. Y. Saito <gm130s AT gmail DOT com>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: indigo-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer status: maintained
- Maintainer: Isaac I. Y. Saito <gm130s AT gmail DOT com>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: indigo-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer status: maintained
- Maintainer: Isaac I. Y. Saito <gm130s AT gmail DOT com>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: indigo-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer status: maintained
- Maintainer: Isaac I. Y. Saito <gm130s AT gmail DOT com>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: indigo-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer status: maintained
- Maintainer: Isaac I. Y. Saito <gm130s AT gmail DOT com>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: indigo-devel)
Package Summary
This metapackage depends on the SMACH library and ROS SMACH integration packages.
- Maintainer status: maintained
- Maintainer: Isaac I. Y. Saito <gm130s AT gmail DOT com>
- Author: Jonathan Bohren, Wim Meeussen
- License: BSD
- Source: git https://github.com/ros/executive_smach.git (branch: noetic-devel)
About SMACH
When should I use SMACH?
SMACH is useful when you want a robot to execute some complex plan, where all possible states and state transitions can be described explicitly. This basically takes the hacking out of hacking together different modules to make systems like mobile robotic manipulators do interesting things.
- Fast prototyping: The straightforward Python-based SMACH syntax makes it easy to quickly prototype a state machine and start running it.
Complex state machines: SMACH allows you to design, maintain and debug large, complex hierarchical state machines. You can find an example of a complex hierarchical state machine here.
Introspection: SMACH gives you full introspection in your state machines, state transitions, data flow, etc. See the smach_viewer for more details.
When should I NOT use SMACH?
- Unstructured tasks: SMACH will fall short as the scheduling of your task becomes less structured.
Low-level systems: SMACH is not meant to be used as a state machine for low-level systems that require high efficiency, SMACH is a task-level architecture.
Smash: Do not use SMACH when you want to smash something, for that use smash.
Is SMACH only a finite state machine library?
You can build a finite state machine using SMACH, but SMACH can do much more. SMACH is a library for task-level execution and coordination, and provides several types of "state containers". One such container, is a finite state machine, but this container can also be a state in another container. See the tutorials page for a list of containers and states built into SMACH.
Documentation
The documentation page provides an overview of the concepts used in SMACH.
The tutorials page contains an extensive set of tutorials to get you up to speed building and running your own state machines.
Additional State Types
See AdditionalStateTypes for SMACH state classes with a variety of additional behaviors.
Examples
On the tutorials page you can find a number of easy examples. But if you are looking for some 'real' examples running SMACH:
PR2 Plugs Itself In. This is probably the most extensive example of SMACH usage to date. pr2_plugs pr2_plugs_gazebo_demo
PR2 Opens Doors pr2_doors pr2_doors_gazebo_demo
Report a Bug
<<TracLink(ros-pkg executive_smach)>>