Multi-Segment Trajectory Blending#
P7 uses waypoint interfaces to compose adjacent targets into multiple planning segments and can request trajectory blending at internal boundaries. Blending reduces pauses at intermediate waypoints; it is not a separate planning type and does not guarantee that the trajectory passes exactly through internal waypoints.
Waypoints and Planning Segments#
For N waypoints:
- at least 2 waypoints are required;
- the number of planning segments is
N - 1; - the number of blendable internal boundaries is
N - 2; segments[i]configures segmentiand the internal boundary at that segment's end.
Joint waypoints use move_joint_waypoints(), with PTP or OMPL segment types. Cartesian waypoints use
move_end_pose_waypoints(), with PTP, LIN, or OMPL segment types. An arc requires the separate CIRCLE interface and cannot
be constructed through a waypoint circ_is_center field.
Blending Parameters#
| Field | Purpose |
|---|---|
enable_blend |
Whether to request a continuous transition between the current segment endpoint and the next segment start |
min_blend_radius |
Minimum blend radius at the internal boundary, in m; joint waypoints also use an end-effector Cartesian-space radius |
segments |
Per-segment options list; when nonempty, its length must equal len(waypoints) - 1 |
To stop explicitly at an intermediate waypoint, set enable_blend=False on the segment that enters that boundary. This only
means that blending is not requested; it does not specify a dwell time. The current interface has no dwell-time parameter.
The application must check the per-segment count
The current SDK uses per-segment configuration only when the number of segments exactly equals the number of planning
segments. Other nonempty lengths are not rejected; instead, the SDK silently falls back to the top-level options. Before
calling, assert not segments or len(segments) == len(waypoints) - 1.
Blending can fail if the radius is too large, adjacent segments are too short, the geometry is unsuitable, or runtime constraints are not satisfied. The interface does not promise that the actual trajectory reaches the requested radius; do not increase the radius to “guarantee smoothness.” See API Reference for waypoint motion entry points and ArmControlOptions (Control Options) for per-segment parameters and sampling requirements.
Returns and Failures#
blocking=False waits for the sequence-planning result and then returns; the trajectory may still be executing.
blocking=True waits for the sequence-completion criterion. A client timeout or False return does not prove that no
segment was executed, and it cannot cancel accepted segments. Stop sending new sequences, read the FSM, joints, and motor
state, and confirm the actual stopping position. If a stop cannot be confirmed, follow the on-site
physical-emergency-stop procedure.