A system (200, 300) for controlling a robot (102, 204, 400, 500) in the presence of a moving object, comprising: a three dimensional camera (104, 210, 336); a processor (302, 348); and a system memory (308, 354, 700) comprising code that, when executed by the processor, cause said processor to: collect a plurality of frames (310, 602, 706) from the three dimensional camera; analyze a frame (212, 310, 604, 708) to identify connected objects, wherein analyzing the frame comprises forming a group comprising proximate voxels to form the connected objects; compare a location of the connected object in the frame to a location of the connected object in a previous frame to determine motion vectors for the proximate voxels; compare the frame to a previous frame (212, 312, 606, 708) to identify a moving connected object, MCO, comprising the proximate voxels, wherein the motion vectors for the proximate voxels are consistent; determine if (314, 612, 710) the MCO is not expected to be present; and, if so, send (214, 314, 614-622, 712) a signal to a robot controller (218, 318) to take an action; and communicate a slow motion signal to the robot (102, 204, 400, 500) if the unexpected MCO enters a warning region, wherein the robot (102, 204, 400, 500) is moved proximate to the unexpected MCO at a slow speed to allow interaction between the unexpected MCO and the robot (102, 204, 400, 500). a three dimensional camera (104, 210, 336); a processor (302, 348); and a system memory (308, 354, 700) comprising code that, when executed by the processor, cause said processor to: collect a plurality of frames (310, 602, 706) from the three dimensional camera; analyze a frame (212, 310, 604, 708) to identify connected objects, wherein analyzing the frame comprises forming a group comprising proximate voxels to form the connected objects; compare a location of the connected object in the frame to a location of the connected object in a previous frame to determine motion vectors for the proximate voxels; compare the frame to a previous frame (212, 312, 606, 708) to identify a moving connected object, MCO, comprising the proximate voxels, wherein the motion vectors for the proximate voxels are consistent; determine if (314, 612, 710) the MCO is not expected to be present; and, if so, send (214, 314, 614-622, 712) a signal to a robot controller (218, 318) to take an action; and communicate a slow motion signal to the robot (102, 204, 400, 500) if the unexpected MCO enters a warning region, wherein the robot (102, 204, 400, 500) is moved proximate to the unexpected MCO at a slow speed to allow interaction between the unexpected MCO and the robot (102, 204, 400, 500). collect a plurality of frames (310, 602, 706) from the three dimensional camera; analyze a frame (212, 310, 604, 708) to identify connected objects, wherein analyzing the frame comprises forming a group comprising proximate voxels to form the connected objects; compare a location of the connected object in the frame to a location of the connected object in a previous frame to determine motion vectors for the proximate voxels; compare the frame to a previous frame (212, 312, 606, 708) to identify a moving connected object, MCO, comprising the proximate voxels, wherein the motion vectors for the proximate voxels are consistent; determine if (314, 612, 710) the MCO is not expected to be present; and, if so, send (214, 314, 614-622, 712) a signal to a robot controller (218, 318) to take an action; and communicate a slow motion signal to the robot (102, 204, 400, 500) if the unexpected MCO enters a warning region, wherein the robot (102, 204, 400, 500) is moved proximate to the unexpected MCO at a slow speed to allow interaction between the unexpected MCO and the robot (102, 204, 400, 500).