copp.solver.topp3.Problem

Shared TOPP3 problem descriptor.

Syntax

P = copp.solver.topp3.Problem(ROBOT, A_LINEARIZATION)

Description

This descriptor is shared by solver.topp3_lp, solver.topp3_socp, and COPP3 facades that inherit from it. Solver-specific Problem classes are convenience facades for readability; they are not strict namespace gates. The shared descriptor stores a borrowed Robot reference, an owned a-linearization profile, and boundary/stationary metadata. The constructor only validates and copies MATLAB data; it does not linearize third-order constraints.

Shape convention: a_linearization may be a row or column vector but is stored as an s_len-by-1 column. a_boundary and b_boundary are \(1 \times 2\) vectors. num_stationary_max is a scalar or \(1 \times 2\) vector [start, end]. TOPP3 and COPP3 solve() functions return Profile3rd objects whose a and b fields are s_len-by-1 double columns.

Lazy linearization: TOPP3-LP/SOCP solve() calls pass this descriptor to the native solver. The native solver linearizes third-order constraints at solve time and mutates the Robot's internal third-order linearized-constraint cache. Reusing the same Robot with a different a_linearization is valid, but the most recent solve determines the native cache contents.

Input Arguments

robot

A copp.Robot object containing sampled path data, limits, and constraints.

a_linearization

Seed a(s) profile used to linearize third-order constraints.

Name-Value Arguments

idx_s_start

1-based start station for third-order problems. The covered interval runs from this station through the stored profile length. Default: 1

a_boundary

Endpoint squared-speed values [a_start, a_final] for the selected station interval. Default: [0, 0]

b_boundary

Endpoint path-acceleration values [b_start, b_final] for third-order profiles. Default: [0, 0]

num_stationary_max

Maximum number of stationary nodes allowed by the third-order profile descriptor. Default: 1

a_linearization_floor

Positive floor applied to a_linearization when forming third-order linearization data. Default: 1.0e-10

Properties

robot

Referenced Robot that owns station samples and constraints.

idx_s_start

Public 1-based first station covered by this problem.

idx_s_final

Public 1-based final station covered by this problem.

s_len

Number of stations covered by a_linearization.

Methods

Problem

Construct a shared TOPP3 problem descriptor.

Method Details

Problem

Syntax

P = copp.solver.topp3.Problem(ROBOT, A_LINEARIZATION)

covers numel(A_LINEARIZATION) stations starting at station 1 and uses zero a/b endpoint values. A_LINEARIZATION may be \(1 \times N\) or \(N \times 1\) and is stored as an \(N \times 1\) column.

Name-value options: idx_s_start: Public 1-based first station. Defaults to 1. a_boundary: \(1 \times 2\) nonnegative endpoint values [a_start, a_final]. b_boundary: \(1 \times 2\) endpoint accelerations [b_start, b_final]. num_stationary_max: Scalar or [start, end] nonnegative integer stationary cap. a_linearization_floor: Positive finite floor forwarded to the native solver.

Examples

MATLAB
ExampleCommon.setup_path();
ctx = ExampleCommon.third_order_context();
a_seed = ExampleCommon.solve_topp2_seed(ctx.robot, ctx.n);
problem = copp.solver.topp3.Problem( ...
    ctx.robot, ...
    a_seed, ...
    idx_s_start=1, ...
    a_boundary=ctx.a_boundary, ...
    b_boundary=ctx.b_boundary, ...
    num_stationary_max=ctx.num_stationary_max);

See Also

copp.solver.topp3