copp.solver.copp3_socp.Problem

COPP3-SOCP problem descriptor.

Syntax

obj = copp.solver.copp3_socp.Problem(robot, objectives, a_linearization)
obj = copp.solver.copp3_socp.Problem(robot, objectives, a_linearization, idx_s_start=idx_s_start, a_boundary=a_boundary, b_boundary=b_boundary, num_stationary_max=num_stationary_max, a_linearization_floor=a_linearization_floor)

Description

This extends the shared TOPP3 descriptor with MATLAB-owned objective descriptors. Construction does not mutate native caches; solve() performs third-order linearization lazily.

Shape convention: a_linearization is stored as an s_len-by-1 column by the base TOPP3 descriptor. Linear objective alpha and beta are stored as columns and both must have length s_len for COPP3. Torque objective normalize vectors must have length robot.dim and are stored as \(\mathrm{dim} \times 1\) columns.

Input Arguments

robot

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

objectives

Objective descriptor or cell array of descriptors created by copp.objective functions.

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

objectives

Cell array of MATLAB objective descriptor structs.

Methods

Problem

Construct and validate a COPP3-SOCP problem descriptor.

Method Details

Problem

Syntax

obj = copp.solver.copp3_socp.Problem(robot, objectives, a_linearization)
obj = copp.solver.copp3_socp.Problem(robot, objectives, a_linearization, idx_s_start=idx_s_start, a_boundary=a_boundary, b_boundary=b_boundary, num_stationary_max=num_stationary_max, a_linearization_floor=a_linearization_floor)

Examples

MATLAB
ExampleCommon.setup_path();
ctx = ExampleCommon.third_order_context();
a_seed = ExampleCommon.solve_topp2_seed(ctx.robot, ctx.n);
objectives = ExampleCommon.convex_objectives(ctx.dim);
problem = copp.solver.copp3_socp.Problem( ...
    ctx.robot, ...
    objectives, ...
    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.copp3_socp