A system for robot and human collaboration, the system comprising: a multi-axis robot; one or more torque sensors, each torque sensor being configured to measure a torque about a respective axis of the multi-axis robot; and a controller comprising a motor control module, wherein the controller is configured to: receive one or more torque measurements taken by the one or more torque sensors; compare the one or more torque measurements or a function of the one or more torque measurements to a threshold value and an upper limit maximum torque threshold; responsive to determining that the one or more torque measurements or a function of the one or more torque measurements is below the threshold value, control the multi-axis robot so as to cause the one or more torque measurements or the function of the one or more torque measurements to increase to a higher value, the higher value being below the threshold value, wherein controlling the multi-axis robot comprises at least one of increasing a speed of movement of the multi-axis robot and adjusting a path for the multi-axis robot; and wherein the controller is configured to: determine that the multi-axis robot cannot achieve a predetermined task without the one or more torque measurements or the function of the one or more torque measurements exceeding the threshold value; responsive to the determination, iteratively: increase the threshold value by a predetermined amount; and determine whether the multi-axis robot is able to achieve the predetermined task without the one or more torque measurements or a function of the one or more torque measurements exceeding the increased threshold value, wherein the iteration is performed until the controller determines that the multi-axis robot can achieve the predetermined task without the one or more torque measurements or a function of the one or more torque measurements exceeding the current threshold value; and thereafter, control the multi-axis robot based on the current threshold value; and wherein the system further comprises responsive to determining that the one or more torque measurements or a function of the one or more torque measurements is above the upper limit maximum torque threshold, decrease, by the motor control module, a speed of movement of the multi-axis robot. a multi-axis robot; one or more torque sensors, each torque sensor being configured to measure a torque about a respective axis of the multi-axis robot; and a controller comprising a motor control module, wherein the controller is configured to: receive one or more torque measurements taken by the one or more torque sensors; compare the one or more torque measurements or a function of the one or more torque measurements to a threshold value and an upper receive one or more torque measurements taken by the one or more torque sensors; compare the one or more torque measurements or a function of the one or more torque measurements to a threshold value and an upper limit maximum torque threshold; responsive to determining that the one or more torque measurements or a function of the one or more torque measurements is below the threshold value, control the multi-axis robot so as to cause the one or more torque measurements or the function of the one or more torque measurements to increase to a higher value, the higher value being below the threshold value, wherein controlling the multi-axis robot comprises at least one of increasing a speed of movement of the multi-axis robot and adjusting a path for the multi-axis robot; and wherein the controller is configured to: determine that the multi-axis robot cannot achieve a predetermined task without the one or more torque measurements or the function of the one or more torque measurements exceeding the threshold value; responsive to the determination, iteratively: increase the threshold value by a predetermined amount; and determine whether the multi-axis robot is able to achieve the predetermined task without the one or more torque measurements or a function of the one or more torque measurements exceeding the increased threshold value, wherein the iteration is performed until the controller determines that the multi-axis robot can achieve the predetermined task without the one or more torque measurements or a function of the one or more torque measurements exceeding the current threshold value; and thereafter, control the multi-axis robot based on the current threshold value; and wherein the system further comprises responsive to determining that the one or more torque measurements or a function of the one or more torque measurements is above the upper limit maximum torque threshold, decrease, by the motor control module, a speed of movement of the multi-axis robot. increase the threshold value by a predetermined amount; and determine whether the multi-axis robot is able to achieve the predetermined task without the one or more torque measurements or a function of the one or more torque measurements exceeding the increased threshold value, wherein the iteration is performed until the controller determines that the multi-axis robot can achieve the predetermined task without the one or more torque measurements or a function of the one or more torque measurements exceeding the current threshold value; and thereafter, control the multi-axis robot based on the current threshold value; and wherein the system further comprises responsive to determining that the one or more torque measurements or a function of the one or more torque measurements is above the upper limit maximum torque threshold, decrease, by the motor control module, a speed of movement of the multi-axis robot.