Open SyllogismRXS opened 1 year ago
Hi @SyllogismRXS, thanks for the feedback. If collision sensitivity is not set to 0, it will still monitor the joint motor currents (for joint torque estimation) while deducting the contribution from the end-effector force and estimate the chance of collision. There are chances of false estimation since the joint friction and temperature is not accurately modeled. But the joints will not try too hard compared with normal position control.
Could you please provide the log package to us (downloadable from UFACTORY Studio) and specify the date & time when this C31 error occurs? In the mean time, you can try lowering the collision sensitivity (like 1 maybe) setting when doing impedance control and change it back after that.
I am using an xArm6 with xArm's 6-axis force torque sensor. I followed the instructions from https://github.com/xArm-Developer/xarm_ros2/issues/41#issuecomment-1700311544 to do a sensor/load compensation (I used uFactory Studio to run the sensor/load calibration procedure three times and I averaged the results) before putting the xArm6 in impedance control mode via the
/xarm/ft_sensor_cali_load
,/xarm/set_impedance_config
and/xarm/ft_sensor_app_set
services. I verified that the impedance control mode was working properly by lightly pushing up and down on the gripper and I could feel the end-effector moving like a spring.My task is to pick up a flat pencil like object with a robotiq gripper attached to the end of the xArm6. To be extra careful during testing, I placed the object on a layer of foam, so that if the robot tried to drive through the table, the foam would absorb the force. Here is the command sequence that I use to pick up the object:
The impedance control mode does a good job of not pushing through the thick foam and I am able to pick up objects. Also, it doesn't appear that the xArm6 is working any of its joints too hard during this process. However, after testing this procedure about three times, the xArm6 threw an error:
UFACTORY Error detected! Code C31 -> [ Collision Caused Abnormal Joint Current ]
. However, the collision error was thrown when the robot was moving up (not in impedance control mode). Here is the full error from ROS:[move_group-3] [INFO] [1699645753.573201688] [moveit.simple_controller_manager.follow_joint_trajectory_controller_handle]: xarm6_traj_controller started execution [move_group-3] [INFO] [1699645753.573211121] [moveit.simple_controller_manager.follow_joint_trajectory_controller_handle]: Goal request accepted! [ros2_control_node-2] [WARN] [1699645758.551577888] [UFACTORY.RobotHW]: [192.168.1.230] set_servo_angle_j, ret= 1 [ros2_control_node-2] [ERROR] [1699645758.630947838] [UFACTORY.RobotHW]: [192.168.1.230] Robot Mode detected! Mode: 0 [ros2_control_node-2] [ERROR] [1699645759.030304556] [UFACTORY.RobotHW]: [192.168.1.230] UFACTORY Error detected! Code C31 -> [ Collision Caused Abnormal Joint Current ] [ros2_control_node-2] [WARN] [1699645761.710926027] [xarm6_traj_controller]: Aborted due goal_time_tolerance exceeding by 0.517733 seconds [move_group-3] [WARN] [1699645761.773652915] [moveit.simple_controller_manager.follow_joint_trajectory_controller_handle]: Controller 'xarm6_traj_controller' failed with error GOAL_TOLERANCE_VIOLATED: [move_group-3] [WARN] [1699645761.773684209] [moveit_ros.trajectory_execution_manager]: Controller handle xarm6_traj_controller reports status ABORTED
I am worried that the xArm6's impedance control mode is causing the joint motors to work too hard even though the end-effector isn't pushing hard into the table (it's just pushing into some foam right now). Am I missing a step? Is there a different recommended procedure for picking up flat objects on tables?
Thanks!