Teer, which stands for task-execution environment for robotics, is a Python library proposing the use of co-routines (called tasks) to implement executives. Teer is an alternative to executives based on state machines such as smach. Teer provides the following features:
- Tasks are written as sequential code in standard Python.
- Tasks can wait for a certain duration, for conditions to become true or for the termination of other tasks.
- Tasks can create new tasks and kill other tasks.
- Tasks can pause or resume other tasks.
Tasks are implemented as continuations (co-routines) using the Python yield keyword.
- Conditions are evaluated as rarely as possible, avoiding regular polling of their expressions.
Waits use rospy.Time and rospy.Timer.
Compared to state-machines, teer allows to maintain sequential code for sequential actions, using multiple lightweight tasks to implement parallel flows of execution. Compared to multi-threading, the cooperative aspect of co-routines removes synchronisation hazards.
Installing teer is easy, just clone the git source somewhere in your ROS_PACKAGE_PATH:
git clone --recursive git://github.com/ethz-asl/executive_teer.git
The example package provides easy-to-understand examples.
The tutorials page contains tutorials to get you up to speed building and running your own teer-powered applications.
The documentation page provides an overview of the concepts used in teer.
The ChangeList shows the changes.
Report a Bug
You can report a bug on the ROS integration of teer on the stack's bug tracker.
If you think the bug is in teer itself, please use its own bug tracker.