robot
A copp.Robot object containing sampled path data, limits, and constraints.
P = copp.solver.copp2_socp.Problem(ROBOT, OBJECTIVES)
P = ...Problem(..., idx_s_interval=[I,J], a_boundary=[A0,AF])
Problem stores a reference to a copp.Robot plus MATLAB-owned objective descriptors, a closed station interval, and endpoint values for \(a = (ds/dt)^2\). It does not copy robot constraints. The Robot must remain live for every solve() call.
Shape convention: idx_s_interval is a \(1 \times 2\) vector [idx_s_start, idx_s_final]. a_boundary is a \(1 \times 2\) vector [a_start, a_final]. Linear objective alpha/beta payloads are column vectors packed from user row/column input; COPP2 requires numel(alpha)=s_len and numel(beta)=s_len-1. solve() returns an s_len-by-1 a profile.
robotA copp.Robot object containing sampled path data, limits, and constraints.
objectivesObjective descriptor or cell array of descriptors created by copp.objective functions.
idx_s_intervalClosed 1-based station interval [idx_s_start, idx_s_final] covered by the problem. Default: []
a_boundaryEndpoint squared-speed values [a_start, a_final] for the selected station interval. Default: [0, 0]
robotReferenced Robot that owns station samples and constraints.
objectivesCell array of MATLAB-owned objective descriptor structs.
objective_countNumber of objective descriptors.
idx_s_intervalClosed 1-based station interval [idx_s_start, idx_s_final].
a_boundaryEndpoint values [a_start, a_final].
s_lenNumber of stations covered by idx_s_interval.
ProblemConstruct and validate a COPP2-SOCP problem descriptor.
ProblemP = copp.solver.copp2_socp.Problem(ROBOT, OBJECTIVES)
P = ...Problem(..., idx_s_interval=[I,J], a_boundary=[A0,AF])
covers all currently stored stations in ROBOT and uses a_boundary=[0,0].
OBJECTIVES may be a single descriptor, a struct array, or a cell array. The usual user-facing spelling is:
objectives = { copp.objective.time(1.0) copp.objective.thermal_energy(0.1, ones(robot.dim,1)) };
uses explicit \(1 \times 2\) closed interval and boundary vectors.
ExampleCommon.setup_path();
ctx = ExampleCommon.second_order_context();
objectives = ExampleCommon.convex_objectives(ctx.dim);
problem = copp.solver.copp2_socp.Problem( ...
ctx.robot, ...
objectives, ...
idx_s_interval=ctx.idx_s_interval, ...
a_boundary=ctx.a_boundary);