-
Notifications
You must be signed in to change notification settings - Fork 27
Description
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)