COPP C ABI
C interface for COPP trajectory optimization
Loading...
Searching...
No Matches
robot.h
Go to the documentation of this file.
1#ifndef COPP_ROBOT_H
2#define COPP_ROBOT_H
3
4/*
5 * Generated by bindings/c/scripts/generate_headers.ps1.
6 * Do not edit by hand; update src/ffi/c and regenerate.
7 */
8
14
15#include <stddef.h>
16#include "copp/core.h"
17#include "copp/path.h"
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
27
35typedef struct CoppRobot CoppRobot;
36
46typedef enum CoppStatus (*CoppInverseDynamicsFn)(void *user_data,
47 size_t dim,
48 const double *q,
49 const double *dq,
50 const double *ddq,
51 double *tau);
52
64enum CoppStatus copp_robot_create(size_t dim, size_t capacity, struct CoppRobot **out_robot);
65
102 CoppInverseDynamicsFn inverse_dynamics,
103 void *inverse_dynamics_user_data);
104
115
127
141 struct CoppSliceF64 amax,
142 size_t idx_s);
143
151enum CoppStatus copp_robot_dim(const struct CoppRobot *robot, size_t *out_dim);
152
160enum CoppStatus copp_robot_len(const struct CoppRobot *robot, size_t *out_len);
161
169enum CoppStatus copp_robot_capacity(const struct CoppRobot *robot, size_t *out_capacity);
170
178enum CoppStatus copp_robot_is_empty(const struct CoppRobot *robot, bool *out_is_empty);
179
189enum CoppStatus copp_robot_idx_s_start(const struct CoppRobot *robot, size_t *out_idx_s_start);
190
200enum CoppStatus copp_robot_idx_s_end(const struct CoppRobot *robot, size_t *out_idx_s_end);
201
210 size_t *out_amax_rows,
211 size_t *out_acc_rows,
212 size_t *out_jerk_rows);
213
221enum CoppStatus copp_robot_get_s(const struct CoppRobot *robot, size_t idx_s, double *out_s);
222
230enum CoppStatus copp_robot_get_amax(const struct CoppRobot *robot, size_t idx_s, double *out_amax);
231
242enum CoppStatus copp_robot_s_vec(const struct CoppRobot *robot,
243 size_t idx_s_from,
244 size_t idx_s_to,
245 struct CoppVecF64 *out_s);
246
257enum CoppStatus copp_robot_amax_vec(const struct CoppRobot *robot,
258 size_t idx_s_from,
259 size_t idx_s_to,
260 struct CoppVecF64 *out_amax);
261
273 size_t idx_s,
274 struct CoppMatrixF64 *out_acc_a,
275 struct CoppMatrixF64 *out_acc_b,
276 struct CoppMatrixF64 *out_acc_max);
277
289 size_t idx_s,
290 struct CoppMatrixF64 *out_jerk_a,
291 struct CoppMatrixF64 *out_jerk_b,
292 struct CoppMatrixF64 *out_jerk_c,
293 struct CoppMatrixF64 *out_jerk_d,
294 struct CoppMatrixF64 *out_jerk_max);
295
309 size_t idx_s,
310 struct CoppMatrixF64 *out_jerk_a_linear,
311 struct CoppMatrixF64 *out_jerk_b,
312 struct CoppMatrixF64 *out_jerk_c,
313 struct CoppMatrixF64 *out_jerk_max_linear);
314
324enum CoppStatus copp_robot_clear_constraints(struct CoppRobot *robot, bool keep_idx_s);
325
332enum CoppStatus copp_robot_pop_front_n(struct CoppRobot *robot, size_t n_cols);
333
340enum CoppStatus copp_robot_pop_back_n(struct CoppRobot *robot, size_t n_cols);
341
348enum CoppStatus copp_robot_pop_front_until(struct CoppRobot *robot, size_t idx_s_cut);
349
356enum CoppStatus copp_robot_pop_back_until(struct CoppRobot *robot, size_t idx_s_cut);
357
381 const struct CoppPath *path,
382 size_t idx_s_from,
383 size_t idx_s_to);
384
405 const struct CoppPath *path,
406 size_t idx_s_from,
407 size_t idx_s_to);
408
426 size_t idx_s,
427 struct CoppMatrixViewF64 q,
428 struct CoppMatrixViewF64 dq,
429 struct CoppMatrixViewF64 ddq);
430
444 size_t idx_s,
445 struct CoppMatrixViewF64 q,
446 struct CoppMatrixViewF64 dq,
447 struct CoppMatrixViewF64 ddq,
448 struct CoppMatrixViewF64 dddq);
449
466 size_t idx_s,
467 struct CoppMatrixViewF64 amax);
468
485 size_t idx_s,
486 struct CoppMatrixViewF64 acc_a,
487 struct CoppMatrixViewF64 acc_b,
488 struct CoppMatrixViewF64 acc_max);
489
506 size_t idx_s,
507 struct CoppMatrixViewF64 jerk_a,
508 struct CoppMatrixViewF64 jerk_b,
509 struct CoppMatrixViewF64 jerk_c,
510 struct CoppMatrixViewF64 jerk_d,
511 struct CoppMatrixViewF64 jerk_max);
512
540 size_t start_idx_s,
541 size_t len,
542 struct CoppSliceF64 velocity_max,
543 struct CoppSliceF64 velocity_min);
544
560 size_t start_idx_s,
561 struct CoppMatrixViewF64 velocity_max,
562 struct CoppMatrixViewF64 velocity_min);
563
576 size_t start_idx_s,
577 size_t len,
578 struct CoppSliceF64 acceleration_max,
579 struct CoppSliceF64 acceleration_min);
580
596 size_t start_idx_s,
597 struct CoppMatrixViewF64 acceleration_max,
598 struct CoppMatrixViewF64 acceleration_min);
599
636 size_t start_idx_s,
637 size_t len,
638 struct CoppSliceF64 torque_max,
639 struct CoppSliceF64 torque_min);
640
664 size_t start_idx_s,
665 struct CoppMatrixViewF64 torque_max,
666 struct CoppMatrixViewF64 torque_min);
667
699 size_t start_idx_s,
700 size_t len,
701 struct CoppSliceF64 jerk_max,
702 struct CoppSliceF64 jerk_min);
703
723 size_t start_idx_s,
724 struct CoppMatrixViewF64 jerk_max,
725 struct CoppMatrixViewF64 jerk_min);
726
736void copp_robot_free(struct CoppRobot *robot);
737
739
740#ifdef __cplusplus
741}
742#endif
743
744#endif /* COPP_ROBOT_H */
Core status, memory, matrix, and shared solver option types.
CoppStatus
C ABI status code returned by COPP FFI functions.
Definition core.h:34
struct CoppPath CoppPath
Opaque C handle for a library-owned Path.
Definition path.h:34
enum CoppStatus copp_robot_clear_constraints(struct CoppRobot *robot, bool keep_idx_s)
Clear all logical constraints stored in the robot.
enum CoppStatus copp_robot_get_s(const struct CoppRobot *robot, size_t idx_s, double *out_s)
Read one station value s[idx_s] from the robot constraint buffer.
enum CoppStatus(* CoppInverseDynamicsFn)(void *user_data, size_t dim, const double *q, const double *dq, const double *ddq, double *tau)
C callback for inverse dynamics.
Definition robot.h:46
enum CoppStatus copp_add_axial_torque_limits_matrix(struct CoppRobot *robot, size_t start_idx_s, struct CoppMatrixViewF64 torque_max, struct CoppMatrixViewF64 torque_min)
Add station-varying axial torque limits over an existing robot interval.
enum CoppStatus copp_robot_pop_front_until(struct CoppRobot *robot, size_t idx_s_cut)
Remove front stations so the kept window starts at idx_s_cut or later.
enum CoppStatus copp_robot_jerk_constraints_at(const struct CoppRobot *robot, size_t idx_s, struct CoppMatrixF64 *out_jerk_a, struct CoppMatrixF64 *out_jerk_b, struct CoppMatrixF64 *out_jerk_c, struct CoppMatrixF64 *out_jerk_d, struct CoppMatrixF64 *out_jerk_max)
Export nonlinear third-order constraint rows at one station.
enum CoppStatus copp_robot_capacity(const struct CoppRobot *robot, size_t *out_capacity)
Return the allocated station capacity of the robot constraint buffer.
struct CoppRobot CoppRobot
Opaque C handle for a library-owned robot and constraint buffer.
Definition robot.h:35
enum CoppStatus copp_robot_s_vec(const struct CoppRobot *robot, size_t idx_s_from, size_t idx_s_to, struct CoppVecF64 *out_s)
Export station values over [idx_s_from, idx_s_to).
void copp_robot_free(struct CoppRobot *robot)
Release a robot handle created by copp_robot_create.
enum CoppStatus copp_robot_amax_substitute(struct CoppRobot *robot, struct CoppSliceF64 amax, size_t idx_s)
Overwrite first-order bounds from a profile.
enum CoppStatus copp_robot_set_q_3rd(struct CoppRobot *robot, size_t idx_s, struct CoppMatrixViewF64 q, struct CoppMatrixViewF64 dq, struct CoppMatrixViewF64 ddq, struct CoppMatrixViewF64 dddq)
Write third-order path derivatives into an existing robot station interval.
enum CoppStatus copp_add_raw_constraint_1st(struct CoppRobot *robot, size_t idx_s, struct CoppMatrixViewF64 amax)
Add raw first-order constraints over an existing robot station interval.
enum CoppStatus copp_robot_pop_front_n(struct CoppRobot *robot, size_t n_cols)
Remove n_cols logical stations from the front of the robot buffer.
enum CoppStatus copp_add_axial_acceleration_limits(struct CoppRobot *robot, size_t start_idx_s, size_t len, struct CoppSliceF64 acceleration_max, struct CoppSliceF64 acceleration_min)
Add broadcast axial acceleration limits over an existing robot station interval.
enum CoppStatus copp_robot_dim(const struct CoppRobot *robot, size_t *out_dim)
Return the robot/path dimension stored in a robot handle.
enum CoppStatus copp_robot_set_q_2nd(struct CoppRobot *robot, size_t idx_s, struct CoppMatrixViewF64 q, struct CoppMatrixViewF64 dq, struct CoppMatrixViewF64 ddq)
Write second-order path derivatives into an existing robot station interval.
enum CoppStatus copp_robot_get_amax(const struct CoppRobot *robot, size_t idx_s, double *out_amax)
Read one first-order upper bound amax[idx_s] from the robot.
enum CoppStatus copp_robot_append_s(struct CoppRobot *robot, struct CoppSliceF64 s)
Append strictly increasing station samples to a robot.
enum CoppStatus copp_robot_acc_constraints_at(const struct CoppRobot *robot, size_t idx_s, struct CoppMatrixF64 *out_acc_a, struct CoppMatrixF64 *out_acc_b, struct CoppMatrixF64 *out_acc_max)
Export second-order constraint rows at one station.
enum CoppStatus copp_robot_constraint_rows(const struct CoppRobot *robot, size_t *out_amax_rows, size_t *out_acc_rows, size_t *out_jerk_rows)
Return the allocated row counts for first-, second-, and third-order constraints.
enum CoppStatus copp_robot_is_empty(const struct CoppRobot *robot, bool *out_is_empty)
Report whether the robot constraint buffer currently has no stations.
enum CoppStatus copp_robot_jerk_linear_constraints_at(const struct CoppRobot *robot, size_t idx_s, struct CoppMatrixF64 *out_jerk_a_linear, struct CoppMatrixF64 *out_jerk_b, struct CoppMatrixF64 *out_jerk_c, struct CoppMatrixF64 *out_jerk_max_linear)
Export linearized third-order constraint rows at one station.
enum CoppStatus copp_add_axial_torque_limits(struct CoppRobot *robot, size_t start_idx_s, size_t len, struct CoppSliceF64 torque_max, struct CoppSliceF64 torque_min)
Add broadcast axial torque limits over an existing robot station interval.
enum CoppStatus copp_robot_idx_s_start(const struct CoppRobot *robot, size_t *out_idx_s_start)
Return the first global station index currently stored in the robot.
enum CoppStatus copp_add_axial_velocity_limits_matrix(struct CoppRobot *robot, size_t start_idx_s, struct CoppMatrixViewF64 velocity_max, struct CoppMatrixViewF64 velocity_min)
Add station-varying axial velocity limits over an existing robot interval.
enum CoppStatus copp_robot_len(const struct CoppRobot *robot, size_t *out_len)
Return the current number of logical station samples stored in a robot.
enum CoppStatus copp_robot_set_inverse_dynamics(struct CoppRobot *robot, CoppInverseDynamicsFn inverse_dynamics, void *inverse_dynamics_user_data)
Store an inverse-dynamics callback in a robot handle.
enum CoppStatus copp_robot_pop_back_n(struct CoppRobot *robot, size_t n_cols)
Remove n_cols logical stations from the back of the robot buffer.
enum CoppStatus copp_robot_clear_inverse_dynamics(struct CoppRobot *robot)
Clear the inverse-dynamics callback stored in a robot handle.
enum CoppStatus copp_robot_create(size_t dim, size_t capacity, struct CoppRobot **out_robot)
Create a library-owned robot handle for C callers.
enum CoppStatus copp_add_axial_velocity_limits(struct CoppRobot *robot, size_t start_idx_s, size_t len, struct CoppSliceF64 velocity_max, struct CoppSliceF64 velocity_min)
Add broadcast axial velocity limits over an existing robot station interval.
enum CoppStatus copp_robot_amax_vec(const struct CoppRobot *robot, size_t idx_s_from, size_t idx_s_to, struct CoppVecF64 *out_amax)
Export first-order upper bounds over [idx_s_from, idx_s_to).
enum CoppStatus copp_add_axial_acceleration_limits_matrix(struct CoppRobot *robot, size_t start_idx_s, struct CoppMatrixViewF64 acceleration_max, struct CoppMatrixViewF64 acceleration_min)
Add station-varying axial acceleration limits over an existing robot interval.
enum CoppStatus copp_robot_pop_back_until(struct CoppRobot *robot, size_t idx_s_cut)
Remove back stations so the kept window ends before idx_s_cut.
enum CoppStatus copp_add_axial_jerk_limits(struct CoppRobot *robot, size_t start_idx_s, size_t len, struct CoppSliceF64 jerk_max, struct CoppSliceF64 jerk_min)
Add broadcast axial jerk limits over an existing robot station interval.
enum CoppStatus copp_robot_sample_path_2nd(struct CoppRobot *robot, const struct CoppPath *path, size_t idx_s_from, size_t idx_s_to)
Sample a path over an existing robot station interval and store second-order derivatives.
enum CoppStatus copp_add_raw_constraint_2nd(struct CoppRobot *robot, size_t idx_s, struct CoppMatrixViewF64 acc_a, struct CoppMatrixViewF64 acc_b, struct CoppMatrixViewF64 acc_max)
Add raw second-order inequality rows over a station interval.
enum CoppStatus copp_add_axial_jerk_limits_matrix(struct CoppRobot *robot, size_t start_idx_s, struct CoppMatrixViewF64 jerk_max, struct CoppMatrixViewF64 jerk_min)
Add station-varying axial jerk limits over an existing robot interval.
enum CoppStatus copp_robot_idx_s_end(const struct CoppRobot *robot, size_t *out_idx_s_end)
Return the exclusive global station end index currently stored in the robot.
enum CoppStatus copp_robot_sample_path_3rd(struct CoppRobot *robot, const struct CoppPath *path, size_t idx_s_from, size_t idx_s_to)
Sample a path over an existing robot station interval and store third-order derivatives.
enum CoppStatus copp_add_raw_constraint_3rd(struct CoppRobot *robot, size_t idx_s, struct CoppMatrixViewF64 jerk_a, struct CoppMatrixViewF64 jerk_b, struct CoppMatrixViewF64 jerk_c, struct CoppMatrixViewF64 jerk_d, struct CoppMatrixViewF64 jerk_max)
Add raw third-order nonlinear inequality rows over a station interval.
Path construction, metadata, evaluation, and callback path APIs.
Library-owned column-major f64 matrix returned to C.
Definition core.h:886
Borrowed immutable f64 matrix passed from C to COPP.
Definition core.h:720
Borrowed immutable f64 slice passed from C to COPP.
Definition core.h:781
Library-owned f64 vector returned to C.
Definition core.h:828