A method for coordinating movements of a plurality of robots (202, 204, 206) configured to operate in a shared workspace, comprising: for each robot in the plurality of robots: identifying a set of tasks assigned to the robot; generating a plurality of candidate motion plans, each candidate motion plan representing a different sequence of motions for the robot to execute in performing the set of tasks; for each candidate motion plan: (i) generating a 3D model that represents a volume of space through which the robot would move in executing a sequence of motions represented by the candidate motion plan, and (ii) determining a score for the candidate motion plan, the score based at least on a characteristic of the sequence of motions represented by the candidate motion plan or a characteristic of the volume of space represented by the 3D model for the candidate motion plan; determining, using the 3D models corresponding to the candidate motions plans of the plurality of robots, conflicts between candidate motion plans of different robots in the plurality of robots; selecting, for each robot in the plurality of robots, a motion plan from the plurality of candidate motion plans for the robot based on the score for the selected motion plan and determined conflicts between candidate motion plans for the robot and candidate motion plans of other robots; and providing the selected motion plans for execution by the plurality of robots. for each robot in the plurality of robots: identifying a set of tasks assigned to the robot; generating a plurality of candidate motion plans, each candidate motion plan representing a different sequence of motions for the robot to execute in performing the set of tasks; for each candidate motion plan: (i) generating a 3D model that represents a volume of space through which the robot would move in executing a sequence of motions represented by the candidate motion plan, and (ii) determining a score for the candidate motion plan, the score based at least on a characteristic of the sequence of motions represented by the candidate motion plan or a characteristic of the volume of space represented by the 3D model for the candidate motion plan; identifying a set of tasks assigned to the robot; generating a plurality of candidate motion plans, each candidate motion plan representing a different sequence of motions for the robot to execute in performing the set of tasks; for each candidate motion plan: (i) generating a 3D model that represents a volume of space through which the robot would move in executing a sequence of motions represented by the candidate motion plan, and (ii) determining a score for the candidate motion plan, the score based at least on a characteristic of the sequence of motions represented by the candidate motion plan or a characteristic of the volume of space represented by the 3D model for the candidate motion plan; (i) generating a 3D model that represents a volume of space through which the robot would move in executing a sequence of motions represented by the candidate motion plan, and (ii) determining a score for the candidate motion plan, the score based at least on a characteristic of the sequence of motions represented by the candidate motion plan or a characteristic of the volume of space represented by the 3D model for the candidate motion plan; determining, using the 3D models corresponding to the candidate motions plans of the plurality of robots, conflicts between candidate motion plans of different robots in the plurality of robots; selecting, for each robot in the plurality of robots, a motion plan from the plurality of candidate motion plans for the robot based on the score for the selected motion plan and determined conflicts between candidate motion plans for the robot and candidate motion plans of other robots; and providing the selected motion plans for execution by the plurality of robots.