Skip to content

sudden "motion aborted by reflex" #77

@Drorness

Description

@Drorness

Hello,
I'm experiencing some issues related to reflexive motion aborts in my experimental setup.
I'm running a looped sequence in which the robotic arm moves between 4 to 5 positions using CartesianMotion. In each iteration, the poses are slightly modified—both in position and orientation. The sequence is repeated multiple times.
However, after several iterations, I encounter a ControlException error. It appears to occur unpredictably—at random poses and during different iterations. The error message indicates the motion is being aborted by a reflex due to "cartesian_motion_generator_joint_acceleration_discontinuity".
I would appreciate any insight into the likely causes of this and suggestions on how to ensure trajectory smoothness and avoid such discontinuities.

  • examples error:
Exception has occurred: ControlException
libfranka: Move command aborted: motion aborted by reflex! ["cartesian_motion_generator_joint_acceleration_discontinuity"]
control_command_success_rate: 0.96

franky._franky.ControlException: Motion finished commanded, but the robot is still moving! ["cartesian_motion_generator_acceleration_discontinuity", "cartesian_motion_generator_joint_acceleration_discontinuity"]
control_command_success_rate: 0.97
  • code logic:
standby_pose = CartesianMotion(RobotPose(Affine([x_standby, y_standby, z_standby], normal_orientation)))
stop = CartesianStopMotion(relative_dynamics_factor=0.9)

robot.relative_dynamics_factor = RelativeDynamicsFactor(velocity=0.05, acceleration=0.01, jerk=0.01)
robot.move(standby_pose)

for run in range(runs):
  p1= CartesianMotion(Affine([x1, y1, z1], rot1))
  p2= CartesianMotion(Affine([x2, y2, z2], rot2)) 
  p3= CartesianMotion(Affine([x3, y3, z3], rot3))
  p4= CartesianMotion(Affine([x4, y4, z4], rot4)) 

  robot.move(p1)
  time.sleep(1)
  robot.move(p2)
  robot.relative_dynamics_factor = RelativeDynamicsFactor(velocity=0.001, acceleration=0.05, jerk=0.05)
  robot.move(p3, asynchronous=True)
  
  while (trigger > threshold):
      trigger = getValue()
      time.sleep(0.01)
  
  robot.move(stop)
  robot.join_motion()
  time.sleep(1)
  robot.relative_dynamics_factor = RelativeDynamicsFactor(0.001)
  robot.move(p4)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions