@@ -42,6 +42,12 @@ MOTION_TYPE_OPTIMOVEJ = 4
4242MOTION_TYPE_OPTIMOVEL = 5
4343MOTION_TYPE_MOVEJ_POSE = 6
4444MOTION_TYPE_MOVEL_JOINT = 7
45+ MOTION_TYPE_MOVEP_JOINT = 8
46+ MOTION_TYPE_MOVEC_JOINT = 9
47+ MOTION_TYPE_MOVEC_JOINT_POSE = 10
48+ MOTION_TYPE_MOVEC_POSE_JOINT = 11
49+ MOTION_TYPE_OPTIMOVEJ_POSE = 12
50+ MOTION_TYPE_OPTIMOVEL_JOINT = 13
4551MOTION_TYPE_SPLINE = 51
4652TRAJECTORY_DATA_DIMENSION = 3 * 6 + 1
4753
@@ -604,11 +610,36 @@ thread trajectoryThread():
604610 # reset old acceleration
605611 spline_qdd = [0, 0, 0, 0, 0, 0]
606612 spline_qd = [0, 0, 0, 0, 0, 0]
613+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEP_JOINT:
614+ acceleration = raw_point[13] / MULT_jointstate
615+ velocity = raw_point[7] / MULT_jointstate
616+ movep(q, a = acceleration, v = velocity, r = blend_radius)
607617
608- elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC:
618+ # reset old acceleration
619+ spline_qdd = [0, 0, 0, 0, 0, 0]
620+ spline_qd = [0, 0, 0, 0, 0, 0]
621+
622+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC or
623+ raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC_JOINT or
624+ raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC_POSE_JOINT or
625+ raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC_JOINT_POSE:
609626 local v = [raw_point[7], raw_point[8], raw_point[9], raw_point[10], raw_point[11], raw_point[12]] / MULT_jointstate
610- via = p[v[0], v[1], v[2], v[3], v[4], v[5]]
611- target = p[q[0], q[1], q[2], q[3], q[4], q[5]]
627+ if raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC:
628+ via = p[v[0], v[1], v[2], v[3], v[4], v[5]]
629+ target = p[q[0], q[1], q[2], q[3], q[4], q[5]]
630+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC_JOINT:
631+ via = v
632+ target = q
633+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC_POSE_JOINT:
634+ via = v
635+ target = p[q[0], q[1], q[2], q[3], q[4], q[5]]
636+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_MOVEC_JOINT_POSE:
637+ via = p[v[0], v[1], v[2], v[3], v[4], v[5]]
638+ target = q
639+ end
640+
641+ textmsg(str_cat(str_cat("MOVEC via: ", via), str_cat(" target: ", target)))
642+
612643 acceleration = raw_point[13] / MULT_jointstate
613644 velocity = raw_point[14] / MULT_jointstate
614645 mode = raw_point[15] / MULT_jointstate
@@ -643,14 +674,22 @@ thread trajectoryThread():
643674 end
644675
645676 # OptimoveJ point
646- elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEJ:
677+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEJ or raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEJ_POSE :
647678 acceleration = raw_point[13] / MULT_jointstate
648679 velocity = raw_point[7] / MULT_jointstate
649680 {% if ROBOT_SOFTWARE_VERSION >= v5.21.0 %}
650681 {% if ROBOT_SOFTWARE_VERSION < v6.0.0 %}
651- optimovej(q, a = acceleration, v = velocity, r = blend_radius)
682+ if raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEJ:
683+ optimovej(q, a = acceleration, v = velocity, r = blend_radius)
684+ else:
685+ optimovej(p[q[0], q[1], q[2], q[3], q[4], q[5]], a = acceleration, v = velocity, r = blend_radius)
686+ end
652687 {% elif ROBOT_SOFTWARE_VERSION >= v10.8.0 %}
653- optimovej(q, a = acceleration, v = velocity, r = blend_radius)
688+ if raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEJ:
689+ optimovej(q, a = acceleration, v = velocity, r = blend_radius)
690+ else:
691+ optimovej(p[q[0], q[1], q[2], q[3], q[4], q[5]], a = acceleration, v = velocity, r = blend_radius)
692+ end
654693 {% else %}
655694 popup("Optimovej is only supported from software 10.8.0 and upwards.", error=True, blocking=False)
656695 {% endif %}
@@ -671,15 +710,23 @@ thread trajectoryThread():
671710 spline_qd = [0, 0, 0, 0, 0, 0]
672711
673712 # OptimoveL point
674- elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEL:
713+ elif raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEL or raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEL_JOINT :
675714 acceleration = raw_point[13] / MULT_jointstate
676715 velocity = raw_point[7] / MULT_jointstate
677716
678717 {% if ROBOT_SOFTWARE_VERSION >= v5.21.0 %}
679718 {% if ROBOT_SOFTWARE_VERSION < v6.0.0 %}
680- optimovel(p[q[0], q[1], q[2], q[3], q[4], q[5]], a = acceleration, v = velocity, r = blend_radius)
719+ if raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEL:
720+ optimovel(p[q[0], q[1], q[2], q[3], q[4], q[5]], a = acceleration, v = velocity, r = blend_radius)
721+ else:
722+ optimovel(q, a = acceleration, v = velocity, r = blend_radius)
723+ end
681724 {% elif ROBOT_SOFTWARE_VERSION >= v10.8.0 %}
682- optimovel(p[q[0], q[1], q[2], q[3], q[4], q[5]], a = acceleration, v = velocity, r = blend_radius)
725+ if raw_point[INDEX_POINT_TYPE] == MOTION_TYPE_OPTIMOVEL:
726+ optimovel(p[q[0], q[1], q[2], q[3], q[4], q[5]], a = acceleration, v = velocity, r = blend_radius)
727+ else:
728+ optimovel(q, a = acceleration, v = velocity, r = blend_radius)
729+ end
683730 {% else %}
684731 popup("Optimovel is only supported from software 10.8.0 and upwards.", error=True, blocking=False)
685732 {% endif %}
0 commit comments