The code presented in this repository is designed for scheduling tasks between a human and a robot and adapting it in case of changes triggered by uncertainties.
Accepted at IEEE IROS24:
Marina Ionova and Jan Kristof Behrens, “CoBOS: Constraint-Based Online Scheduler for Human-Robot Collaboration,” Mar. 27, 2024, arXiv: arXiv:2403.18459. Accessed: Mar. 28, 2024. [Online]. Available: http://arxiv.org/abs/2403.18459
CoBOS: Constraint-Based Online Scheduler for Human-Robot Collaboration by Marina Ionova and Jan Kristof Behrens.
Scheduling is an integer constraint programming problem that is solved by using Google Optimization Tools
Below you can see the animation of the simulation with uncertainty. A rollout with perfect knowledge is here
Create conda environment:
conda create -n msched python=3.10
conda activate msched
pip install -e .
Clone the repository, install pdm (if you haven't done so before) go to the repository root folder and install it via:
pdm install
Before pushing your commits, you can check the code formating with pdm lint
and tests with pdm test
.
To run all experiments prsented in the paper, run the following script (it will run for a few hours)
python src/exp_scripts/run_base_scheduling_exps.py
or just download our files:
sudo apt update
pip3 install gdown
gdown https://drive.google.com/uc?id=1dQ6fqjqmdjptIeFad1utaPkyIB6cPHCj -O sched_exps.zip
unzip sched_exps.zip -d ~/sched_exps
Plot barplot (It is necessary to clarify the path if you have saved the results of the experiments to another location. Default path is ~/sched_exps/base_sched
):
python main_plot.py
options:
- -h, --help Show help message and exit
- --path PATH Path to the experiments result
- --case CASE Add case number (default case is 8)
Run offline simulation:
python main.py [case]
The schedule will be saved in a json file and as an image.
positional arguments:
- case - 1, 2, 3, 4, 5, 6 options:
- -h, --help show help message and exit
- --only_schedule, --no-only_schedule - show only initial schedule
- --save_gt, --no-save_gt - save simulation Gant Chart to file
- --save2file, --no-save2file - save simulation result to file
- --offline_video, --no-offline_video - make video from the simulation
inputs/config.py
- allocation_weights - for case 4-6 you can choose task ration (% of human's task, % of robot's task, % of allocatable tasks)
- n - number of mode in a distribution of phase duration
- mean_min (mean_max) - boundaries for a distribution mean value of phase duration
- deviation_min (deviation_max) - boundaries for a distribution deviation value of phase duration
Case 1: Simple pick and place operation. The robot and the human have fixed tasks assigned, i.e., they pick up an object from a specified location and place it at designated spots. The decisions concern only the ordering of tasks and their exact timing. Timing uncertainties are present. This task contains no dependencies (ND).
Case 2: Collaborative assembly. The robot and the human worker need to coordinate their work together to assemble a set of simple structures. The tasks concerning each structure are subject to ordering constraints. No tasks are allocatable; hence, the cross-schedule dependencies arise (XD).
Case 3: Complex assembly with more parts and dependencies. No task allocation (CD).
Case 4: Same as Task 1 but with the additional freedom to allocate a subset of the tasks freely. This can be used to balance the workload and thus reduce the makespan. The human worker can reject allocatable tasks. However, this also leads to Complex dependencies because multiple task decompositions exist.
Case 5: Same as Task 3 but with allocatable tasks. This makes the dependencies complex (CD) and good schedules harder to establish.
Case 6: Same as task 5 but with allocatable tasks, which leads to complex dependencies (CD).
Case 7: Randomly generated tasks with more tasks, generated dependency graphs, and task allocation options (CD).