Scheduler¶
A task scheduler implemented using mixed integer programming.
Overview¶
This package provides single-robot task scheduling capabilities based on the algorithm presented in:
L. Mudrova and N. Hawes. Task scheduling for mobile robots using interval algebra. In 2015 IEEE International Conference on Robotics and Automation (ICRA 2015), Seattle, Washington, USA, May 2015.
This extends prior work presented in
B. Coltin, M. Veloso, and R. Ventura. Dynamic user task scheduling for mobile robots. In AAAI Workshop on Automated Action Planning for Autonomous Mobile Robots. AAAI, 2011.
Usage¶
If you want your tasks to be executed, then you should use the scheduler
within the scheduled_task_executor
node.
If you wish to use it in a standalone fashion, you can call the
get_schedule
service described below, and demonstrated in the
scheduler/tests/test_scheduler_node.py
.
Libraries¶
The library libscheduler
provides the scheduling functionality
outside of ROS. Use this if you want to include the scheduler in our own
C++ library without using ROS. An example of its usage is provided in
the scheduler_example
executable, compiled from
scheduler/src/main.cpp
.
Nodes¶
scheduler_node
¶
The scheduler_node
provides task scheduling as a ROS service.
Examples of using this service are available in the tests for the
scheduler scheduler/tests/test_scheduler_node.py
.
Services¶
get_schedule
(strands_executive_msgs/GetSchedule)
Given a list of tasks (Task[] tasks
), this service call returns the
order in which they should be executed and the desired execution start
time of each task. Execution order is specified by the return value
uint64[] task_order
which contains the ids of input tasks in the
order they should be executed. Execution times are provided by
time[] execution_times
which is in the same order as task_order
and states the ideal time for task execution assuming all the input
durations to the scheduler are as expected. The DurationMatrix
argument specifies the travel time between task locations. It is a 2D
array (implemented as a list of lists) where
durations[i].durations[j]
specifies the travel time between the end
location of task i
and the start location of task j
.
Parameters¶
~save_problems
(bool
)
If true, the scheduling problems received by the scheduler (via
get_schedule
) are stored into the mongodb_store message
store
collection ‘scheduling_problems’. This allows for later replay via
rosrun scheduler replay_scheduling_problems.py
. Defaults to true.
~scheduler_version
(int
)
Switch the version of the algorithm the scheduler is running. If not specified, the Mudrova and Hawes algorithm is used. If the value 1 specified, then the original Coltin et al algorothm is used.
~output_file
(string
)
Path to a desired output file. If set, output from the scheduler is saved to this file.
~timeout
(int
)
How many seconds to allow the scheduler to run before timing out and returning (still potentially returning a result). The default value is to not have a timeout.
Original page: https://github.com/strands-project/strands_executive/blob/indigo-devel/scheduler/README.md