XArmAPI .emergency_stop() vs .motion_enable(false)

It seems like .emergency_stop() is like a soft emergency stop, where power is still used to command the robot to remain stationary. On the other hand, .motion_enable(false) looks like it accomplishes the same thing as pushing the physical e-stop button on the panel meaning it cuts power and turns on the brakes.

I found a github issue Emergency stop example in API · Issue #13 · xArm-Developer/xArm-CPLUS-SDK · GitHub where another user comes to the same conclusion, but there wasn’t an official response.

Is this a correct understanding?

  • emergency_stop() is same as set_state(4), it will stop the robot and clean all the cache commands.
  • motion_enable(false) will disable the robot joints(motors), but not cut off the power of the robotic arm, the control box still able to communicate with the robotic arm.
  • Press the E-stop button on the control box will cut off the power of the robotic arm, the control box can not communicate with the robotic arm unless you release the E-stop.