A scheduler to manage a multi tool dual arm robot while avoiding arm-to-arm collisions; considering complex side constraints; and optimizing for cyclic schedules.